嵌入式测试学习第 26 天:SPI通信协议基础、主从模式、速度特点

SPI通信协议基础、主从模式、速率特点

一、SPI协议基础认知

1. 协议定义

SPI(Serial Peripheral Interface,串行外设接口),高速同步全双工串行总线,摩托罗拉推出,嵌入式板间高速通信首选协议。

  • 核心特性:全双工收发、无设备地址、靠独立片选选中从机、传输速率远高于I2C
  • 适用场景:W25Q串行Flash、SPI液晶屏、ADC模数芯片、TF卡、射频模块、FPGA外设;
  • 通信距离:板内短距离(1米以内),长线易受干扰。

2. SPI四线引脚定义(标准4线SPI,嵌入式最通用)

图片特征:标注Master(主机)、Slave(从机),4根信号线两两对接,清晰区分MOSI/MISO/SCLK/CS走向。

  1. SCLK(串行时钟)仅主机输出时钟,决定通信速率,同步收发时序;
  2. MOSI:主机发→从机收(Master Out Slave In);
  3. MISO:从机发→主机收(Master In Slave Out);
  4. CS/NSS(片选) :独立IO控制,低电平有效,拉低=选中对应从机,拉高=设备休眠断开总线。

对比I2C:I2C靠7位地址寻址,SPI无地址,每个从机独占1路CS片选线

3. SPI四种时钟模式

时钟极性CPOL、时钟相位CPHA组合出4种时序,硬件通信必须主从模式一致,否则数据错乱。

图片特征:分4组CS/SCLK/MOSI波形,标注采样边沿,区分Mode0~Mode3(Mode0使用最多)。

  • CPOL:空闲SCLK电平,0=空闲低电平,1=空闲高电平;
  • CPHA:数据采样边沿,0=第一个时钟沿采样,1=第二个时钟沿采样;
  • 工程默认:Mode0(CPOL=0,CPHA=0),W25Q、SPI屏幕默认该模式。

二、SPI主从拓扑结构

SPI固定架构:单主机+多从机,一条总线同一时刻只能1个主机产生SCLK时钟。

1. 星型拓扑(最常用,独立片选)

所有从机SCLK、MOSI、MISO三线全部并联每个从机单独引出CS接主机不同GPIO引脚,主机通过拉低某一路CS,单独选中单个设备通信。

图片特征:主控MCU引出一组SCLK/MOSI/MISO并联全部从机,每个从机自带独立CS接线。

实物接线实拍(开发板+多外设)

图片特征:开发板PCB走线,SCLK/MOSI/MISO共用,W25Q芯片CS引脚单独接主控IO,3.3V供电。

图片特征:主控排针通过4根杜邦线连接W25Q模块VCC/GND/SCK/MOSI/MISO/CS,实物直观体现四线接线规范。

2. 菊花链拓扑(级联,节省CS引脚)

从机首尾串联:主机MOSI→从机1输入,从机1输出→从机2输入,所有从机共用一组SCLK+1根公共CS,多用于DA/ADC阵列、LED驱动芯片,嵌入式测试较少用。

三、SPI速度特点

  1. 速率区间
  • 低速:几十KHz~1MHz(传感器、低速ADC);
  • 标准:1~20MHz(W25Q Flash、SPI液晶屏,工程最常用);
  • 高速SPI:50MHz~100MHz+(FPGA、DDR、高速射频模块);

I2C最高400KHz,SPI速率是I2C几十~上百倍,高速传输首选SPI。

  1. 影响速率因素:走线长短、是否加屏蔽线、从机芯片规格、电平3.3V/5V;
  2. 实测现象:速率过高出现乱码=时序不匹配、走线干扰,降频即可修复(测试高频故障)。

四、SPI全双工读写通信逻辑(结合逻辑分析仪波形)

SPI全双工同步收发:CS拉低选中设备后,SCLK每来1个时钟脉冲,MOSI发1bit、MISO同步收1bit,8bit组成1字节,收发同步完成。

1. 写流程(主机发、从机收)

CS拉低→SCLK输出时钟→MOSI逐位下发指令/数据→MISO同步接收从机返回数据→数据传输完毕→CS拉高结束通信。

2. 读流程(主机下发读指令,从机回传数据)

CS拉低→MOSI发送读寄存器指令→SCLK持续输出时钟→MISO逐位接收从机上传数据→CS拉高终止。

配图6:SPI读写逻辑分析仪抓取波形实拍

图片特征:四通道波形从上至下CS/SCLK/MOSI/MISO,能直观看到CS下降沿启动通信、SCLK脉冲、MOSI下发指令、MISO回传数据。

五、嵌入式测试常见故障排查(硬件+协议)

  1. 完全无通信(MISO无数据)
    原因:CS没拉低、SCLK/MOSI/MISO接反、从机未上电、主从SPI四种模式不一致;
    排查:逻辑分析仪抓CS电平、核对CPOL/CPHA配置。
  2. 数据随机错乱
    原因:SPI时钟速率过高、杜邦线过长引入干扰、电源纹波大;
    解决:降低SCLK频率、缩短接线。
  3. 能写不能读/能读不能写
    原因:MISO虚焊、从机寄存器只读配置错误、模式配置单边不匹配。

六、总结

  1. 硬件:4线(SCLK+MOSI+MISO+独立CS),全双工,无地址
  2. 拓扑:星型(独立CS)为主,一主多从;
  3. 时序:4种CPOL+CPHA模式,工程默认Mode0;
  4. 速率:MHz级别,远快于I2C;
  5. 测试排查顺序:CS电平→接线方向→SPI模式→时钟速率。
相关推荐
蓝斯4974 小时前
从.到实现一个Windows上的虚拟hid键盘设备
windows·单片机·计算机外设
熙芯XiChip5 小时前
硬实时与软实时RTOS核心区别
嵌入式硬件
伟大的前程5 小时前
unsigned int 定义的变量 在 电脑的 64 位系统中 和 32 位 cortex-m0 和 8 位的 51 单片机
单片机·嵌入式硬件
小渔村的拉线工5 小时前
1.HPM6E80 解析芯片整体工作原理和存储架构
单片机·嵌入式硬件·mcu·架构·hpm6e80
熙芯XiChip6 小时前
CAN与CANopen的本质区别
单片机
lilihewo7 小时前
Altium Designer 封装库的创建(分享pcb 3D封装库)
嵌入式硬件·51单片机
神罚天下ET8 小时前
典型arm位单片机启动流程(从上电到main.c)
c语言·arm开发·单片机
碧海银沙音频科技研究院8 小时前
蓝牙耳机使用WSDF5361锂保芯片进入船运模式实现方法
嵌入式硬件·算法
Zevalin爱灰灰9 小时前
模拟信号链电路——基于TL431的电压基准电路
单片机·嵌入式硬件
csdn杰哥10 小时前
瑞萨单片机开发教程[二十七] DTC 外部中断触发传输实验
单片机·嵌入式硬件·mongodb·瑞萨·ra6m5