应用
SPI接口的全称是"SerialPeripheralInterface",意为串行外围接口,是Motorola首先在其MC68HCXX系列处理器上定义的。SPI接口主要应用在EEPROM、FLASH、实时时钟、AD转换器,还有数字信号处理器和数字信号解码器之间。
SPI接口是在CPU和外围低速器件之间进行同步串行数据传输,在主器件的移位脉冲下,数据按位传输,高位在前,低位在后,为全双工通信,数据传输速度总体来说比I2C总线要快,速度可达到几Mbps。
特点
SPI一共有11位有用信号,每位信号差分成两个信号用来提高传输抗干扰性,在物理连接上用标准25芯D型插头座(DB25)传输,因此连线多且复杂,传输距离短,容易出现故障。而ASI(异步串行接口)用串行传输,只需要一根同轴电缆线,连线简单,传输距离长。
接口信号
(1)MOSI–主器件数据输出,从器件数据输入
(2)MISO–主器件数据输入,从器件数据输出
(3)SCLK–时钟信号,由主器件产生,最大为fPCLK/2,从模式频率最大为fCPU/2
(4)NSS–从器件使能信号,由主器件控制,有的IC会标注为CS(Chipselect)
在点对点的通信中,SPI接口不需要进行寻址操作,且为全双工通信,显得简单高效。在多个从器件的系统中,每个从器件需要独立的使能信号,硬件上比I2C系统要稍微复杂一些。
SPI接口在内部硬件实际上是两个简单的移位寄存器,传输的数据为8位,在主器件产生的从器件使能信号和移位脉冲下,按位传输,高位在前,低位在后。如下图所示,在SCLK的上升沿上数据改变,同时一位数据被存入移位寄存器。
原理图
最后,SPI接口的一个缺点:没有指定的流控制,没有应答机制确认是否接收到数据。
工作模式
SPI有四种工作模式,各个工作模式的不同在与SCLK不同,具体工作由CPOL,CPHA决定
CPOL:(ClockPolarity),时钟极性
当CPOL为0时,时钟空闲idle时候的电平是低电平;
当CPOL为1时,时钟空闲idle时候的电平是高电平;
CPHA:(ClockPhase),时钟相位
当CPHA为0时,时钟周期的前一边缘采集数据;
当CPHA为1时,时钟周期的后一边缘采集数据;
CPOL和CPHA,分别都可以是0或时1,对应的四种组合就是:
四种工作模式下的SCLK表现如下: