SPI(Serial Peripheral Interface,串行外设接口)是一种高速、全双工、同步的串行通信协议,由摩托罗拉公司(Motorola)于 20 世纪 80 年代提出,主要用于短距离内的芯片级通信,广泛应用于微控制器(MCU)与外围设备(如传感器、存储器、显示屏等)之间的数据传输。
SPI 接口的核心特点
- 同步通信
:通过时钟信号(SCLK)同步数据传输,发送方和接收方依赖同一时钟信号确保数据对齐。 - 全双工通信
:数据可以同时双向传输(发送和接收可同步进行)。 - 高速传输
:速率通常可达几 Mbps 到几十 Mbps,具体取决于设备支持的时钟频率。 - 主从架构
:通信由主设备(Master) 控制,从设备(Slave) 被动响应,一个主设备可连接多个从设备。
SPI 接口的信号线
SPI 协议通过 4 根信号线实现通信(部分简化场景可省略部分线),具体如下:
|
|
|
|
|---|---|---|
| SCLK |
|
|
| MOSI |
|
|
| MISO |
|
|
| SS/CS |
|
|
SPI 的工作原理
- 主从初始化
:主设备初始化时钟频率(SCLK)、数据传输格式(如位数、时钟极性 / 相位),并通过 SS/CS 线选中目标从设备(拉低对应 SS 引脚)。 - 数据传输
: -
主设备通过 MOSI 线逐位发送数据,同时从设备通过 MISO 线逐位返回数据,双方在 SCLK 的同步下完成采样。 -
传输位数通常为 8 位(1 字节),也可支持其他位数(如 16 位),具体由设备定义。 - 传输结束
:主设备拉高 SS/CS 线,释放从设备,结束本次通信。
SPI 的时钟极性与相位(CPOL/CPHA)
SPI 的通信格式由时钟极性(CPOL)和相位(CPHA)定义,共 4 种模式,需主从设备保持一致:
- CPOL(Clock Polarity)
:定义空闲时 SCLK 的电平(0 = 空闲低电平,1 = 空闲高电平)。 - CPHA(Clock Phase)
:定义数据采样的时刻(0 = 第一个时钟沿采样,1 = 第二个时钟沿采样)。
常见模式为模式 0(CPOL=0,CPHA=0):空闲时 SCLK 为低电平,在第一个上升沿采样数据。
SPI 的多从设备连接方式
独立 SS 线连接:主设备为每个从设备分配独立的 SS/CS 引脚,通过拉低对应引脚选中单个从设备,其他从设备不响应。
-
优点:结构简单,各从设备独立,通信互不干扰。 -
缺点:主设备引脚占用多,适合从设备数量少的场景。 ** Daisy Chain(菊花链)连接 **:从设备串联,主设备仅需 1 根 SS 线,数据从第一个从设备依次传递到最后一个,最后一个从设备的输出返回主设备。
-
优点:节省主设备引脚,适合从设备数量多的场景(如 LED 屏、传感器阵列)。 -
缺点:数据传输延迟随从设备数量增加,且任一设备故障会影响整体通信。
SPI 的优缺点
优点
-
高速传输:速率远高于 I²C(通常可达 10Mbps 以上),适合大数据量场景(如显示屏、高速 ADC)。 -
全双工通信:发送和接收可同步进行,效率高。 -
协议简单:无复杂的地址机制和应答信号,硬件实现成本低。
缺点
-
信号线较多:相比 I²C(仅 2 根线),SPI 需要 4 根线(含 SS),不适合远距离传输。 -
无内置纠错机制:数据传输错误需通过软件校验(如 CRC)。 -
主从依赖强:从设备无法主动发起通信,必须由主设备控制。
SPI 的典型应用场景
-
存储设备:Flash、EEPROM(如 W25Q 系列)。 -
传感器:加速度计、陀螺仪(如 MPU6050)、温湿度传感器。 -
显示设备:OLED 屏、LCD 控制器(如 SSD1306)。 -
通信模块:无线射频(RF)模块、以太网芯片。
与其他通信协议的对比
|
|
|
|
|
|
|
|---|---|---|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
总之,SPI 凭借高速、全双工的特性,在短距离、高带宽的芯片级通信中占据重要地位,是嵌入式系统中常用的接口之一。
🌻亲爱的读者们,今天的分享就到这里啦!如果今天的内容对你有启发
记得点亮右下角的“❤️”或转发给需要的朋友,让温暖传递的更远!
生活或许没有标准答案,但每一次【分享】和【点赞】,都是我们相遇的印记。你最近有哪些感悟或故事?欢迎留言区聊一聊~~~
你的认可,是我们深夜码字的充电桩🔋
明天见!保持好奇,永远鲜活~
🔍关注我们,不错过每一次相遇


扫码领取免费学习资料~~~
往期精彩部分

