SPI协议知识点总结
简介
SPI,是英语Serial Peripheral interface的缩写,顾名思义就是串行外围设备接口。SPI标准是4线制的总线规范。4条线分别是SDO/MOSI,SDI/MISO,SCK,CS/SS。
下图给出了SPI架构的概述。SPI的主要部分是状态寄存器、控制寄存器和数据寄存器、移位逻辑、波特率发生器、主从控制逻辑和端口控制逻辑。
SPI专业术语
(1)SDO/MOSI – 主设备数据输出,从设备数据输入;
(2)SDI/MISO – 主设备数据输入,从设备数据输出;
(3)SCK – 时钟信号,由主设备产生;
(4)CS/SS – 从设备使能信号,由主设备控制。当有多个从设备的时候,因为每个从设备上都有一个片选引脚接入到主设备机中,当我们的主设备和某个从设备通信时将需要将从设备对应的片选引脚电平拉低或者是拉高。
通信方式
SPI是一种高速,全双工,同步的通信总线,该总线由四条线将所有的设备链接到一个串行网络中。链接方式如下图所示。SPI是一种主从机制,时钟由主设备产生。
几种通信方式:
单工通信就是指只允许一方向另外一方传送信息,而另一方不能回传信息。比如电视遥控器、收音机广播等,都是单工通信技术。
半双工通信是指数据可以在双方之间相互传播,但是同一时刻只能其中一方发给另外一方,比如我们的对讲机就是典型的半双工。
全双工通信就发送数据的同时也能够接收数据,两者同步进行,就如同我们的电话一样,我们说话的同时也可以听到对方的声音。
通信模式
时钟相位和极性控制
主SPI设备和通信从设备的时钟相位和极性应该相同。在某些情况下,在传输之间改变相位和极性,以允许主设备与具有不同要求的外围从设备通信。
SPI 通过极性 (CPOL),相位 (CPHA) 组合产生4种不同的通信模式。
CPOL控制SPI总线在无数据传输下的电平状态。
CPOL=0时,总线在空闲状态是低电平。
CPOL=1时,总线在空闲状态是高电平。
CPHA控制SPI数据接收发送是在那个时钟跳变。
CPHA=0时,数据在第一个时钟跳变时传输。
CPHA=1时,数据在第二个时钟跳变时传输。
下图时CPHA=0时的数据传输时序
从上图可以看到,在CPHA=0时数据在第一个跳变传输。开始时,CPOL=0,总线为低电平,从低电平跳变到高电平时开始数据传输。CPOL=1,总线为高电平,从高电平跳变到低电平时开始数据传输。
下图时CPHA=1时的数据传输时序
从上图可以看到,在CPHA=1时数据在第二个跳变传输。开始时,CPOL=0,总线为低电平,从低电平跳变到高电平,再由高电平跳变到低电平时开始数据传输。CPOL=1,总线为高电平,从高电平跳变到低电平再由低电平跳变到高电平时开始数据传输。
到高电平,再由高电平跳变到低电平时开始数据传输。CPOL=1,总线为高电平,从高电平跳变到低电平再由低电平跳变到高电平时开始数据传输。