用 STM32CubeMX 配置 SPI 极性时踩了个大坑,故简单记录下。
根据时钟极性 (CPOL) 及相位 (CPHA) 不同,SPI 有 4 种工作模式。
SPI 的四种工作模式
- Mode 0 (CPOL=0, CPHA=0):
- 时钟极性(CPOL)为 0,SCK 时钟在空闲状态下为低电平。
- 时钟相位(CPHA)为 0,数据在 SCK 时钟的上升沿被采样,数据在 SCK 时钟的下降沿切换。
- Mode 1 (CPOL=0, CPHA=1):
- 时钟极性(CPOL)为 0,SCK 时钟在空闲状态下为低电平。
- 时钟相位(CPHA)为 1,数据在 SCK 时钟的下降沿被采样,数据在 SCK 时钟的上升沿切换。
- Mode 2 (CPOL=1, CPHA=0):
- 时钟极性(CPOL)为1,SCK 时钟在空闲状态下为高电平。
- 时钟相位(CPHA)为0,数据在 SCK 时钟的下降沿被采样,数据在 SCK 时钟的上升沿切换。
- Mode 3 (CPOL=1, CPHA=1):
- 时钟极性(CPOL)为1,SCK 时钟在空闲状态下为高电平。
- 时钟相位(CPHA)为1,数据在 SCK 时钟的上升沿被采样,数据在 SCK 时钟的下降沿切换。
STM32CubeMX 配置
NOTES:
- CPHA = 0 —— 1 Edge
- CPHA = 1 —— 2 Edge
下图为 Mode 1 的配置。