常用通讯-SPI

SPI简介

SPI是Serial Peripheral Interface(串行外设接口)的缩写,SPI接口主要应用在 EEPROM,FLASH,实时时钟,AD转换器,还有数字信号处理器和数字信号解码器之间。SPI是一种高速的、全双工的、同步通讯总线。

SPI优点

  • 全双工
  • 通讯速度快
  • 通信简单

SPI缺点

  • 没有指定的流控制
  • 传输过程中没有应答机制,传输可靠性不如IIC

SPI信号线

SPI通常采用四根信号线进行传输(单向通信时可以三根信号线);

  • SCLK:时钟线,时钟信号必须由主设备产生;
  • CS:从设备使能控制线,由主设备控制。当有多个从设备与主设备连接时,每个从设备都会一个片选引脚接入到主设备中,当主设备需要与某个从设备通信时,主设备需要将该从设备的片选引脚电平拉高或者拉低。
  • MOSI/SDO:数据线。主设备数据输出,从设备数据输入。
  • MISO/SDI:数据线。主设备数据输入,从设备数据输出。

SPI接线图

常用通讯-SPI

SPI工作模式

SPI有四种工作模式,可以通过CPOL(时钟极性)和CPHA(时钟相位)来控制主设备的工作模式。

  1. Mode0:CPOL = 0;CPHA = 0;
  2. Mode1:CPOL = 0;CPHA = 1;
  3. Mode2:CPOL = 1;CPHA = 0;
  4. Mode3:CPOL = 1;CPHA = 1;

时钟极性CPOL是用来配置SCLK的电平处于哪种状态时是空闲态或者有效态。

  • CPOL = 0:表示SCLK = 0时处于空闲状态;当SCLK = 1时处于有效状态。
  • CPOL = 1:表示SCLK = 1时处于空闲状态;当SCLK = 0时处于有效状态。

时钟相位CPHA是用来配置数据采样是在第几个边沿。

  • CPHA = 0:表示数据采样是在第1个边沿,数据发送在第2个边沿。
  • CPHA = 1:表示数据采样是在第2个边沿,数据发送在第1个边沿。

例如:

  • CPOL=0,CPHA=0:此时空闲态时,SCLK处于低电平,数据采样是在第1个边沿,也就是SCLK由低电平到高电平的跳变,所以数据采样是在上升沿,数据发送是在下降沿。
  • CPOL=0,CPHA=1:此时空闲态时,SCLK处于低电平,数据发送是在第1个边沿,也就是SCLK由低电平到高电平的跳变,所以数据采样是在下降沿,数据发送是在上升沿。
  • CPOL=1,CPHA=0:此时空闲态时,SCLK处于高电平,数据采集是在第1个边沿,也就是SCLK由高电平到低电平的跳变,所以数据采集是在下降沿,数据发送是在上升沿。
  • CPOL=1,CPHA=1:此时空闲态时,SCLK处于高电平,数据发送是在第1个边沿,也就是SCLK由高电平到低电平的跳变,所以数据采集是在上升沿,数据发送是在下降沿。

常用通讯-SPI

常用通讯-SPI