1. 概述
SPI(Serial Peripheral Interface),串行外设接口。
(1)工作特点:
1)同步串行;
2)支持全双工;
3)主/从模式(支持一主多从);
4)没有应答机制,可靠性存在一定的缺陷;
5)传输速率没有定义限制。
(2)应用场景:
SPI适用于近距离、低速器件间的通信;主要应用于数据流设备,譬如EEPROM、Flash、数字信号处理器(DSP) 等。
(3)标准硬件接口:
1)SCLK:时钟信号线,时钟信号由主设备产生;
2)SDO/MOSI :数据信号线, 主设备数据输出口 / 从设备数据输入口;
3)SDI/MOSO :数据信号线, 主设备数据输入口 / 从设备数据输出口;
4)CS:片选信号。
(4)Normal SPI、Dual SPI 、 Qual SPI
1)Normal SPI,即标准的SPI协议,其硬件接口如(3)。
2)Dual SPI ,将SDI变成SDO,即可实现在一个时钟周期内传输2个Bit的数据。其硬件接口为:SCLK、SDO0、SDO1、CS;
3)Qual SPI ,在Dual SPI的基础上增加两根SDO信号线,即可实现在一个时钟周期内传输4个Bit的数据。其硬件接口为:SCLK、SDO0、SDO1、SDO2、SDO3、CS。
PS:Dual SPI、Qual SPI 主要应用于Flash的读写。在这两种模式下,SPI工作在半双工模式下,以提高数据传输效率。
2. 工作机制
SPI由以下模块组成:
(1)SSPSR
移位寄存器(Shift Register),根据通信时序从SSPBUF中移出或移入数据
(2)SSPBUF
数据缓冲区。通过读写SPI的发送和接收寄存器,可以间接控制SSPBUF,从而实现发送/接收数据。
(3)Controller
主设备的Controller通过时钟信号(CLK)和片选信号(CS)控制从设备。
3. 通信时序
SPI的通信时序有4种模式,主设备和从设备必须工作在同一模式下。
通信时序的4种模式通过CPOL(时钟极性)、CPHA相位极性进行配置。
CPOL=0 | SCLK的空闲态为低电平,有效态为高电平 |
CPOL=1 | SCLK的空闲态为高电平,有效态为低电平 |
CPHA=0 | 数据采样是在第1个边沿,数据发送在第2个边沿 |
CPHA=1 | 数据采样是在第2个边沿,数据发送在第1个边沿 |
通信时序的4种模式如下:
(1)CPOL=0,CPHA=0:上升沿采样数据,下降沿发送数据
(2)CPOL=0,CPHA=1:上升沿发送数据,下降沿采样数据
(3)CPOL=1,CPHA=0:下升沿采样数据,上降沿发送数据
(4)CPOL=1,CPHA=1:下升沿发送数据,上降沿采样数据
4. 调试技巧
(1)SPI协议的数据传输在低速率下较稳定,在低速率模式下调试成功后,再提高其通信速率;
(2)不同的设备的SPI协议的时序特性存在差别,如通信速率、高电平保持时间等;调试时需根据从设备的特性调整SPI时序。