【STM32入门】一文搞懂串口通信:波特率、数据位与停止位详解 【STM32入门】一文搞懂串口通信波特率、数据位与停止位详解前言在嵌入式开发中串口UART是最常用、最基础的调试和通信接口。很多新手在使用 STM32 进行串口通信时经常会遇到乱码、丢包或者无法接收数据的问题。这通常是因为对串口的时序和参数配置理解不够透彻。今天我们就结合经典的教程笔记来拆解一下串口通信中最核心的几个概念波特率、起始位、数据位、校验位和停止位。 什么是串口通信简单来说串口通信就是设备之间“排队”传输数据的一种方式。它不需要时钟线同步异步全靠双方约定好的规则来收发数据。这个规则就是我们常说的帧格式。一个标准的 UART 数据帧通常包含以下几个部分空闲状态起始位数据位校验位可选停止位下面我们逐一分析这些关键参数。 核心参数详解1. 波特率 (Baud Rate)定义衡量串口通信速率的指标单位是 bps (bits per second)。通俗理解就是每秒钟能传输多少个二进制位0或1。常见数值9600, 115200, 921600 等。⚠️ 注意通信双方的波特率必须完全一致如果发送方是 115200接收方是 9600收到的绝对是一堆乱码。2. 起始位 (Start Bit)电平状态固定为低电平(Logic 0)。作用它是数据帧的“发令枪”。当线路从空闲的高电平跳变到低电平时接收方就知道“嘿有新数据要来了”从而开始准备接收后续的数据位。3. 数据位 (Data Bits)定义这是真正承载有效信息的部分。长度通常配置为8位(1个字节)也可以配置为 7位 或 9位。传输顺序低位先行 (LSB First)。例如要发送十六进制0x01(二进制0000 0001)线上会先传最右边的1最后传最左边的0。电平表示高电平 1低电平 04. 校验位 (Parity Bit) —— 可选作用用于简单的错误检测。原理根据数据位中“1”的个数来决定这一位是0还是1。奇校验保证整个数据含校验位中“1”的个数是奇数。偶校验保证“1”的个数是偶数。无校验现代通信中常用因为效率更高可靠性交给上层协议如TCP/IP处理。5. 停止位 (Stop Bit)电平状态固定为高电平(Logic 1)。作用标志着一个数据帧的结束。同时它也为下一个数据帧的起始位提供缓冲时间。长度可以是 1位、1.5位 或 2位。通常情况下配置为1位即可满足绝大多数需求。 一图看懂时序逻辑(此处建议插入一张串口波形图如下描述)想象一条示波器上的波形线平时线路保持高电平空闲。开始突然拉低起始位。传输高低电平交替变化数据位低位在前。结束重新拉高并保持一段时间停止位。 避坑指南在实际使用 STM32 CubeMX 或寄存器配置串口时请务必检查以下几点TX/RX 接反了吗也就是 A 设备的 TX 接 B 设备的 RX反之亦然。共地了吗两个板子如果不共地GND相连电平参考点不同通信也会失败。参数对齐了吗再次强调波特率、数据位、停止位、校验位这四个参数收发双方必须一模一样。最常用的“黄金组合”是115200-8-N-1(即波特率1152008位数据无校验1位停止位)。 总结串口通信虽然古老但依然是嵌入式工程师手中的瑞士军刀。理解了上述的时序图和参数含义你就掌握了排查串口问题的基本功。下次再遇到乱码不妨先用逻辑分析仪抓个波形看看问题往往迎刃而解觉得有用的话欢迎点赞收藏我们下期见标签#STM32 #嵌入式 #串口通信 #UART #单片机 #电子工程 #编程基础