一、SPI协议简介
SPI(serial peripheral interface)是一种同步串行通信协议,由一个主设备和一个或多个从设备组成,主设备启动与从设备的同步通信,从而完成数据的交换。SPI是一种高速全双工同步通信总线,标准的SPI仅仅使用4个引脚,主要应用在 EEPROM, Flash, 实时时钟(RTC), 数模转换器(ADC), 数字信号处理器(DSP) 以及数字信号解码器之间。有迹象表明,SPI总线首次推出是在1979年,Motorola公司将SPI总线集成在他们第一支改自68000微处理器的微控制器芯片上。由于在芯片中只占用四根管脚 (Pin) 用来控制以及数据传输, 节约了芯片的 pin 数目, 同时为 PCB 在布局上节省了空间。 正是出于这种简单易用的特性, 现在越来越多的芯片上都集成了 SPI技术。SPI通讯需要使用4条线:3条总线和1条片选:
二、SPI协议总线
SPI总线包括4条逻辑线,定义如下:
名称 | 解释 |
---|---|
MISO | Master input slave output 主机输入,从机输出(数据来自从机) |
MOSI | Master output slave input 主机输出,从机输入(数据来自主机) |
SCLK | Serial Clock 串行时钟信号,由主机产生发送给从机 |
CS | Slave Select 片选信号,由主机发送,以控制与哪个从机通信,通常是低电平有效信号 |
其他制造商可能会遵循其他命名规则,但是最终他们指的相同的含义。以下是一些常用术语:
名称 | 常用术语 |
---|---|
MISO | SIMO,DOUT,DO,SDO或SO(在主机端) |
MOSI | SOMI,DIN,DI,SDI或SI (在主机端) |
SCLK | SCK |
CS | CE,CS或SSEL |
三、SPI四种工作模式
SPI 有四种工作模式,通过串行时钟极性(CPOL)和相位(CPHA)的搭配来得到四种工作模式:
①、 CPOL=0,CPHA=0——串行时钟空闲状态为低电平。
②、 CPOL=1,CPHA=0——串行时钟空闲状态为高电平,此时可以通过配置时钟相位(CPHA)来选择具体的传输协议。
③、 CPOL=0,CPHA=1——串行时钟的第一个跳变沿(上升沿或下降沿)采集数据。
④、 CPOL=1,CPHA=1——串行时钟的第二个跳变沿(上升沿或下降沿)采集数据
四、SPI协议时序
以 CPOL=0, CPHA=0 这个工作模式为例, SPI 进行全双工通信的时序如下图所示:
从上图可以看出, SPI 的时序图很简单,不像 I2C 那样还要分为读时序和写时序,因为 SPI 是全双工的,所以读写时序可以一起完成。图中CS 片选信号先拉低,选中要通信的从设备,然后通过 MOSI 和 MISO 这两根数据线进行收发数据, MOSI 数据线发出了0XD2 这个数据给从设备,同时从设备也通过 MISO 线给主设备返回了 0X66 这个数据。这个就是 SPI 时序图。
五、SPI的优缺点
优点 | 缺点 |
---|---|
①支持全双工通信 | ①没有指定的流控 |
②通信简单 | ②没有应答机制确认是否接受到数据 |
③数据传输速率快 |
六、SPI协议特点
SPI协议特点 |
---|
①高速、同步、全双工、非差分、总线式 |
②主从机通信模式 |