本文主要是介绍STM32---SPI 的CPOL、CPHA,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
设备与设备之间通过某种硬件接口通讯,目前存在很多种接口,SPI接口是其中的一种。
SPI中分Master主设备和Slave从设备,数据发送都是由Master控制。
一个master可以接一个或多个slave。常见用法是一个Master接一个slave.
通信只需要4根线:SCLK, MISO, MOSI, SS
SCLK:(Serial Clock)(串行)时钟
MISO:(Master In Slave Out)主设备输入,从设备输出
MOSI:(Master Out Slave In)主设备输出,从设备输入
SS:(Slave Select)选中从设备,片选
SPI由于接口相对简单(只需要4根线),用途算是比较广泛,主要应用在 EEPROM,FLASH,实时时钟,AD转换器,还有数字信号处理器和数字信号解码器之间。
【SPI的相位和极性】
CPOL和CPHA,分别都可以是0或时1,对应的四种组合就是:
Mode 0 | CPOL=0, CPHA=0 |
Mode 1 | CPOL=0, CPHA=1 |
Mode 2 | CPOL=1, CPHA=0 |
Mode 3 | CPOL=1, CPHA=1 |
单独看这张图,的确很难明白具体含义,所以下面会有更详细的解释。
【 CPOL极性】
Clock Polarity = IDLE state of SCK。
再用中文详解:
SPI的CPOL,表示当SCLK空闲idle的时候,其电平的值是低电平0还是高电平1:
CPOL=0,时钟空闲idle时候的电平是低电平,所以当SCLK有效的时候,就是高电平,就是所谓的active-high;
CPOL=1,时钟空闲idle时候的电平是高电平,所以当SCLK有效的时候,就是低电平,就是所谓的active-low;
【 CPHA相位】
首先说明一点,capture strobe = latch = read = sample,都是表示数据采样,数据有效的时刻。
相位,对应着数据采样是在第几个边沿(edge),是第一个边沿还是第二个边沿,0对应着第一个边沿,1对应着第二个边沿。
对于:
CPHA=0,表示第一个边沿:
对于CPOL=0,idle时候的是低电平,第一个边沿就是从低变到高,所以是上升沿;
对于CPOL=1,idle时候的是高电平,第一个边沿就是从高变到低,所以是下降沿;
CPHA=1,表示第二个边沿:
对于CPOL=0,idle时候的是低电平,第二个边沿就是从高变到低,所以是下降沿;
对于CPOL=1,idle时候的是高电平,第一个边沿就是从低变到高,所以是上升沿;
用图文形式表示,更加容易看懂:
这篇关于STM32---SPI 的CPOL、CPHA的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!