news 2026/10/18 5:26:45

STM32学习 SPI通讯协议

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
STM32学习 SPI通讯协议

SPI(Serial Peripheral Interface)是一种由摩托罗拉(Motorola)公司开发的高速、全双工、同步串行通信协议。它主要用于短距离通信,常见于微控制器与传感器、存储器、显示屏等外设之间的连接。

SPI通讯协议

1. 核心特点

  • 全双工:数据可以同时发送和接收。

  • 同步:依靠时钟信号(SCK)来同步数据传输。

  • 主从架构:通常有一个主设备(Master)和一个或多个从设备(Slave)。

  • 四线制:标准 SPI 需要 4 根信号线(也有 3 线或 2 线的变体)。

  • 高速:速度通常比 I2C 和 UART 快得多,可达数十 MHz 甚至上百 MHz。

2. 四根信号线

信号线全称方向说明
SCKSerial Clock主 → 从时钟信号,由主设备产生,用于同步数据。
MOSIMaster Out Slave In主 → 从主设备发送数据,从设备接收。
MISOMaster In Slave Out从 → 主从设备发送数据,主设备接收。
SS/CSSlave Select / Chip Select主 → 从片选信号,低电平有效(通常),用于选中特定的从设备。

3. 工作原理

  1. 片选:主设备将目标从设备的SS/CS拉低,激活该从设备。

  2. 时钟:主设备产生SCK时钟信号。

  3. 数据交换:在时钟的驱动下,数据通过MOSI和MISO同时进行移位传输。通常采用移位寄存器机制,主从设备各有一个移位寄存器,数据在时钟边沿逐位交换。

  4. 结束:传输完成后,主设备将SS/CS拉高,释放从设备。

4. 时钟极性(CPOL)与时钟相位(CPHA)

SPI 有四种工作模式,由CPOL和CPHA决定:

模式CPOLCPHA说明
Mode 000时钟空闲为低,数据在第一个边沿(上升沿)采样。
Mode 101时钟空闲为低,数据在第二个边沿(下降沿)采样。
Mode 210时钟空闲为高,数据在第一个边沿(下降沿)采样。
Mode 311时钟空闲为高,数据在第二个边沿(上升沿)采样。

注意:主从设备必须配置相同的模式才能正常通信。

5. 多从设备连接方式

7. 常见应用

STM32中的SPI外设

通常SPI通过4个引脚与外部器件相连:

● MISO:主设备输入/从设备输出引脚。该引脚在从模式下发送数据,在主模式下接收数据。

● MOSI:主设备输出/从设备输入引脚。该引脚在主模式下发送数据,在从模式下接收数据。

● SCK:串口时钟,作为主设备的输出,从设备的输入

● NSS:从设备选择。这是一个可选的引脚,用来选择主/从设备。它的功能是用来作为“片选引脚”,让主设备可以单独地与特定从设备通讯,避免数据线上的冲突。从设备的NSS引脚可以由主设备的一个标准I/O引脚来驱动。一旦被使能(SSOE位), NSS引脚也可以作为输出引脚,并在SPI处于主模式时拉低;此时,所有的SPI设备,如果它们的NSS引脚连接到主设备的NSS引脚,则会检测到低电平,如果它们被设置为NSS硬件模式,就会自动进入从设备状态。当配置为主设备、 NSS配置为输入引脚(MSTR=1, SSOE=0)时,如果NSS被拉低,则这个SPI设备进入主模式失败状态:即MSTR位被自动清除,此设备进入从模式。

波特率发生器用于生成通信的同步时钟

NSS是片选信号 可以硬件自动控制,也可以使用软件控制。

数据寄存器对应两个缓冲区

一个用于写(发送缓冲)。写操作将数据写到发送缓冲区。
一个用于读(接收缓冲)。读操作将返回接收缓冲区里的数据。

移位寄存器
写入到发送缓冲区的数据,被送入到移位寄存器
按位通过MOSI把数据发送出去
按位把通过MIS0接收的数据存入到移位寄存器
接收数据完毕,数据被送入到接收缓冲区

寄存器配置

  • 独立片选:每个从设备有独立的 SS 线,主设备通过拉低对应 SS 来选中。这是最常用的方式。

  • 菊花链:从设备串联,数据依次传递。节省片选线,但速度较慢。

  • 6. 优缺点

  • 优点:

  • 全双工,速度快。

  • 协议简单,无起始/停止位,无地址帧,数据流连续。

  • 硬件实现简单,占用引脚少(相比并行总线)。

  • 缺点:

  • 没有硬件流控,也没有应答机制(ACK)。

  • 没有地址机制,多从设备需要额外的片选线。

  • 传输距离短,通常板级通信。

  • 没有标准规范,不同厂商的 SPI 可能有细微差异。

  • 存储器:EEPROM、Flash(如 W25Qxx)。

  • 传感器:加速度计、陀螺仪、温度传感器。

  • 显示器:OLED、TFT 屏。

  • 通信模块:以太网控制器、Wi-Fi 模块。

  • SD 卡(SPI 模式)。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/18 5:24:25

WebRTC ICE candidate属性详解:从优先级计算到连通性排查实战

1. 从一次线上事故说起:candidate属性为什么值得单独拎出来讲去年冬天,团队里一个刚转正的同学在群里发了一张截图,线上环境里 ICE 协商卡在checking状态整整四十秒,最后超时失败。日志里翻来覆去就是几行local candidate和remote…

作者头像 李华
网站建设 2026/10/18 5:23:06

用Python tkinter打造轻量SQLite可视化工具

写这个工具的时候,我其实是被一个重复到让人崩溃的场景逼出来的:明明只是想在 SQLite 里看几张表、改几条记录,却得打开一个笨重的通用数据库客户端,连接字符串配半天,界面把几十个用不上的表全列出来,想查…

作者头像 李华
网站建设 2026/10/18 5:21:13

GESP 2023年9月 买文具 题解|这题分支结构的坑一定要避开

今天继续刷 GESP 2023年9月 的真题。这道分支结构题属于「思路简单但细节多」的类型,很多同学代码写完了却过不了,问题基本都出在下面要讲的几个点上。 题目来源:ACGO A46076 | 2023年9月 一级赛事场次:2023年9月 一级…

作者头像 李华
网站建设 2026/10/18 5:19:27

千年私服游戏地图二进制解析工具readmap深度解析

简介:本资源是一款面向游戏服务端开发者与怀旧网游技术研究者的「千年」MMORPG地图转换工具包,聚焦服务端地图数据解析与格式适配问题,适用于服务器运维、地图定制开发及经典游戏逆向分析等场景。压缩包共10个文件,含3个典型map地…

作者头像 李华
网站建设 2026/10/18 5:19:07

airllm:把大模型推理门槛降到普通电脑的轻量框架

先放下手里的显卡评测文章,聊聊这两天折腾出来的一个很有点意思的推理框架,名字叫 airllm。如果你手头只有一台普普通通的笔记本、迷你主机,或者哪怕是配置不算太夸张的安卓平板,却想跑一跑那些动辄几十亿参数的大语言模型&#x…

作者头像 李华