目录

SPI总线学习笔记

一、核心特性概览

二、关键工作机制

三、核心配置:时钟极性与相位

四、SPI vs. I2C 对比

五、 SPI vs UART

六、关键要点与注意事项


SPI总线学习笔记

一、核心特性概览

  • 全称:串行外设接口(Serial Peripheral Interface)

  • 类型:串行、同步、全双工通信总线

  • 拓扑:主从模式(一主多从),不支持多主

  • 信号线:通常4根线

    • SCLK:串行时钟(由主设备产生)

    • MOSI:主设备输出,从设备输入(Master Out Slave In)

    • MISO:主设备输入,从设备输出(Master In Slave Out)

    • CS/SS:片选信号(一般低电平有效),用于选择从设备

                  (是否有效得看从机手册,cs上面有个杠是低电平有效)
  • 数据传输:高位(MSB)先发送,无需应答机制

二、关键工作机制

  1. 全双工实现原理
    SPI的硬件本质是一个环形移位寄存器。在同一个时钟脉冲下,主设备通过MOSI线将数据移入从设备,同时从设备通过MISO线将数据移入主设备。因此,发送和接收在每一个时钟周期内同时完成

  2. 多从机连接方式

    • 独立片选(最常用):每个从设备独占一根CS线。主设备通过拉低特定从设备的CS来选中它,其他从设备保持高电平并断开与总线的连接。

    • 菊花链:将设备的MISO连接到下一级设备的MOSI,所有设备共享一根CS线,但通信延迟会增加。

  3. CS信号的额外作用
    除了物理上选中设备,CS信号还定义了帧同步边界。一次完整通信以CS下降沿开始,以CS上升沿结束,告知从设备一次事务的起止,确保帧同步。

三、核心配置:时钟极性与相位

这是SPI最核心的配置,主从设备必须严格匹配。它们共同定义了4种工作模式。

  • CPOL(时钟极性):决定总线空闲时SCLK的电平。

    • CPOL = 0:空闲为低电平

    • CPOL = 1:空闲为高电平

  • CPHA(时钟相位):决定数据采样发生在第几个时钟边沿。

    • CPHA = 0:在第一个时钟边沿采样数据

    • CPHA = 1:在第二个时钟边沿采样数据

模式CPOLCPHA空闲电平数据采样边沿
000上升沿
101下降沿
210下降沿
311上升沿

主从设备模式不匹配会怎样?

数据错位或完全错误。接收方在错误的时钟边沿采样,导致数据整体偏移一位或多位。这是SPI调试最常见的问题

四、SPI vs. I2C 对比

特性SPII2C
引脚数至少4根线(多从需额外CS)2根线(SDA, SCL)
通信方式全双工半双工
速度,可达几十MHz慢,典型100k-3.4MHz
应答机制,主设备无法确认接收,每个字节后跟随ACK
多主模式不支持支持
协议复杂度简单,无帧格式较复杂,有完整帧格式
距离极短(板内通信)稍长,总线电容限制
总线负载推挽输出,无需上拉电阻开漏输出,需要上拉电阻

SPI需要上拉电阻吗?

通常不需要。SPI是推挽输出,能主动驱动高低电平。但CS线有时会加一个上拉电阻,防止主设备未初始化时CS浮空导致误触发

详细IIC原理点此处https://blog.csdn.net/2301_81636338/article/details/157872688?spm=1011.2124.3001.6209

五、 SPI vs UART

维度SPIUART
同步/异步同步(有时钟线)异步(无时钟线)
引脚数4根2根(RX/TX)
通信方式全双工全双工
拓扑一主多从点对点
起始/停止位(由CS界定帧)

详细UART原理点此处https://blog.csdn.net/2301_81636338/article/details/157764671?spm=1011.2124.3001.6209

六、关键要点与注意事项

  1. 为什么通信距离很短?
    SPI使用单端、高频率信号传输,没有复杂的阻抗匹配和差分抗干扰设计。长距离传输时,线路电容、电感会严重畸变信号,导致通信失败。它主要用于板内器件间的通信。

  2. 常见调试问题:数据错位
    最常见的原因是主从设备的SPI模式(CPOL/CPHA)不匹配,导致采样边沿错误。其次是时钟频率过高(信号完整性差)或接线接触不良。

  3. 典型应用场景
    适合对速度要求高的外设:NOR Flash、SD卡、LCD/OLED屏幕、高速ADC/DAC、以太网控制器(如W5500)、无线模块(如LoRa、NRF24L01)等。

  4. UART、I2C、SPI 对比速览

    • UART串行、异步、全双工。点对点,2根线。先发低位,有起始/停止位。

    • I2C串行、同步、半双工。多主多从,2根线(需上拉)。先发高位,有应答,有起始/结束条件。

    • SPI串行、同步、全双工。一主多从,4根线。先发高位,无应答,无起始/结束条件(由CS界定),极性和相位可配置。

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐