CubeMax配置串口通讯
串口基础知识
问:什么是串口通讯?
答:
串口通讯(Serial Communication)是一种按位(bit)逐次发送和接收数据的通信方式,仅需少量信号线(如 TX、RX、GND)即可实现设备间数据传输。
特点:
-
异步传输:无需共享时钟信号(CLK),依靠波特率(Baud Rate)同步。
-
数据帧结构:由起始位(Start Bit)、数据位(5-9 bit)、校验位(可选)和停止位(Stop Bit)组成。
-
简单可靠:适合低速、长距离通信(如工业控制、传感器数据采集)。
问:串口通讯协议有哪些?
答:
串口通信协议可分为物理层标准(硬件接口+电平规范)和协议层规范(数据帧格式+校验规则)两类。
1. 物理层标准(硬件接口+电平规范)
标准 | 电平特性 | 传输方式 | 传输距离 | 典型应用 |
---|---|---|---|---|
TTL | 0V(逻辑0) / 3.3V或5V(逻辑1) | 单端信号 | <1m | 单片机、嵌入式设备 |
RS-232 | ±3V~±15V(逻辑1:-3V~-15V,逻辑0:+3V~+15V) | 单端信号 | <15m | 旧电脑串口、工业设备 |
RS-485 | 差分信号(A/B线电压差表示逻辑) | 差分信号 | ≤1200m | 工业自动化(Modbus) |
CAN | 差分信号(CAN_H/CAN_L) | 差分信号 | ≤40m(1Mbps) | 汽车电子、工业控制 |
2. 协议层规范(数据帧格式+校验规则)
协议 | 传输方式 | 特点 | 典型应用 |
---|---|---|---|
UART | 异步 | 无时钟信号,需约定波特率 | 单片机调试、传感器 |
USART | 同步/异步 | 比UART多同步模式(如SPI) | 高速通信(如STM32) |
Modbus | 基于UART/RS-485 | 主从架构,支持多设备 | 工业自动化 |
CAN协议 | 同步(带位仲裁) | 多主机、错误检测、高可靠 | 汽车电子 |
问:RS232、USART、UART、CAN、RS485的区别?
答:
特性 | UART | USART | RS-232 | RS-485 | CAN |
---|---|---|---|---|---|
传输方式 | 异步 | 同步/异步 | 异步 | 异步/同步 | 同步 |
电平标准 | TTL(0V/3.3V/5V) | TTL | ±3V~±15V | 差分(±1.5V~±5V) | 差分(±2V) |
通信距离 | <1m(TTL) | <1m(TTL) | <15m | ≤1200m | ≤40m(1Mbps) |
抗干扰 | 弱 | 中 | 中 | 强 | 极强 |
拓扑结构 | 点对点 | 点对点 | 点对点 | 多点(总线) | 多点(总线) |
典型应用 | 调试接口 | 高速通信 | 旧电脑外设 | 工业Modbus | 汽车电子 |
总结:
-
UART/USART:协议层,定义数据格式(USART支持同步)。
-
RS-232/RS-485:物理层,定义电平与接口(RS-485更先进)。
-
CAN:高可靠总线协议,适用于复杂环境。
补充关键点
-
波特率(Baud Rate):每秒传输的符号数(如9600、115200bps),需收发双方一致。
-
校验方式:奇校验、偶校验、无校验,用于检测数据错误。
-
全双工 vs 半双工:
-
全双工(如UART):TX、RX可同时收发。
-
半双工(如RS-485):同一时间只能发送或接收。
-
以STM32F103VGT6为例,用STM32CubeMX配置串口
基础配置:
1. 高速时钟配置成外部晶振
2.Debug模式选择Serial Wire
3.时基资源选择 TIM5(如果使用Free RTOS,否则默认Systick即可)
其中RCC的三个操作的含义是
1. Master Clock Output 1/2 的含义
作用:
Master Clock Output(MCO)引脚允许微控制器将内部时钟信号(如HSE、HSI、PLL等)输出到外部设备,例如:
1.为其他芯片(如传感器、通信模块、音频编解码器)提供同步时钟。
2.调试时监测内部时钟频率
2. Audio Clock Input (I2S_CKIN) 的含义
作用:这是用于音频接口(I2S协议)的外部时钟输入引脚,允许外部音频设备(如CODEC)提供主时钟信号,确保音频数据传输的同步性。
2. 何时选择 Master Clock Output?
需要选择的情况:
1.外部设备需要时钟同步:例如,连接外部ADC、DAC、FPGA或其他需要精确时钟的器件。
2.多设备时钟共享:避免为每个设备单独设计时钟电路,简化硬件设计。
3.调试或测试:通过输出内部时钟到示波器,验证时钟频率是否正确。
无需选择的情况:
1.外部设备自带振荡器(如晶振)或不需要主时钟同步。
2.系统无时钟共享需求,或仅使用内部时钟。
4.何时选择 Audio Clock Input (I2S_CKIN)
1.使用外部音频设备(如数字麦克风、音频编解码器)且需由外部提供时钟时启用。
2.内部时钟无法满足音频精度要求(如高保真音频需低抖动时钟)
串口配置
UART和USART有区别,所以在CubeMX上配置时,UART相较USART的模式选项,少了一个SmartCard,同时少了一个RS232硬件协议的选择.
通信模式(Mode)选项介绍:
1、Asynchronous(异步模式)
含义:数据以不定时的方式传输,依赖起始位和停止位同步,无需共享时钟信号(如UART)。
作用:简化硬件设计,适应不同速率的设备通信。
何时使用:
常见的串口通信(如调试日志、传感器数据读取)。
设备间时钟不同步或距离较远(如GPS模块与MCU)。
2、Synchronous(同步模式)
含义:数据通过共享时钟信号(如SCLK)严格同步传输(如SPI、I2C)。
作用:提高传输速率和可靠性。
何时使用:
高速或实时性要求高的场景(如显示屏刷新、高速ADC采样)。
主从设备需严格同步(如EEPROM读写)。
3、Single Wire (Half-Duplex)(单线半双工)
含义:单根线分时双向传输数据,同一时间只能发送或接收。
作用:节省引脚资源。
何时使用:
引脚有限的场景(如单总线协议DS18B20温度传感器)。
4、Multiprocessor Communication(多处理器通信)
含义:支持多个设备共享总线,通过地址识别目标设备。
作用:实现一主多从的通信架构。
何时使用:
多个MCU或外设需共用同一总线(如工业控制网络)。
5、IrDA(红外通信)
含义:通过红外光传输数据,需编解码模块。
作用:无线短距离通信。
何时使用:
红外遥控、医疗设备(如血氧仪)。
6、LIN(局域互联网络)
含义:低成本车载通信协议,单线传输。
作用:替代复杂CAN总线用于简单控制。
何时使用:
汽车电子中的次级网络(如车窗控制、座椅调节)。
7、SmartCard(智能卡模式)
含义:支持ISO7816标准的智能卡接口。
作用:安全身份验证或支付。
何时使用:
SIM卡、银行卡读卡器。
硬件流控(Hardware Flow Control)
1、Disable(禁用流控)
含义:不启用硬件流控信号(CTS/RTS)。
作用:简化接线,适用于低速率或可靠环境。
何时使用:
短距离通信或波特率较低(如9600bps以下)。
设备间缓存足够(如MCU与PC串口调试)。
2、CTS Only(仅清除发送)
含义:仅使用CTS信号,接收方控制发送方数据流。
作用:防止接收方缓冲区溢出。
何时使用:
单向大数据量传输(如GPS模块持续输出数据)。
3、RTS Only(仅请求发送)
含义:仅使用RTS信号,发送方请求接收方准备。
作用:确保接收方就绪后再发送数据。
何时使用:
接收方处理能力有限(如低速MCU接收高速数据)。
4、CTS/RTS(全硬件流控)
含义:同时启用CTS和RTS信号,双向控制数据流。
作用:避免数据丢失,提高高波特率下的可靠性。
何时使用:
高速通信(如115200bps以上)或噪声环境(如工业现场)。
设备间处理速度差异大(如MCU与4G模块通信)。
总结
①通信模式选择:
根据协议要求(如UART/SPI)、设备数量(单设备/多设备)、传输方向(全双工/半双工)决定。
②硬件流控选择:
根据波特率、传输距离、设备缓存能力决定是否启用CTS/RTS。
典型场景:
异步+禁用流控:普通串口调试。
同步+全流控:高速SPI连接ADC。
LIN模式:汽车电子控制。
选择USART3的Asynchronous(异步模式)模式
一、参数配置

1.波特率的数值是自己输入
2.字长是选择的,8字长或9字长
3.奇偶校验处可以选择 无 、Even(奇)、Odd(偶)
4.停止位可以选择1、2位停止位
5.数据方向则是三个选项:收发、仅收、仅发
6.过样率(采样率):16 Samples 或者 8 Samples。其功能是选择每bit的采样次数,8就是每bit采样8次,16同理。高采样则数据准,但是传输数据会慢。
在CubeMX中,选择 16x Oversampling
可显著降低115200bps下的误码率。
用户常量则是自定义宏
添加常量:
在界面点击 add
→ 输入 NAME
和 VALUE
(如 PWM_FREQUENCY 1000
)。
生成代码:
工具会在 main.h
或 stm32xxxx_hal_conf.h
中生成:
#define PWM_FREQUENCY 1000
NVIC设置(嵌套 向量 中断 控制 设置)
勾选上Enabled,也就是使能中断,而具体参数需要看到System Core中的NVIC进行配置抢占优先级(Preemption Priority)和响应优先级(Sub Priority)