SPI通信本质

发布时间:2026/11/6 1:51:56
SPI通信本质

SPI内部功能框图

摘自参考手册的原理图

简化后的图

宏观示意图

主从机通信示意图

SPI_DR寄存器

如果只有一个 DR 寄存器,那么就无法实现全双工通信,所以,SPI 在设计的时候,就会让 DR 寄存器对应两个缓冲区(其实也是两个不可显寄存器),一个用来写 (发送缓冲),一个用来读 (接收缓冲)。

只有一个DR寄存器是如何处理两个缓冲区的数据的呢?

意法半导体的做法是采用一种 "地址复用" 策略,用同一个地址,根据不同的操作类型,访问不同的缓冲区,从而达到节省物理地址的目的。

我们可以这样理解,在DR寄存器处有一个开关,当你要进行写操作的时候,就接到写缓冲区,当你要进行读操作的时候,就接到读缓冲区。

发送过程

数据移入移位寄存器

注意看红色框部分

发送一位


接收


如此循环

对SPI通信的本质建模(可直接看这个)

Master和Slave的数据组成了一个队列。

SPI 通信的本质,就是一个队列,从队列头部移出数据,移出的数据,再入到队列尾部,循环移位 8 次,就可以完成 8 与 8 比特位的数据交换。 这个过程需要两步:

  1. 移出队列头部的数据
  2. 将数据移动到队列尾部 时钟 SCK 是指挥棒,所以一个周期需要两个边沿来控制这个步调

结论

由动态通信过程我们能感受到,全双工是 SPI 的基本特性,数据交换是 SPI 的通信本质。