SPI全称是串行外设接口(Serial Peripheral Interface),是由Motorola提出的一种全双工(全双工指可以同时(瞬时)进行信号的双向传输(A→B且B→A))同步串行通信接口,通信波特率可以高达5Mbps,但具体速度大小取决于SPI硬件。
SPI总线只需四条线就可以完成MCU与各种外围器件的通讯。
1)MOSI(SDI ) – Master数据输出,Slave数据输入;
2)MISO (SDO) – Master数据输入,Slave数据输出;
3)SClK – 时钟信号,由Master产生;
4)/CS – Slave使能信号,由Master控制。
SPI通信就是采用这样的主从模式(Master-Slave)架构,一般为一个Master和多个Slave的应用模式。切记,谁为主,谁提供SCLK时钟信号。
SPI通讯就需要这四根线。其中,CS是控制芯片是否被选中的,也就是说只有片选信号为预先规定的使能信号时,对此芯片的操作才有效。这就允许在同一总线上连接多个SPI设备成为可能。接下来再负责通讯的3根线就可以了。
SPI也是串行通讯协议,也就是说数据是一位一位的传输的。这就是SCLK时钟线存在的原因,由SCLK提供时钟脉冲,SDI,SDO则基于此脉冲完成数据传输。操作时序很简单,如下:
看见时序图了,就知道怎么通讯了。SPI接口在Master控制下产生的从器件使能信号和时钟信号,两个双向移位寄存器按位传输进行数据交换,传输数据高位在前,低位在后(MSB first)。在SCK的下降沿上数