首页 理论教育 STM32固件库编程:SPI工作模式

STM32固件库编程:SPI工作模式

时间:2023-10-21 理论教育 版权反馈
【摘要】:SPI有四种工作模式。SPI通信的过程分为空闲时刻和通信时刻,如果SCLK在数据发送之前和之后的空闲状态是高电平,那么CPOL=1;相反,如果空闲状态下的SCLK是低电平,那么CPOL=0。SPI在通信过程中,在时钟SCLK的驱动下移动数据。表9-1SPI的四种工作模式例如,CPOL=1,CPHA=1,它的时序图如图9-4所示。图9-4模式3下SPI数据传递时序图图9-5罗列出其他三种模式的时序图,读者通过与表9-1进行对比可以看出区别。

STM32固件库编程:SPI工作模式

在主设备的时钟驱动下,数据位如何定向移动?SPI有四种工作模式。下面首先介绍两个概念:CPOL(Clock Polarity时钟极性)与CPHA(Clock Phase时钟相位)。

SPI通信的过程分为空闲时刻和通信时刻,如果SCLK在数据发送之前和之后的空闲状态是高电平,那么CPOL=1;相反,如果空闲状态下的SCLK是低电平,那么CPOL=0。

SPI在通信过程中,在时钟SCLK的驱动下移动数据。移位寄存器都是在时钟边沿进行采样,采样分上升沿采样和下降沿采样两种方式。为了区分,规定:当CPHA=0时,MOSI或MISO数据线上的信号将会在SCLK时钟线的“奇数边沿”采样;当CPHA=1时,数据线在SCLK的“偶数边沿”采样。这时读者会产生疑问,为什么不直接规定上升沿还是下降沿采样呢?这是因为一个时钟周期必定包含了一个上升沿和一个下降沿,但这两个沿的先后并无规定,而且因为数据从产生到稳定需要一定时间。如果主机在上升沿输出数据到MOSI上,从机就只能在下降沿去采样这个数据了;反之,如果一方在下降沿输出数据,那么另一方就必须在上升沿采样这个数据。CPHA=1表示数据的输出是在一个时钟周期的第一个沿(奇数)上。至于这个沿是上升沿还是下降沿,这要视CPOL的值而定;若CPOL=1,则为下降沿;反之就是上升沿。那么数据的采样自然就是在第二个沿(偶数)上了。这里使用了奇偶的方法进行区别。

由于CPOL与CPHA的不同,SPI产生了四种工作模式,如表9-1所示。

表9-1 SPI的四种工作模式

例如,CPOL=1,CPHA=1,它的时序图如图9-4所示。SS信号为高电平代表空闲,此时SCLK为高电平;当SS信号为低电平时,代表通信中(非空闲),此时数据在偶数边沿采样(如图9-4中第二个边沿)。(www.xing528.com)

图9-4 模式3下SPI数据传递时序图

图9-5罗列出其他三种模式的时序图,读者通过与表9-1进行对比可以看出区别。这说明,在通信过程中,主从设备需按照统一的模式进行工作,才能有效地完成数据的交换。

图9-5 其他模式下SPI数据传递时序图

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈