硬件设计基础----通信协议SPI

Posted 鲁棒最小二乘支持向量机

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了硬件设计基础----通信协议SPI相关的知识,希望对你有一定的参考价值。

1 SPI通信协议

1.1 协议介绍

SPI(Serial Peripheral Interface)串行外围设备接口,是一种高速的,全双工,一主多从,同步通信总线,通信速率一般为10Mbps,主要应用在EEPROM、FLASH、AD等

SPI分为主、从两种模式,SPI通信系统包含一个主设备(Master),一个或多个从设备(Slave),其中,提供时钟信号的为主设备,接收时钟的设备为从设备,读写操作由主设备发起

1.2 设备连接

SPI硬件接口:

  • SCLK: 串行时钟信号线
  • MISO: 主设备输入/从设备输出信号线
  • MOSI: 主设备输出/从设备输入信号线
  • CS: 从设备片选信号线

SPI一主机一从机硬件连接,如图所示:

SPI一主机多从机硬件连接,如图所示:

1.3 通信模式

SPI通信有四种不同的模式,通信双方设备必须在同一模式下完成通信,从设备的通信模式固定不变,所以,需要对主设备进行配置,匹配通信模式

SPI_CR寄存器的CPOL(时钟极性)和CPHA(时钟相位)控制主设备通信模式,CPOL配置SCLK电平的有效,CPHA配置数据采样发生在第几个边沿:

模式CPOLCPHA
Mode000
Mode101
Mode210
Mode311
  • CPOL=0表示SCLK=0时处于空闲状态,即SCLK高电平有效
  • CPOL=1表示SCLK=1时处于空闲状态,即SCLK低电平有效
  • CPHA=0表示数据采样在第1个边沿,数据发送在第2个边沿
  • CPHA=1表示数据采样在第2个边沿,数据发送在第1个边沿

2 SPI工作原理

2.1 SPI总线数据帧

MOSI和MISO同时进行,可以看作是环形拓扑结构,如图所示:

主设备和从设备都有一个串行移位寄存器,主设备移位寄存器数据经过MOSI将数据写入从设备的移位寄存器,此时从设备的串行移位寄存器的数据也通过MISO传给了主设备,实现了两个移位寄存器的数据交换。主设备和从设备, 发送和接收都是同时进行的。如果主设备只对从设备进行写操作,主设备忽略接收的从设备数据即可。如果主设备要读取从设备数据,主设备需要发送一个空数据来引发从设备发送数据

数据帧格式(8位或16位)由SPI_CR1寄存器的DFF位选择,并且决定发送/接收的数据长度,SPI_CR1寄存器如图所示:

  • 位11: DFF,数据帧格式,0:使用8位数据帧格式进行发送/接收;1:使用16位数据帧格式进行发送/接收
  • 位7: LSBFIRST,帧格式,0:先发送MSB,即先发送高字节;1:先发送LSB,即先发送低字节
  • 位6: SPE,SPI使能,0:禁止SPI设备;1:开启SPI设备
  • 位1: CPOL,时钟极性,0:空闲状态时,SCK保持低电平;1:空闲状态时,SCK保持高电平
  • 位0: CPHA,时钟相位,0:数据采样从第一个时钟边沿开始;1:数据采样从第二个时钟边沿开始

2.2 SPI读写时序

四种模式的时序,如图所示:

  • 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通信不像UART、IIC通信有专门的通信周期、通信起始信号、通信结束信号

以CPOL=0,CPHA=0工作模式为例,通信时序如图所示:

SPI是全双工的,所以读时序和写时序可以一起完成,图中CS片选信号变为低电平,选中要通信的从机,然后通过MOSI和MISO这两根数据线进行收发数据

3 SPI通信特点

优点:

  • 全双工通信
  • 通信简单
  • 8或16位传输帧格式选择
  • 数据传输速率快

缺点:

  • 没有应答机制确认是否收到数据
  • 没有寻址机制,只能靠片选选择不同从设备
  • 传输距离较近
  • 只支持单主机

对比UART、IIC、SPI总线:

总线接口串/并同步/异步速率工作方式通信线总线拓扑通信距离
UART串行异步全双工RX、TXRS485总线型、星型、树型
IIC串行同步较慢半双工SDA、SCL总线型
SPI串行同步全双工SCLK、SIMO、SOMI、CS环形较近

希望本文对大家有帮助,上文若有不妥之处,欢迎指正

分享决定高度,学习拉开差距

以上是关于硬件设计基础----通信协议SPI的主要内容,如果未能解决你的问题,请参考以下文章

SPI

Arduino IIC协议笔记

SPI怎么区分主从? 两个设备之间通过SPI连接,根据啥来定义主从?

SPI总线协议理解

SPI通信协议

SPI入门基础