SPI 接口的全称是“Serial Peripheral Interface”意为串行外围接口,是 Motorola 首先在其 MC68HCxx 系列处理器上定义的。SPI 接口主要应用于 EEPROM、FLASH、实时时钟、AD转换器,还有数字信号处理器和数字信号解码器之间。
SPI 接口是在 CPU 和外围低速器件之间进行同步串行数据传输,在主器件的位移脉冲下,数据按位传输,高位在前、低位在后,为全双工通信,数据传输速度总体来说比 I2C 总线要快。
SPI 接口经常被称为 4 线串行总线,以主/从方式工作,数据传输过程由主机初始化,使用的 4 条信号线分别是:
1. SCLK:串行时钟,用来同步数据传输,由主机输出。
2. MOSI:主机输出从机输入数据线
3. MISO:主机输入从机输出数据线
4. CS:片选线、低电平有效,由主机输出。
在 SPI 总线上,某一时刻可以出现多个从机,但只能有一个主机,主机通过片选线来确定要通信的主机,这就要求从机的 MISO 口具有三态状态,使得该线在器件未被选通时表现为高阻抗。
在点对点的通信中,SPI 接口不需要进行寻址操作,且为全双工通信,显得简单高效,在多个从器件的系统中,每个从器件需要独立的使能信号,硬件上比 I2C 系统要稍微复杂一些。
优点:
1. 支持全双工操作
2. 操作简单
3. 数据传输速率较高
缺点:
1. 只支持单个主机(SPI 是单主设备通信协议,这意味着总线中只有一只中心设备能发起通信)
2. 需占用主机较多的口线(每个从机都需要一根片选线)