SPI通信协议详解

简介: SPI通信协议详解

简介

与 I2C 一样, SPI 也是很常用的通信协议( Motorola 公司推出),且二者都支持“一主多从”通信,很多常见的模块(芯片)都支持了该通信协议。相比 I2C 接口, SPI 接口的通信速度更快( I2C 最高 400KHz,而 SPI 最高可达几十MHz),且支持全双工通信。

想了解I2C通信的可以看我之前写的这篇帖子:IIC(I2C)通信协议详解

1 电气连接

SPI通信的接线比I2C稍微复杂些,所以很需要一张图来说明。在SPI通信中,一般需要4根线。准确来说是3+N。N是从机的数量。

电气接线作用如下:

  • CS/SS, Slave Select/Chip Select,这个是片选信号线,用于选择需要进行通信的从设备。 I2C 主机是通过发送从机设备地址来选择需要进行通信的从机设备的, 而SPI 主机不需要发送从机设备,直接将相应的从机设备片选信号拉低即可。所以有几个从机参与了SPI通信,就需要几根CS/SS信号线。
  • SCK, Serial Clock,串行时钟,为通信提供时钟信号。
  • MOSI/SDO, Master Out Slave In/Serial Data Output,简称主出从入信号线,这根数据线只能用于主机向从机发送数据,也就是所谓的主机输出,从机输入。
  • MISO/SDI, Master In Slave Out/Serial Data Input,主入从出信号线,与MOSI相反,这根数据线只能从机向主机发送数据,也就是所谓的主机输入,从机输出。

记忆这4种接线的时候,只需要记住英文全称就可以反推出其简称。

2 通信过程

2.1 工作模式

SPI 有四种工作模式,通过串行时钟极性(CPOL)和相位(CPHA)来实现(CPOL和CPHA的值可通过寄存器来设置)。

  • CPOL=0,串行时钟空闲状态为电平。
  • CPOL=1,串行时钟空闲状态为电平。
  • CPHA=0,串行时钟第个跳变沿(上升沿或下降沿)采集数据。
  • CPHA=1,串行时钟第个跳变沿(上升沿或下降沿)采集数据。

四种工作模式下的数据交换如下图所示:

2.2 通信时序

SPI的通信线增多了,通信也变得简单了起来,以常见的CPOL = 0和CPHA = 0为例,其通信时序如下所示。

首先通过将CS/SS线上的电平拉低,来实现片选,选择了具体的从机(芯片)后,便可发送时钟信号,根据时钟周期进行通信了,且可同时收发数据,十分高效。

还有一个好处,由于片选线的存在,避免了多个从机通信时候的总线冲突,因此不需要I2C那样外接上拉电阻

当然SPI通信也是有缺点的,

  1. SPI既没有UART通信那样的奇偶校验,也没有I2C那样的应答机制,所以并不能保证通信数据的准确性。
  2. 当从机较多的时候,会出现较多的通信线,这对于硬件设计师来说并不是一个好消息。在布线的过程中,不仅仅需要考虑到线路的交叉,还要考虑到信号的相互影响等等因素
相关文章
|
11月前
|
运维 监控
浅析SPI与CAN通信
SPI是一种常用的MCU与外设的通信方式,英文全称Serial Peripheral Interface。与之前介绍过的UART不同,SPI是串行,全双工,同步通信方式。SPI通常有4根物理连接线,分别是CS片选,SCK时钟,MOSI主机输出从机输入和MISO主机输入从机输出。CS片选是从机选择信号线,低电平有效。当CS为低电平时认为主机目前选中的本从机。SCK是串行时钟线,同步通信需要主从机时钟同步,主机利用SCK线与从机实现时钟同步。时钟由主机产生,决定了通讯的速率。
225 0
|
2月前
|
传感器 数据采集 网络协议
什么是网络通信中的 Modbus协议?
网络协议是网络通信中至关重要的一部分,它定义了网络中两个或多个设备之间通信的规则、过程和格式。这些规则确保了计算机网络设备能够使用一种通用语言来传输和接收数据,而不管它们的设计、硬件或基础设施如何。
46 1
|
3月前
|
网络协议
技术笔记:modbus通讯协议详解
技术笔记:modbus通讯协议详解
44 0
|
4月前
|
Linux 芯片
|
4月前
|
传感器 监控
【MODBUS】Modbus协议和PLC协议的区别和联系
【MODBUS】Modbus协议和PLC协议的区别和联系
161 0
一文搞懂CAN总线协议帧格式
CAN总线上传输的信息称为报文,当总线空闲时任何连接的单元都可以开始发送新的报文。