目录
- 一、什么是SPI协议
- 二、SPI物理层
- 三、SPI协议层
一、什么是SPI协议
SPI(Serial Peripheral Interface,串行外围设备接口)通讯协议,是 Motorola 公司提出的一种同步串行接口技术,是一种高速、全双工、同步通信总线,只需要4根信号线即可,节约引脚,利于PCB布局。广泛用于 EEPROM、Flash、RTC(实时时钟)、ADC(数模转换 器)、DSP(数字信号处理器)以及数字信号解码器。
优点:
- 支持全双工通信和半双工通信;
- 通讯方式较为简单,数据传输方式灵活,不限于8位数据,可以是任意大小的字;
- 数据传输速率较快(相对于UART、IIC);
缺点:
- 没有指定的流控制;
- 没有应答机制,在数据可靠性上有一定缺陷;
- 只支持一个主设备;
- 引脚相对较多;
二、SPI物理层
SPI通信设备之间采用主从通信模式,通讯双方有主从之分,根据从机设备的数量,SPI 通讯设备之间的连接方式可分为一主一从和一主多从。
SPI通信需要四根信号线:
sclk:由主机产生的同步时钟,用于同步数据;不同的从机设备所支持的最高时钟频率不同。
cs_n:片选信号,用于控制从机是否被主机选中进行通信,当片选信号有效时,主机对从机的操作才有效。有多少个从机就有多少条片选信号线。
mosi:主机输出/从机输入,主机输出数据给从机,数据方向由主机到从机。
miso:主机输入/从机输出,主机接收从机发送的数据,数据方向由从机到主机。
注意:传输数据时,以MSB的形式传输。
MSB:Most Significant Bit,高位在前传输。
LSB:Last(Least) Significant Bit,低位在前传输。
三、SPI协议层
SPI通信一般有4种不同的模式,不同的从设备在出厂时被厂家配置为其中几种通信模式,通信模式是不允许用户修改的。主设备和从设备必须在同一模式下进行通信,否则数据会接收错误。SPI的通信模式是由CPOL:时钟极性和CPHA:时钟相位决定;CPOL控制SCLK的时钟极性,CPHA控制数据与时钟的对齐模式。
CPOL = 0:SCLK空闲时为低电平,第一个时钟沿为上升沿。
CPOL = 1:SCLK空闲时为高电平,第一个时钟沿为下降沿。
CPHA = 0:时钟变化的第一个变化沿改变数据,第二个变化沿锁存数据。
CPHA = 1:时钟变化的第一个变化沿锁存数据,第二个变化沿改变数据。
- 模式0:CPOL = 0,CPHA = 0;SCLK空闲时为低电平,时钟前沿采样,时钟后沿输出。
- 模式1:CPOL = 0,CPHA = 1;SCLK空闲时为低电平,时钟前沿输出,时钟后沿采样。
- 模式2:CPOL = 1,CPHA = 0;SCLK空闲时为高电平,时钟前沿采样,时钟后沿输出。
- 模式3:CPOL = 1,CPHA = 1;SCLK空闲时为高电平,时钟前沿输出,时钟后沿采样。
我们经常用到的是模式0和模式3。