SPI是串行外设接口的编写,SPI是一种高速的、全双工、同步的串行通信总线;SPI采用主从方式工作,一般有一个主设备和一个或多个从设备;SPI需要至少4根线,分别是MISO(主设备输入、从设备输出)、MOSI(主设备输出、从设备输入)、SCLK(时钟)、CS(片选)。SPI使用引脚较少且布线方便,所以越来越多的芯片集成了这种通信协议。示意图:
寻址方式:
当主设备要和某个从设备进行通信时,主设备需要先向对应从设备的片选线上发送使能信号(高电平或者低电平,根据从机而定)表示选中该从设备。示意图:
通信过程:
SPI总线在进行数据传送时,先传送高位后传送低位;数据线为高电平表示逻辑1,低电平表示逻辑0;一个字节传送完成后无需应答即可开始下一个字节的传送;SPI总线采用同步方式工作。时钟线在上升沿或下降沿时发送器向数据线上发送数据,在紧接着的下降沿或上升沿时接收器从数据线上读数据完成一位数据传送,八个时钟周期即可完成一个字节数据的传送。示意图:
极性与相位:
SPI总线有四种不同的工作模式,却决于极性(CPOL)和相位(CPHL)这两个因素CPOL表示SCLK空闲时的状态:
极性:CPOL=0,空闲时SCLK为低电平;CPOL=1,空闲时SCLK为高电平
相位:CPHA=0每个周期的第一个时钟沿采样(接收数据);
CPHA=1每个周期的第二个时钟沿采样(接收数据)。
示意图: