SPI协议是一个 4 线、全双工的串口协议。根据串口时钟SCLK的相位SCPH和极性SCPOL的不同,有 4 种组合。
CPOL CPHA
MODE0 0 0
MODE1 0 1
MODE2 1 0
MODE3 1 1
CPOL: SPI空闲时的时钟信号电平(1:高电平, 0:低电平)
CPHA: SPI在时钟第几个边沿采样(1:第二个边沿开始, 0:第一个边沿开始)
MODE0和MODE3最常用。
MODE0 0 0
MODE1 0 1
MODE2 1 0
MODE3 1 1
CPOL: SPI空闲时的时钟信号电平(1:高电平, 0:低电平)
CPHA: SPI在时钟第几个边沿采样(1:第二个边沿开始, 0:第一个边沿开始)
MODE0和MODE3最常用。
1、在主设备处于不使能或者空闲的状态下,主设备输出的从设备选择信号CS保持高电平。
2、时钟极性SCPOL参数决定串口时钟SCLK 在无效的状态下是高电平还是低电平:
(1)SCPOL=0,串口时钟(sclk)在无效的状态下保持低电平。
(2)SCPOL=1,串口时钟( sclk)在无效的状态下保持高电平。
(1)SCPOL=0,串口时钟(sclk)在无效的状态下保持低电平。
(2)SCPOL=1,串口时钟( sclk)在无效的状态下保持高电平。
3、时钟相位SCPH参数决定在第几个时钟变化边沿开始采样数据:
(1) SCPH=0时在第一个时钟变化沿开始发送数据。
(2) SCPH=1时在第二个时钟变化沿采样输入数据。
(1) SCPH=0时在第一个时钟变化沿开始发送数据。
(2) SCPH=1时在第二个时钟变化沿采样输入数据。
4、SPI 协议时序图
图中 CS、 SCLK 对于主设备 SPI 为输出; spi_tx 为输出, spi_rx 为输入。
图 1 是 SCPOL=0,SCPH=0 的 SPI 协议时序图。
图 1 是 SCPOL=0,SCPH=0 的 SPI 协议时序图。
![](https://i-blog.csdnimg.cn/blog_migrate/47191582c241fcf9954bd153f88c0e38.png)
图 2 是 SCPOL=0,SCPH=1 的 SPI 协议时序图。
![](https://i-blog.csdnimg.cn/blog_migrate/2888c51f561a300871ccc39f71e65a5e.png)
图 3 是 SCPOL=1,SCPH=0 的 SPI 协议时序图。
![](https://i-blog.csdnimg.cn/blog_migrate/bfb103b11ebf64483071f8165bb3a1cb.png)
图 4 是 SCPOL=1,SCPH=1 的 SPI 协议时序图。
![](https://i-blog.csdnimg.cn/blog_migrate/9bdf946ed72b789a197af2b4f25e5347.png)
文章转载自:https://blog.csdn.net/qwaszx523/article/details/70224879