概述
在 SPI(串行外设接口)通信中,CPOL(
时钟极性)和 CPHA(
时钟相位)是两个关键的寄存器配置位,用于定义时钟信号的行为。虽然“极性”和“相位”听起来非常抽象,但我们可以通过时序图和实际含义来形象理解它们的作用。
SPI 总线的时钟极性(CPOL)
时钟极性决定了
SPI 总线在空闲状态下(即没有数据传输时)时钟线的电平状态。
- CPOL = 0
:空闲时钟为
低电平,也就是说传输数据时从
上升沿开始。
- CPOL = 1
:空闲时钟为
高电平,意味着传输从
下降沿开始。
如下图:

SPI 总线的时钟相位(CPHA)
时钟相位决定了
数据是在第一个还是第二个跳变沿被采样。
- CPHA = 0
:在第一个跳变沿采样数据。
- CPHA = 1
:在第二个跳变沿采样数据。
如图:

至于跳变沿究竟是上升沿还是下降沿,这取决于 CPOL。记住, CPHA 只决定是哪个跳变沿采样。
SPI 的四种工作模式
根据 CPOL 和 CPHA 的不同组合,SPI 定义了四种标准工作模式,分别称为
模式 0 ~ 模式 3:
模式
|
CPOL
|
CPHA
|
描述说明
|
模式 0
|
0
|
0
|
空闲时为低电平,
第一个上升沿
采样数据
|
模式 1
|
0
|
1
|
空闲时为低电平,
第二个下降沿
采样数据
|
模式 2
|
1
|
0
|
空闲时为高电平,
第一个下降沿
采样数据
|
模式 3
|
1
|
1
|
空闲时为高电平,
第二个上升沿
采样数据
|
模式 0(CPOL=0, CPHA=0)
空闲时:时钟线为
低电平
- 第一个跳变沿:上升沿
- 数据采样:第一个上升沿
效果图:数据在第一个上升沿采样,随后在下降沿更新下一位。

模式 1(CPOL=0, CPHA=1)
- 空闲时:时钟线为低电平
- 第一个跳变沿:上升沿
- 数据采样:第二个跳变沿(下降沿)
效果图:第一个跳变沿用于准备数据,第二个跳变沿(下降沿)用于采样。

模式 2(CPOL=1, CPHA=0)
- 空闲时:时钟线为高电平
- 第一个跳变沿:下降沿
- 数据采样:第一个跳变沿(下降沿)
效果图:数据在第一个下降沿采样,在下一个上升沿准备下一位。

模式 3(CPOL=1, CPHA=1)
- 空闲时:时钟线为高电平
- 第一个跳变沿:下降沿
- 数据采样:第二个跳变沿(上升沿)
效果图:第一个跳变沿准备数据,第二个跳变沿(上升沿)采样数据。
