嵌入式测试学习第 26 天:SPI通信协议基础、主从模式、速度特点
SPI通信协议基础、主从模式、速率特点
- 一、SPI协议基础认知
- 1. 协议定义
- 2. SPI四线引脚定义(标准4线SPI,嵌入式最通用)
- 3. SPI四种时钟模式
- 二、SPI主从拓扑结构
- 1. 星型拓扑(最常用,独立片选)
- 实物接线实拍(开发板+多外设)
- 2. 菊花链拓扑(级联,节省CS引脚)
- 三、SPI速度特点
- 四、SPI全双工读写通信逻辑(结合逻辑分析仪波形)
- 1. 写流程(主机发、从机收)
- 2. 读流程(主机下发读指令,从机回传数据)
- 五、嵌入式测试常见故障排查(硬件+协议)
- 六、总结
一、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走向。
- SCLK(串行时钟):仅主机输出时钟,决定通信速率,同步收发时序;
- MOSI:主机发→从机收(Master Out Slave In);
- MISO:从机发→主机收(Master In Slave Out);
- 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速度特点
- 速率区间
- 低速:几十KHz~1MHz(传感器、低速ADC);
- 标准:1~20MHz(W25Q Flash、SPI液晶屏,工程最常用);
- 高速SPI:50MHz~100MHz+(FPGA、DDR、高速射频模块);
I2C最高400KHz,SPI速率是I2C几十~上百倍,高速传输首选SPI。
- 影响速率因素:走线长短、是否加屏蔽线、从机芯片规格、电平3.3V/5V;
- 实测现象:速率过高出现乱码=时序不匹配、走线干扰,降频即可修复(测试高频故障)。
四、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回传数据。
五、嵌入式测试常见故障排查(硬件+协议)
- 完全无通信(MISO无数据)
原因:CS没拉低、SCLK/MOSI/MISO接反、从机未上电、主从SPI四种模式不一致;
排查:逻辑分析仪抓CS电平、核对CPOL/CPHA配置。 - 数据随机错乱
原因:SPI时钟速率过高、杜邦线过长引入干扰、电源纹波大;
解决:降低SCLK频率、缩短接线。 - 能写不能读/能读不能写
原因:MISO虚焊、从机寄存器只读配置错误、模式配置单边不匹配。
六、总结
- 硬件:4线(SCLK+MOSI+MISO+独立CS),全双工,无地址;
- 拓扑:星型(独立CS)为主,一主多从;
- 时序:4种CPOL+CPHA模式,工程默认Mode0;
- 速率:MHz级别,远快于I2C;
- 测试排查顺序:CS电平→接线方向→SPI模式→时钟速率。
