SPI是串行外设接口(Serial Peripheral Interface)的缩写,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布局上节省空间,提供方便,正是出于这种简单易用的特性,越来越多的芯片集成了这种通信协议。
主要应用在 EEPROM,FLASH,实时时钟,AD转换器,还有数字信号处理器和数字信号解码器之间。
采用主-从模式(Master-Slave) 的控制方式。
SPI分为主、从两种模式,一个SPI通讯系统需要包含一个(且只能是一个)主设备,一个或多个从设备。
主设备(Master)提供时钟,从设备(Slave)接收时钟,SPI接口的读写操作,都是由主设备发起。当存在多个从设备时,通过各自的片选信号进行管理。
| 信号线 | 功能 |
|---|---|
| MISO | 主设备数据输入,从设备数据输出。 |
| MOSI | 主设备数据输出,从设备数据输入。 |
| SCLK | 时钟信号,由主设备产生。 |
| CS | 从设备使能信号,由主设备输出控制。 |


采用同步方式(Synchronous)传输数据。
主设备会根据将要交换的数据来产生相应的时钟脉冲(Clock Pulse), 时钟脉冲组成了时钟信号(Clock Signal) , 时钟信号通过时钟极性 (CPOL) 和 时钟相位 (CPHA) 控制着两个 SPI 设备间何时数据交换以及何时对接收到的数据进行采样, 来保证数据在两个设备之间是同步传输的。
时钟极性控制在没有数据传输时,时钟空闲状态时的高低电平。
时钟相位控制在第几个时钟边沿进行数据位采样。
具体SPI模式如下表:


