SPI总线
一 SPI简介
SPI全称为Serial Peripheral Interface即串行总线接口,是一种高速的,全双工,同步的通信总线。SPI以主从方式进行工作,一主多从。SPI设备共有的线为:
- SDI (Serial Data In)串行数据输入
- SDO (Serial Data Out)串行数据输出
- SCLK (Serial Clock)时钟信号,由主设备控制
- CS (Chip Select)片选信号,由主设备控制。
二 SPI总线的特点
1.典型特征
- 全双工、高速、同步、非差分、总线、主从通信
2.优点
- 支持全双工
- 通信方式简单
- 数据传输速率高
3.缺点
- 无流控
- 非应答(可靠性较低)
流控制含义:
数据在传输过程中容易出现数据丢失的现象,例如:两台计算机通过串口传输数据时,或者台式机与单片机之间进行通信时,可能由于两端计算机的处理速度不同,出现接收端的数据缓冲区已满,而发送端依然继续发送数据,则导致数据丢失。流控制的出现就是为了解决这种数据丢失的问题。
当接收端的数据缓冲区已满,无法处理数据来时,就发出”不再接收”的信号,发送端则停止发送,直到发送端收到”可以继续发送”的信号再发送数据。计算机中常用的两种流控制分别是硬件流控制(RTS/CTS、DTR/DSR等)和软件流控制(XON/XOFF)。
三 SPI通讯模式
1.时钟极性(CPOL)
时钟极性CPOL是用来配置SCLK的空闲态或者有效态。
- CPOL=0,表示当SCLK=0时处于空闲态,当SCLK=1时处于有效态。
- CPOL=1,表示当SCLK=1时处于空闲态,当SCLK=0时处于有效态。
2.时钟相位(CPHA)
时钟相位CPHA是用来配置数据采样是在第几个边沿。
- CPHA=0,表示数据采样是在第1个边沿,数据发送在第2个边沿。
- CPHA=1,表示数据采样是在第2个边沿,数据发送在第1个边沿。
3.MSB first和LSB first
SPI为串行协议,其涉及到是先传高位MSB(Most Significant Bit)还是先传低位LSB(Least Significant Bit)。
4.模式0-3
- Mode 0 CPOL=0, CPHA=0
- Mode 1 CPOL=0, CPHA=1
- Mode 2 CPOL=1, CPHA=0
- Mode 3 CPOL=1, CPHA=1
四 备注
- 有的SPI具有CRC校验功能,即发送完数据后会发送CRC校验码,例如STM32的SPI就具有该功能,但值得注意的是该功能需要开启后才可以使用,否者即使设置SPI_InitStructure.SPI_CRCPolynomial也无用。