SPI通讯协议

  1. 1. SPI通讯协议
    1. 1.1. 简介
    2. 1.2. 寻址
    3. 1.3. 通信过程
    4. 1.4. 极性和相位

SPI通讯协议

简介

SPI(Serial Peripheral Interface)是串行外设接口的缩写,SPI是一种高速的,全双工,同步的串行通信总线;SPI采用主从方式工作,一般有一个主设备和一个或多个从设备;SPI需要至少4根线,分别是MISO(主机输入从机输出),MOSI(主机输出从机输入),SCLK(时钟),CS(片选)。SPI使用引脚较少且布线方便,因此越来越多芯片集成了这种通信协议。

SPI结构图

寻址

当主机要和某个从设备进行通信时,主设备需要先向对应从设备的片选线上发送使能信号(高电平或者低电平,根据从机说明决定),表示选中该从设备。

多个从机示意图

通信过程

SPI总线在进行数据传送时,先传送高位,后传送低位;数据线为高电平表示逻辑“1”,低电平表示逻辑“0”;一个字节传送完成后无需应答即可开始下一个字节的传送;SPI总线采用同步方式工作,时钟线在上升沿/下降沿时发送器向数据线上发送数据,在紧接着的下降沿/上升沿时接收器从数据线上读取数据,完成一位数据传递,八个时钟周期即可完成一个字节数据的传送。

极性和相位

对于IIC来说,SCL和SDA在空闲时候的状态都是确定的,发送数据与接收数据时SCL的状态也是确定的(SCL低电平时发送器发数据,SCL高电平时接收器截数据)。但是在SPI中,极性(CPOL,空闲时状态)和相位(CPHA,采样时机)都是可选的,因此SPI有四种不同的工作模式。

  • 极性

    • CPOL = 0,空闲时SCLK为低电平;
    • CPOL = 1,空闲时SCLK为高电平;
  • 相位

    • CPHA = 0,每个周期的第一个时钟沿采样(第一个沿读取数据,第二个沿发数据);
    • CPHA = 1,每个周期的第二个时钟沿采样(第一个沿发数据,第二个沿读取数据);

详细见下表:

CPOL CPHA 时钟线空闲状态 采样时机 数据变化边沿
0 0 低电平 第一个沿(上升沿) 第二个沿(下降沿)
0 1 低电平 第二个沿(下降沿) 第一个沿(上升沿)
1 0 高电平 第一个沿(下降沿) 第二个沿(上升沿)
1 1 高电平 第二个沿(上升沿) 第一个沿(下降沿)

在通讯时,主设备和从设备(需要根据设备手册查询,一般是确定好的)必须配置相同(CPOL,CPHA),否则无法正确通信。