详解SPI通信协议(衔接IIC)

上一篇文章详细的讲解了IIC,详情可见链接IIC通讯协议详解(电路和时序图)_iic的时序是固定的吗-CSDN博客

USART通信协议详解-CSDN博客

IIC能克服UART点对点通信的缺陷,实现一对多甚至多对多,为什么还需要SPI呢?

尽管I2C接口在连接多个设备时具有很大便利,但在一些特定的应用场景下,SPI接口的特点可能更受欢迎:

  • 当需要高速数据传输时,SPI由于其速度优势而更受青睐
  • I2C 使用开漏输出依赖外部上拉电阻,通常具有较弱的高电平驱动能力,而 SPI 使用推挽输出,可以提供更强的驱动能力和较高的通信速率。
  • 在只需要连接少数几个外设,且IO资源不是限制因素时,SPI的简单和高速性能可能更加重要。
  • SPI总线的全双工通信能力允许数据同时双向传输,这对于某些实时或者高吞吐量的应用非常重要
  • SPI协议通常比I2C简单,这使得硬件设计和调试过程更为简便。

总而言之,I2C和SPI各有优点,根据具体的应用需求选择合适的通信协议是很重要的。在设计系统时,需要考虑设备数量、通信速度、资源限制等多个因素,以确定使用哪种协议。

硬件电路

SPI运行的流程及注意点如下:

  1. SPI通信主要由四根线构成,分别为SCK(时钟线),MOSI(主设备数据输出,从设备输入),MISO(主设备数据输入,从设备输出)和SS(从设备选择线)。MOSI和MISO一一对应接入。还需要VCC供电线以及GND,如果从机没有独立供电,主机需要引出VCC给从机供电。

  2. SCK时钟线完全由主机掌控,从图中的箭头可以看出,对主机来说,时钟线为输出。

  3. 在通信开始前,主设备需要将对应从设备的SS线拉低,表示选中该从设备进行通信。SS完全由主机掌控,通信结束后,主机将该线拉高,从机就会结束通信。这样不需要像IIC一样进行寻址,很方便。主机同一时间不能选择多个从机。
    SPI不支持多主机,而IIC可以。

  4. 输出引脚配置推完输出,输入引脚配置浮空或上拉输入。
    主机推挽输出,高低电平均具有很强的驱动能力,这使得SPI信号上升和下降的变化速度很快。而IIC由于开漏输出,下降沿很迅速,上升沿很慢,这就限制了IIC数据传输的速度。
    这就是SPI数据传输比IIC快的原因。

  5. 在通信过程中,数据通过MOSI和MISO线在主从设备之间进行传输,同时SCK线提供时钟信号来同步数据传输。
    可以看到3个从机的数据输出都接在主机的数据接收上,三个从机都是推挽输出,势必会导致冲突,所以SPI协议中规定当从机未被选中(SS为高电平时),从机的MOSI为高阻态,相当于断开引脚,不过这都是在从机的硬件中实现的。

  6. 另外,SPI通信支持多个从设备,但需要确保每个从设备对应的SS线都有独立的控制,以免发生通信冲突。

移位寄存器

移位寄存器是SPI的核心,中间涉及数据的移位(高位先行),图片不方便演示,所以我截取了原视频的部分片段便于理解。

SPI移位寄存器

首先规定时钟信号的上升沿所有移位寄存器向左移动一位,将移出去的胃放在引脚上,也就是在上升沿时改变数据。在下降沿时,将引脚上的位采样到移位寄存器的最低位 ,也就是下降沿读取数据

SPI时序基本单元

下面是起始和终止单元

下面是数据发送和接收单元

数据发送和接收基本单元可以结合移位寄存器来看,但是什么时候移位呢?是上升沿移位还是下降沿移位?
SPI给了可以配置的两个位,CPOL(时钟极性)和CPHA(时钟相位),两位可以配置4个模式,大同小异,今天主要学习最常用的模式0。

标签1:
SS为高电平,未选中从设备,SCK为低电平,MOSI还没有进行移位。在从设备没被选中时,从设备的MISO为高阻态(绿色方框),所以显示的信号线居中。

标签2:
从机被选中,SS为低电平,当时钟的第一个边沿到来的时候,移位寄存器改变数据(前半部分)。当第二个边沿来临的时候,读取数据,也就是将从机读取主机发过来的数据,从机读取主机发过来的数据(后半部分)。

后面就是重复的步骤了。

  • 49
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值