SPI(Serial Peripheral Interface,串行外设接口)是一种全双工、同步的通信接口。它采用主从式结构,在单片机、嵌入式系统以及数字集成电路中得到广泛应用。
1.SPI接口定义
SPI接口是一个非常简单但十分灵活的串行通信协议,它由四条线构成:SCLK、MOSI、MISO和SS(片选)。其中,SCLK是时钟信号,由Master设备提供;MOSI是Master输出Slave输入的数据线;MISO是Slave输出Master输入的数据线;SS是Slave的片选信号,用于选择与Master通信的Slave设备。
2.SPI接口工作原理
SPI接口采用一条时钟线和两条数据线(MOSI和MISO)实现全双工通讯。在SPI通信开始之前,Master需要确定要与哪个Slave设备通信,并向对应的Slave设备发送片选信号(SS)。然后,Master会通过时钟线(SCLK)同步Slave设备的收发动作,在每一拍钟(SCLK上沿) Master均发送一个比特位的数据到MOSI上,而Slave在此同步下把自己的数据也放到MISO上,并在此过程中向Master传输相应的数据。独立的Master输出必须与对应的Slave输入连接,也就是在通信中一个数据向右移进Master设备的SISO时,就会同时从Slave设备的MOSI位移出相应数据位。
3.SPI接口和串口的区别
SPI与串口协议有很大不同,串口是一种异步通信方式,采用两条线(TXD和RXD)进行数据传输,其中TXD是发送数据的线,RXD是接收数据的线。而SPI接口可以选择性地通过SS片选引脚选择想要与主设备进行通讯的从设备,每个从设备都只需独立的MISO、MOSI、SCLK三根线分别连到主设备即可。此外,每个完整的数据包通常由主设备发起始数据后紧跟着若干数据位组成,然后再产生一个片选信号结束数据传输。