1.SPI总线简介
-
SPI总线接口。
SPI是 Serial Peripheral Interface 的简称,即外围串行总线接口,该接口是摩托罗拉公司设计的全双工同步通信接口。
-
SPI的信号线。
SPI分为主机和从机两个主要模块,两者之间拥有4根信号线。
MOSI:Master Output Slave In,主机向从机输出数据。
MISO:Master In Slave Out,从机向主机输出数据。
SCLK:主机产生的时钟信号,相比于I2C的时钟频率,SPI的时钟频率更高一些。
CS:从机的片选信号,由主机控制,SPI只拥有一个主机,可以同时拥有多个从机。
-
SPI的数据传输。
SPI进行传输的时候,必须由主机发送片选信号和时钟,片选信号通常是低有效的。
SPI是一个全双工的接口,这意味着主机和从机可以同时进行数据传输。
SPI从高位MSB开始传输数据,直至低位LSB数据传输完毕,则此次数据传输完成。
-
时钟的极性和相位。
在SPI中,主机可以通过选择时钟的极性和相位来控制数据移位和采样的时钟沿。
时钟极性(CPOL):控制SPI空闲期间时钟保持高位还是低位。
时钟相位(CPHA):控制SPI在第一个时钟沿采样还是第二个时钟沿采样。
不同的时钟极性和相位可以灵活配置,所以SPI一共有4种模式可供选择。
2.SPI的4种工作模式
-
CPOL=0,CPHA=0:空闲期间时钟为低,在时钟第一个跳变沿进行采样,即时钟上升沿进行采样,时钟下降沿进行移位输出操作。
-
CPOL=0,CPHA=1:空闲期间时钟为低,在时钟第二个跳变沿进行采样,即时钟下降沿进行采样,时钟上升沿进行移位输出操作。
-
CPOL=1,CPHA=0:空闲期间时钟为高,在时钟第一个跳变沿进行采样,即时钟下降沿进行采样,时钟上升沿进行移位输出操作。
-
CPOL=1,CPHA=1:空闲期间时钟为高,在时钟第二个跳变沿进行采样,即时钟上升沿进行采样,时钟下降沿进行移位输出操作。