一、引言
SPI(Serial Peripheral Interface)是一种高速、全双工、同步的通信总线,广泛应用于嵌入式系统中主设备与外设的通信。STM32CubeMX提供了图形化配置界面,简化了SPI的初始化流程。本文通过表格对比方式,详细解析各配置项的含义与差异。

二、SPI核心配置项对比解析
(一)工作模式(Mode)选择
| 模式选项 |
核心功能特点 |
适用场景 |
数据传输方向 |
| Disable |
禁用SPI功能,不进行任何通信操作 |
不需要使用SPI外设时 |
无 |
| Full-Duplex Master |
主设备模式,可同时发送和接收数据 |
大多数SPI通信场景(如控制Flash、显示屏) |
双向同步(MOSI+MISO同时工作) |
| Full-Duplex Slave |
从设备模式,可同时发送和接收数据 |
作为外设被主设备控制(如传感器模块) |
双向同步(依赖主设备时钟) |
| Half-Duplex Master |
主设备模式,同一时间只能发送或接收 |
资源受限的单向高速通信(如单向数据采集) |
单向(分时发送/接收) |
| Half-Duplex Slave |
从设备模式,同一时间只能发送或接收 |
简单外设的单向响应(如状态反馈) |
单向(依赖主设备时钟) |
| Receive Only Master |
主设备模式,仅接收数据不发送 |
仅需读取外设数据(如ADC采样数据) |
单向接收(仅MISO有效) |
| Receive Only Slave |
从设备模式,仅接收数据不发送 |
仅需接收指令的外设(如简单执行器) |
单向接收(依赖主设备时钟) |
| Transmit Only Master |
主设备模式,仅发送数据不接收 |
仅需向外设发送指令(如控制LED矩阵) |
单向发送(仅MOSI有效) |
(二)硬件NSS信号(Hardware NSS Signal)配置
| 配置选项 |
信号控制方式 |
优缺点对比 |
适用场景 |
| Disable |
禁用硬件NSS,需软件控制GPIO模拟片选 |
优点:引脚灵活;缺点:需手动控制时序 |
多从设备场景、引脚资源紧张时 |
| Hardware NSS Input Signal |
NSS作为输入信号(接收外部片选) |
优点:硬件自动响应;缺点:仅适用于从设备 |
从设备模式下,被其他主设备控制时 |
| Hardware NSS Output Signal |
NSS作为输出信号(主动控制片选) |
优点:硬件自动控制时序;缺点:引脚固定 |
主设备模式下,需快速切换从设备时 |
(三)基本参数(Basic Parameters)配置
| 参数项 |
可选值 |
功能说明 |
典型应用场景 |
| Frame Format |
Motorola / TI |
通信帧格式,Motorola为SPI标准格式 |
绝大多数SPI外设(默认选Motorola) |
| Data Size |
8 Bits / 16 Bits |
单次传输的数据位数 |
8位:通用外设(如Flash);16位:高精度ADC |
| First Bit |
MSB First / LSB First |
数据传输的起始位(高位优先/低位优先) |
几乎所有场景默认MSB First |
(四)时钟参数(Clock Parameters)配置
| 参数项 |
含义与作用 |
配置要点 |
对通信的影响 |
| Prescaler(预分频值) |
系统时钟分频系数(如2/4/8…) |
分频值越小,时钟频率越高 |
频率过高可能导致外设无法响应 |
| Baud Rate(波特率) |
实际通信速率(如18MHz、42MHz) |
需与外设支持的最大速率匹配 |
速率越高,传输效率越高但抗干扰性下降 |
| Clock Polarity(CPOL) |
Low(空闲低电平)/ High(空闲高电平) |
决定时钟信号的初始状态 |
需与外设的时钟极性一致 |
| Clock Phase(CPHA) |
1 Edge(一沿)/ 2 Edge(二沿) |
决定数据采样和传输的时钟边沿 |
与CPOL共同决定SPI模式(0~3) |
(五)高级参数(Advanced Parameters)配置
| 参数项 |
可选值 |
功能说明 |
配置建议 |
| CRC Calculation |
Enable / Disable |
启用/禁用CRC校验(数据完整性检查) |
对可靠性要求高时启用(如工业控制) |
| NSS Signal Type |
Software |
软件控制NSS时的信号类型(仅Disable硬件时可见) |
配合GPIO手动控制片选电平 |
| DMA Enable |
Tx / Rx / Both |
启用DMA传输(减轻CPU负担) |
大量数据传输时启用(如图像传输) |
三、SPI模式(CPOL+CPHA)对比表
| SPI模式 |
CPOL(时钟极性) |
CPHA(时钟相位) |
空闲时钟状态 |
数据采样边沿 |
数据传输边沿 |
| 模式0 |
0(Low) |
0(1 Edge) |
低电平 |
下降沿(二沿) |
上升沿(一沿) |
| 模式1 |
0(Low) |
1(2 Edge) |
低电平 |
上升沿(一沿) |
下降沿(二沿) |
| 模式2 |
1(High) |
0(1 Edge) |
高电平 |
上升沿(二沿) |
下降沿(一沿) |
| 模式3 |
1(High) |
1(2 Edge) |
高电平 |
下降沿(一沿) |
上升沿(二沿) |
四、配置步骤总结
- 选择SPI外设(如SPI1、SPI2)并启用
- 配置工作模式(根据主从角色和传输方向选择)
- 设置硬件NSS(复杂场景用软件模拟)
- 配置基本参数(数据位数、帧格式等按外设手册设置)
- 调整时钟参数(波特率不超过外设上限,模式匹配外设要求)
- 启用高级功能(如CRC、DMA,按需配置)
- 生成代码并在工程中调用HAL库函数实现通信
通过以上表格对比,可清晰掌握STM32CubeMX中SPI各配置项的差异与适用场景,配置时需严格匹配外设的数据手册要求,确保通信稳定。
所有评论(0)