2036964_zh-CN

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

2036964_zh-CN

2036964_zh-CN

SPI总线概述(日语博客)

0. 目录


  1. 目录
  2. 什么是SPI?
  3. 物理/电气特性
  4. 协议
  5. 连接拓扑
  6. 参考资料

1. 什么是SPI?


1.1 历史和规格


SPI总线是由美国摩托罗拉公司(现为恩智浦半导体公司)提出的一种串行总线规范。该规范据称于20世纪80年代中期制定。SPI代表“串行外设接口”,最初开发为一种用于连接处理器和外围芯片的四线串行总线。三线SPI总线也作为衍生规范存在,但最初的四线系统才是基础。

SPI 通信方法有多种变体,例如信号极性和数据同步时序设置,因此在使用时需要注意这一点。

与 I²C 类似,SPI 也用于在芯片之间交换数据,但两者各有优缺点,如[表 1] 所示。

SPI 适用于需要更快数据传输的应用。这是由于其电气规格不同:I²C 使用开漏驱动信号,而 SPI 使用推挽驱动信号,因此更容易实现更高的传输速度。此外,在数据传输速度方面,SPI 的特点是能够执行全双工通信,从而允许同时进行发送和接收。

另一方面,SPI也存在一些缺点。传输数据长度和时钟极性是针对每个目标设备单独指定的,这使得混合连接多种类型的设备变得困难。此外,连接多个相同类型的设备时,每个设备都需要一个片选信号,这会增加信号线的数量;而且,在级联设备时,数据传输长度也必须进行调整。


  I²C SPI
行数 2
数据来源:SDA
时钟:SCL
4
数据:SDO、SDI(MOSI、MISO)
时钟:SCLK
芯片选择:CS
速度 约400kHz
根据模式不同,频率分别为 1MHz、3.4MHz 或 5MHz。
几百千赫兹到几十兆赫兹
沟通方向
双向半双工

双向全双工
连接方式 多点(并行)
多个控制器与多个目标
并行或菊花链式单控制器对多个目标
信号驱动 明渠
(需要上拉电阻)
推拉

表1:I²C和SPI的比较

 

1.2 控制器/目标或主节点/子节点(子节点)


在SPI协议中,数据传输也是以主从关系进行的。过去常用“主设备”和“从设备”这两个术语,但现在已改为“控制器”和“目标设备”。

它们也被称为主节点/子节点(简称“子节点”),保留了之前角色名称中的首字母“M/S”。从现在开始,本博客将特意使用“主节点/子节点”(简称“子节点”)这一术语。

在SPI协议中,不能存在多个主设备。通信始终发生在单个主设备和一个或多个目标设备之间。


2. 物理/电气特性


2.1 信号线数量:信号名称


SPI总线是一种四线同步串行接口。同步串行接口是一种利用其中一条信号线作为时钟信号,与时钟信号同步发送和接收数据的方法。

数据信号线有两条。一条用于主设备到子设备的数据传输,另一条用于子设备到主设备的数据传输。还有一条是片选信号。SPI 协议本身没有指定传输目标地址的方法。因此,片选信号用于指定目标设备[图 1]。

信号名称可能有多种叫法。以下是OSHWA使用的信号名称:

  • SDO :数据输出
  • SDI :数据输入
  • SCK :串行时钟
  • CS :芯片选择:CS

在上述示例中,SDO 和 SDI 的名称是根据每个芯片上的数据输入/输出方向来命名的。在这种情况下,引脚名称很明确,但难以区分主输出和子输出之间的信号方向。

相反,电路图等中通常使用以下信号名称。本博客将遵循这些术语。

  • MOSI :主输出到子输出的数据(主输出 子输入)
  • MISO :从子系统到主系统的数据(主系统输入/子系统输出)
  • SCLK :串行时钟
  • CS :芯片选择:CS

在这些信号中,只有MISO信号是从子系统发往主系统的信号,其余信号都是从主系统发往子系统的信号。通信过程中信号方向保持不变。

スクリーンショット 2025-02-03 6.18.59.png图 1:控制器和目标。信号名称


例如,当通信只是单向进行时,为了节省信号数量,可以省略其中一条数据线。

还有一些目标设备支持时分复用传输和接收,从而只需使用一条数据线。在这种情况下,在主侧,MOSI/MISO 通过电阻短路以合并信号。

2.2 推挽式。不传输时处于高阻抗状态


信号以推挽方式输出。当没有数据传输时,MOSI 和 MISO 输出端处于高阻抗状态。这样做是为了防止多个子节点并联连接时相互干扰。

信号电压由子节点设备决定,因此必须进行相应的调整。如果主节点和子节点之间的电压不同,则需要进行电压转换。


2.3 时钟频率


关于时钟频率没有具体规定。通常使用数百 kHz 到数 MHz 范围内的时钟频率,上限由子节点器件的规格决定。需要高速数据传输的应用可能会使用数十 MHz 的时钟频率。此外,在存储器件和其他应用中,也有使用多条 MOSI 和 MISO 数据线来提高传输速率的例子。


3. 协议


数据传输协议没有严格的规定,每个子节点设备都可以自由选择协议。主微控制器具有支持各种子节点设备的设置。

基本的传输过程始于将连接到目标子节点的 CS 信号置位。当 CS 信号置空时,传输结束。CS 信号通过低电平和高电平信号置位和置空,但极性由子节点设备的规格决定。许多设备使用最高有效位 (MSB) 在前进行数据位排序,但也存在例外情况。此外,传输单元的位数也没有具体规定。我见过一些解释说传输单元是 2 到 16 位,但这并不准确,因为有些子节点使用更大的位长度作为传输单元(例如,64 位)。


3.1 模式


SPI 具有称为“模式”的设置,指的是时钟极性和边沿选择的组合,共有四种模式,每种模式有两种设置[图 2]。

时钟极性是一个名为CPOL 的设置,它决定在没有数据传输时 SCLK 是低电平还是高电平。在主电路中,将其设置为 0 会将其设置为低电平,设置为 1 则会将其设置为高电平。边沿选择(相位)称为CPHA 。此设置决定数据是在第一个时钟边沿还是第二个时钟边沿被锁存(接收)。设置为 0 选择第一个边沿,设置为 1 选择第二个边沿。CPOL 和 CPHA 有时可以组合使用,以表示模式 0 到 3 [表 2]。

另外,请注意,还有一些子节点的片选极性相反。

スクリーンショット 2025-02-03 7.42.56.png图 2:模式(CPOL、CPHA)

 

  中央警察 CPHA
模式=0 0 0
模式=1 0 1
模式=2 1 0
模式=3 1 1

表 2:模式和 CPOL、CPHA


什么是“锁存数据的边缘”?

数据的发送和接收与时钟同步,但数据会在时钟的上升沿或下降沿发生变化。图 3 显示了数据在下降沿发生变化的示例。主节点的 MOSI 输出和子节点的 MISO 输出会随着主节点 SCLK 输出的下降沿而变化。下一个数据会在下一个下降沿发生变化,但在此之前,状态保持稳定。时钟的上升沿恰好出现在这段时间内,因此数据会根据这个时间点相互捕获。这就是所谓的“锁存边沿”。

スクリーンショット 2025-02-03 6.54.45.png

图 3:数据(MOSI/MISO)和时钟(SCLK)同步


3.2 数据传输


片选信号置位后,数据会与时钟同步发送和接收。当子节点接收到自身的片选信号置位时,它会与时钟同步接收和输出数据。

图 4 展示了一个 SPI 数据传输示例。数据根据时钟信号进行交换,同时 CS 信号保持有效。熟悉逻辑电路的人会发现,这是通过一个简单的移位寄存器电路实现的。

スクリーンショット 2025-02-03 7.55.53.png图 4:SPI 传输示例

 

4. 连接拓扑


4.1 并行连接和带片选功能的菊花链连接


如图 5 所示,多个子节点连接在一起。每个子节点都提供一个片选信号,通信通过每个信号指定发送方和接收方来实现。或者,为了减少片选信号的数量,可以使用菊花链连接,并将子节点视为一个具有扩展比特长度的单个子节点来进行通信(如图 6 所示)。

如前所述,将多种类型的子节点连接到同一SPI总线时必须格外小心。正如前文所述,它们的“模式”、片选极性和数据位长度可能不同。因此,每次与每个子节点通信时,您可能都需要切换设置或在硬件中进行调整。

スクリーンショット 2025-02-03 8.25.09.png

图 5:并联连接

 

スクリーンショット 2025-02-03 8.25.21.png

图 6:菊花链连接

5. 参考资料



[本文最初发表于《Interface》杂志2024年3月刊(CQ Publishing出版),标题为“从零开始构建I2C和SPI ④……SPI通信标准”,第71-73页。本文摘录并修订了其中解释通信规范的部分。]


更改历史记录:
2025年2月3日:第一版
2025-02-25:在“5. 参考资料”部分添加了“NXP 系统管理 I²C、I3C、SPI 选择器指南”的链接。

2025-05-01:更正了目录(删除了项目),更正了第 2.2 节中的项目名称。
2026-07-24:修复了“2.1 信号线数量:信号名称”和“5. 参考资料”中指向“OSHWA 角色名称和信号名称”的损坏链接。


=========================

我们目前无法回复此帖子“评论”部分的评论。
对于由此造成的不便,我们深表歉意。如有任何疑问,请参阅“ NXP技术问题-如何联系我们(日语博客) ”。
(如果您已经是恩智浦的分销商或与恩智浦有合作关系,您可以直接询问负责人。)

SPI总线用于微控制器/处理器与外围设备之间的通信。

虽然这种串行总线应用非常广泛,但我还是想借此机会简要介绍一下它的起源。

通信标准界面日本博客
Tags (1)
No ratings
Version history
Last update:
‎07-23-2026 01:30 PM
Updated by: