SPI中的CPOL和CPHA

SPI中的CPOL和CPHA,是学习SPI必须掌握的知识,因为它涉及到“数据位采集”。重点掌握空闲时SCK的电平是怎么定义的。采集时,是怎么规定发生在哪个时钟边沿。CPOL用来决定SPI总线在空闲时,SPI_SCK引脚输出的电平;CPHA用来决定“数据位采集点”发生在第几边沿。

什么叫“SPI总线空闲”?
对于SPI主机来说,就是没有数据传输,即:不发送数据,也不接收数据,这种总线的状态叫空闲状态
SPI外设初始化完成后,SPI总线处于空闲状态,既不发送数据也不接收数据。
SPI_SCK引脚的输出电平是由CPOL位来决定。
CPOL=0,表示SPI总线在空闲时,SPI_SCK引脚输出低电平;
CPOL=1,表示SPI总线在空闲时,SPI_SCK引脚输出高电平;

什么是SPI时钟的第1边沿?
SPI总线从空闲状态进入传输数据时,出现的“第1个边沿”
“第1个边沿”是上升沿,还是下降沿,要看CPOL的值。
CPOL=0,SPI_SCK引脚在SPI总线空闲时输出的是低电平,那么“SPI时钟的第1边沿”就是上升沿。
CPOL=1,SPI_SCK引脚在SPI总线空闲时输出的是高电平,那么“SPI时钟的第1边沿”就是下降沿。

什么是SPI时钟的第2边沿?
SPI总线从空闲状态进入传输数据时,出现的“第2个边沿”
“第2个边沿”是上升沿,还是下降沿,要看CPOL的值。
CPOL=0,SPI_SCK引脚在SPI总线空闲时输出的是低电平,那么“SPI时钟的第2边沿”就是下降沿。
CPOL=1,SPI_SCK引脚在SPI总线空闲时输出的是高电平,那么“SPI时钟的第2边沿”就是上升沿。

为了保证SPI硬件协议得以实现,约定使用“CPHA位的值”来决定采集点
CPHA=0表示在“SPI时钟的第1边沿”处采集数据;
CPHA=1表示在“SPI时钟的第2边沿”处采集数据;

小结:

下面这张图,做过SPI通讯的,一般都见过,但是真正看懂的人不多。我和大家一样,人云亦云,看久了,就会明白了。

上面的图,是把两种情况合在一起,看起来很费劲。若拆开了,就好懂了。见下图:

 图中有文字,一看就知道了,不用再去看定义了。从上图可以看出,SPI总是先移出数据的最高位,这里是对SPIx_CR1寄存器bit7(LSBFIRST)进行配置,LSBFIRST=0,表示先传送最高位。但是若令LSBFIRST=1,表示先传送最低位。

在有些公司面试时,有时会遇到SPI波形图,让我们根据波形图去读数据,这时,如果不懂“SPI中的CPOL和CPHA”的意义,就很麻烦。即使你会编程,也会被淘汰。

以上是我个人的理解,若有错误之处,请给我留言。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值