SPI时序简单理解(SPI0、SPI1、SPI2、SPI3)
基本概念:
CPOL
CPOL:Clock Polarity,时钟的极性。
时钟的极性是什么概念呢?
通信的整个过程分为空闲时刻和通信时刻;
如果SCLK在数据发送之前和之后的空闲状态是高电平,那么就是CPOL=1;
如果空闲状态SCLK是低电平,那么就是 CPOL=0。
CPHA
CPHA:Clock Phase,时钟的相位。
CPHA=1,表示一个时钟周期的第一个沿上是输出。
CPHA=0,表示一个时钟周期的第一个沿上是采样。那输出就是第二个沿。
至于这个沿是上升还是下降要视CPOL的值而定,CPOL=1 那就是下降沿,反之就是上升沿。
至于第一个bit是如何传输上来的,有两种情况:一是 SSEL 使能的边沿,二是上一帧数据的最后一个时钟沿,有时两种情况还会同时生效。具体看下面就懂了。
四种工作模式
SPI3
以CPOL=1,CPHA=1为例,把时序图画出来给大家看一下,如图1所示。
解释:
可以看出,当数据未发送时以及发送完毕后,SCK都是高电平,因此CPOL=1。
可以看出,在SCK第一个沿(下降沿)的时候,MOSI和MISO会发生变化。同时SCK第二个沿(上升沿)的时候,数据是稳定的,此刻采样数据是合适的,也就是上升沿即一个时钟周期的后沿锁存读取数据,即CPHA=1。
SPI0
当CPHA=0、CPOL=0时SPI总线工作在方式0,如下图2。简化起见把MOSI和MISO合在一起了。
SPI1和SPI2
当CPHA=0、CPOL=1时SPI总线工作在SPI1
当CPHA=1、CPOL=0时SPI总线工作在SPI2。
具体看图3。