1. SPI协议概述
SPI(Serial Peripheral Interface)是一种同步串行通信接口标准,由摩托罗拉在1980年代初期开发。作为嵌入式系统中最常用的短距离有线通信协议之一,SPI主要用于集成电路之间的数据传输。与I²C等协议不同,SPI没有正式的国际标准,但在实际应用中已经形成了广泛接受的实现规范。
SPI采用主从架构,支持全双工通信,典型传输速率从几MHz到几十MHz不等。其核心优势在于硬件实现简单、传输效率高,这使得它成为Flash存储器、传感器、显示控制器等外设的理想接口选择。在实际项目中,我经常使用SPI连接加速度计、陀螺仪和TFT屏幕,其稳定的时钟同步机制能确保数据完整传输。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. SPI硬件连接与信号定义
2.1 基本信号线
标准SPI接口使用四根信号线:
- SCLK(Serial Clock):主设备产生的时钟信号,用于同步数据采样
- MOSI(Master Out Slave In):主设备发送、从设备接收的数据线
- MISO(Master In Slave Out):从设备发送、主设备接收的数据线
- SS/CS(Slave Select/Chip Select):主设备控制的从设备选择信号(低电平有效)
在PCB布局时,SCLK需要特别注意走线长度匹配。我曾在一个无人机飞控项目中,由于SCLK走线过长导致信号畸变,最终通过缩短走线并添加33Ω端接电阻解决了通信故障。
2.2 多从机配置方案
当系统需要连接多个SPI从设备时,通常采用以下两种拓扑结构:
独立片选方案:
- 每个从设备有独立的SS线
- 主设备通过拉低对应SS线选择通信目标
- 优势:各设备可工作在不同SPI模式
- 缺点:占用较多GPIO资源
菊花链方案:
- 所有从设备共享一个SS线
- 数据通过设备级联传递
- 优势:节省引脚资源
- 缺点:所有设备必须使用相同SPI模式
在工业控制器设计中,我推荐使用独立片选方案配合74HC138译码器扩展片选信号,这样既能支持多设备又能灵活配置参数。
3. SPI工作模式详解
3.1 时钟极性与相位
SPI模式由CPOL(Clock Polarity)和CPHA(Clock Phase)两个参数
