嵌入式单片机 / 工程师面试高频题
SPI外设能读到设备ID,却无法稳定读取寄存器;或者换一颗芯片后,MISO数据整体错一位。面试官问CPOL和CPHA时,真正想确认你是否能根据时钟空闲电平和数据采样边沿配置SPI,而不是只记住一个Mode编号。
面试先说结论
CPOL决定SCK在空闲状态时的电平,CPHA决定数据在一个时钟周期的第一个边沿还是第二个边沿采样。两者组合形成Mode 0到Mode 3四种模式。主机和从机必须使用一致的模式,且要同时核对位序、片选有效电平、最大时钟频率和数据建立保持时间。
一、核心原理与工程判断
CPOL控制时钟空闲电平
CPOL=0时,SCK空闲为低电平;CPOL=1时,SCK空闲为高电平。时钟开始翻转后,第一次发生的边沿称为leading edge,第二次边沿称为trailing edge。注意leading edge不等于固定的上升沿,它取决于CPOL。
CPHA控制在哪个边沿采样
CPHA=0表示在第一个时钟边沿采样数据,数据通常在第二个边沿附近更新;CPHA=1表示在第二个边沿采样,数据通常在第一个边沿附近更新。发送端在一个边沿改变数据,接收端在另一个边沿采样,目的是留出数据稳定时间。
Mode 0到Mode 3怎么快速区分
Mode 0:CPOL=0、CPHA=0,SCK空闲低,第一个上升沿采样。Mode 1:CPOL=0、CPHA=1,SCK空闲低,第二个下降沿采样。Mode 2:CPOL=1、CPHA=0,SCK空闲高,第一个下降沿采样。Mode 3:CPOL=1、CPHA=1,SCK空闲高,第二个上升沿采样。具体驱动库的宏定义要以芯片手册为准。
SPI模式不匹配时会出现什么现象
主从模式不一致时,可能出现首位数据错位、读写值不稳定、逻辑分析仪解码结果异常或某些频率下偶发失败。除此之外,还要检查MSB/LSB先行、CS片选时序、SCK最高频率、MISO三态释放时间和数据手册中的建立保持时间。
二、实际排查与设计步骤
先从从设备数据手册确认SPI Mode、最大SCK频率、位序、CS有效电平和读写命令格式。
在主控配置中核对CPOL、CPHA,确保与从设备要求一致;不要只凭Mode数字推断实际采样边沿。
用逻辑分析仪同时观察CS、SCK、MOSI和MISO,检查空闲电平、首个采样沿、数据更新沿和片选前后时序。
如果低速正常、高速失败,进一步降低SCK并检查上升沿质量、走线负载、串联阻尼和从设备时序裕量。
三、面试中的常见失分点
误区1:认为CPOL=0就表示数据一定在上升沿采样,忽略CPHA和leading/trailing edge的定义。
误区2:只修改SPI Mode,没有同步检查CS时序、位序、SCK频率和从设备的tSU/tH要求。
四、面试官可能继续追问
面试追问:逻辑分析仪显示MOSI和MISO数据都正确,但MCU读回的数据总是错一位,你会优先检查什么?
先核对CPHA和首个时钟边沿,确认从设备何时输出第一位、主机何时采样;再检查CS拉低到首个SCK边沿的间隔、字长配置和数据寄存器读写顺序。逻辑分析仪解码设置本身也要与实际SPI模式一致。
相关业务与课程
围绕电子工程师岗位能力,了解对应方向的系统课程。

扫码关注































