通信协议整理之 SPI 通信

通信协议整理之 SPI 通信

简介

SPI是串行外设接口(Serial Peripheral Interface)的缩写,是一种高速的,全双工同步通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布局上节省空间,提供方便。SPI接口主要应用在 EEPROM ,FLASH ,实时时钟,AD 转换器,还有数字信号处理器和数字信号解码器等外设之间。
SPI 通信的一个独特优势是数据可以不间断地传输。可以在连续流中发送或接收任意数量的位。在使用 IIC 和 UART 协议时,数据是以数据包的形式发送的,数据包中定义了开始和结束的位,因此数据在传输过程中会中断。
通过 SPI 进行通信的设备属于主从关系。因此,SPI 协议主设备( 主站 )同样可以控制多个从设备( 从站 )。
SPI 引脚定义:

  • MOSI(主输出/从输入):主站将数据发送到从站的线路。
  • MOSI(主输出/从输入):主站将数据发送到从站的线路。
  • SCLK(时钟):时钟信号的线路。
  • SS/CS(从机选择):主站选择线,用于选择要将数据发送到哪个从机。

SPI 是串行通讯协议,数据是一位一位传输的,由 SCLK 提供时钟脉冲, MOSI , MISO 则基于此脉冲完成数据传输及同步的。例如数据输出通过 MOSI 引脚,数据在时钟上升沿或下降沿时改变,在紧接着的下降沿或上升沿被读取,以此完成一位数据传输,输入也同理。

值得注意的是, SCLK 信号线仅由主设备控制,从设备不能控制信号线。因此,在一个基于 SPI 协议的通信系统中,至少得有一个主设备。

这样的传输方式有一个优点,与普通的串行通讯不同,SPI允许数据一位一位的传送,而不需要一次传输至少八位数据(一个字节),SPI 甚至允许暂停,因为 SCLK 时钟线仅由主控设备控制,主设备通过对 SCLK 时钟线的控制可以完成对通讯的控制,比如当没有时钟跳变时,从设备不采集或传送数据,反之则采集数据。SPI 还是一个数据交换协议:因为SPI的数据输入和输出线独立,所以允许同时完成数据的输入和输出。

工作原理

从上述可知,SPI 协议的通信是由时钟信号控制的,时钟信号负责将主设备的数据位输出与从设备的位采样同步。每个时钟周期传输一位数据,因此数据传输的速度取决于信号的频率。
SPI 中的时钟信号可以使用时钟极性和时钟相位属性进行修改。这两个属性协同工作,以定义何时输出以及何时进行采样。这就涉及 SPI 通信的时序,详解如下:

  • CPOL :时钟极性选择,为 0 时 SPI 总线空闲为低电平;为 1 时 SPI 总线空闲为高电平。
  • CPHA :时钟相位选择,为 0 时在 SCLK 第一个跳变沿采样;为 1 时在 SCLK 第二个跳变沿采样。
    由此组合,可以得到 SPI 的四种工作模式:
SPI 模式CPOLCPHA空闲状态下的时钟极性用于采样和/或移位数据的时钟相位
100逻辑低电平数据在上升沿采样
201逻辑低电平数据在下降沿采样
310逻辑高电平数据在下降沿采样
411逻辑高电平数据在上升沿采样

通信连接方式

SPI 主设备要与某个从设备通信时,可以将从设备的 CS/SS 线路设置为低电平。反之,在空闲下,从设备选择线保持在高电平。主设备可以有多个从设备选择引脚,即 CS/SS 引脚,且允许多个从设备并联接线。如果主设备只有一个 CS/SS 引脚,则可以通过菊花链的形式将多个从设备连接到主站。
具体方法如下:
1
2

补充

硬件 SPI 和模拟 SPI

与 IIC 通信类似, SPI 通信也可用 IO 口模拟 SPI 协议时序来实现通信。
硬件 SPI 速度快,且可以使用 DMA 来进行加速。
软件 SPI 接口相对灵活,但时序较复杂,代码量较多。

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值