当前位置: 首页 > news >正文

STM32CubeMX串口配置

STM32CubeMX串口配置

  • 一,Mode
    • 1,Asynchronous(异步模式)
    • 2,其他模式
    • 3,异步通信中的流控
  • 二,Configuration
    • 参数配置(Parameter Settings)
      • 1,Basic Parameters
      • 2,Advanced Parameters

在左边配置选项中选择Connectivity(通信),以串口1为例
在这里插入图片描述

一,Mode

串口的配置分为两大部分:Mode和Configuration,我们先介绍Mode部分
在这里插入图片描述
如果Mode选择Disable,那么串口对应的引脚就默认是普通的GPIO引脚

1,Asynchronous(异步模式)

一般情况下,我们使用的就是异步模式,也是我们常说的“UART“(其中这个A就表明异步模式比较常用),我在这里也只介绍异步模式

那么两台设备如何通过异步模式进行通信呢?
1,首先我们需要两根线传递数据:TX(发送) 和 RX(接收)
2,其次我们需要确保两者交流的速度(波特率)相同(一个发的快,另一个接的慢就飞飞了!)
3,然后我们还需要规定一帧数据的结构(这样两台设备可以默契的知道什么时候开始,什么时候停止,以及某一位数据的含义即解析数据):一个典型的数据帧如下
在这里插入图片描述
4,最后,我们的通信协议规定好了,但是串口怎么收发数据呢

串口“发送”数据的全过程:
数据首先被写入数据寄存器DR,硬件会立刻将DR中的数据搬到移位寄存器SR
SR会将数据1位1位(1bit1bit,1比特1比特)地发送到TX引脚,发送速度和发送顺序是什么样的呢?
顺序是从左到右:比如有一帧数据是一个起始位 + 8个数据位 + 停止位,串口会先发送起始位,然后是数据位0…最后是停止位
起始位(0) → 数据位0(0) → 数据位1(1) → 数据位2(0) → 数据位3(1)→ 数据位4(1) → 数据位5(0) → 数据位6(1) → 数据位7(0) → 停止位(1)
速度是:1 / 波特率 (秒)发送一位数据,也就是1秒发送波特率(数值大小)个bit
串口又是怎么根据波特率BaudRate大小得到发送速度的呢?
自己思考

2,其他模式

以下模式用到再说:
Synchronous
Single Wire (Half-Duplex)
Multiprocessor Communication
IrDA
LIN
SmartCard

3,异步通信中的流控

在串口RS232标准中,有流控模式
什么是流控?
避免发送方以太快的速度把数据丢给接收方,导致接收方来不及处理而发生丢帧。常见的流控方式分成两大类:
软件流控(XON/XOFF)
硬件流控(CTS/RTS,也就是RS-232 硬件流控)

为什么需要流控?
有流控的时候:接收方可以“告诉”发送方:“我准备好了,你再发”;或者“我快满了,先别发”,这样就不会出现“来不及读”而卡死或丢帧的情况。

以后用到流控时再仔细学习吧
在这里插入图片描述

二,Configuration

参数配置(Parameter Settings)

先介绍Parameter Settings选项
在这里插入图片描述

1,Basic Parameters

下面框中的分别是波特率,Word Length(包含数据位数 + 校验位位数),校验位位数,停止位位数
在这里插入图片描述
波特率 (Baud Rate):设置数据传输的速率,单位是比特每秒 (bps)。通信双方必须设置相同的波特率。

配置提示: 115200 是非常常用的波特率。选择时需考虑通信距离、线缆质量和对端设备能力。CubeMX 会根据APB时钟和选择的波特率计算分频值,并提示误差率。

数据位 (Word Length):
定义每个数据帧中包含的数据位数。
7 bits (+ Parity)
8 bits (+/- Parity)
9 bits (+/- Parity)

配置提示: 最常用的是 8 bits。选择 7 bits 通常用于 ASCII 传输。选择 9 bits 可用于多机通信地址帧或特定协议。注意 Word Length 包含 Parity 位(如果启用)。

停止位 (Stop Bits):
用于标记数据帧的结束。

配置提示: 标准异步通信通常使用 1 个停止位。2 个停止位提供更长的帧间隔,可能用于较慢或噪声较大的环境。其他选项用于 Smartcard 等特殊模式。

校验位 (Parity):
用于简单的数据错误检测。
None (无校验)
Even (偶校验)
Odd (奇校验)

配置提示: None (无校验) 最为常用。如果需要简单的错误检测,可以选择偶校验或奇校验,通信双方必须一致。注意启用校验位会占用 Word Length 中的一位。

2,Advanced Parameters

1,Data Direvtion:数据传输方向
决定串口既可以发又可以接收,仅仅接收,仅仅发送
在这里插入图片描述

2,过采样 (Over Sampling)
什么是过采样?
我们先回顾一下前面的波特率:如果波特率是115200,就表示1秒传输115200bit数据,就是1/115200s传输1个bit数据,每次只在每bit中间时刻采样一次,这是在标准波特率下
如果在16X过采样模式下,我们还是选择115200波特率,数据传输速度不变,但是,不是只采样1 次,而是16次以提高抗噪声能力和波特率精度

实际上我们仅用其中3次关键采样点:
第3、5、7次采样:用于确认起始位的下降沿(低电平)
其余采样:用于稳定性校验(防止噪声误触发)

配置提示: Over Sampling 16 是默认且常用的设置,提供较好的鲁棒性。在需要非常高的波特率(接近时钟频率极限)时,可以选择 Over Sampling 8,但这会降低抗噪声能力。

Advanced Parameters的应用:
接收传感器数据,并发送至上位机:Data Direction = Receive & Transmit
提高ADC精度:Over Sampling = 16x
更高的数据传输率 :降低过采样(8x),启用DMA
更高的抗干扰能力 :保持16x过采样,增加硬件滤波
低功耗模式 :减少过采样次数,使用硬件加速

问题可能原因解决方案
数据错误率高过采样不足提高至16x或32x
通信丢包未启用流控检查RTS/CTS或降低波特率
ADC读数不稳定电源噪声增加去耦电容

相关文章:

  • LeetCode[257]二叉树的所有路径
  • 【图像处理入门】3. 几何变换基础:从平移旋转到插值魔法
  • 基于开源AI大模型AI智能名片S2B2C商城小程序源码的销售环节数字化实现路径研究
  • 接口性能优化
  • MySql(九)
  • 达梦的TEMP_SPACE_LIMIT参数
  • Vue-过滤器
  • 【PhysUnits】15.6 引入P1后的左移运算(shl.rs)
  • java8集合操作全集
  • linux 1.0.7
  • 《深入解析SPI协议及其FPGA高效实现》-- 第一篇:SPI协议基础与工作机制
  • MySQL索引与性能优化入门:让查询提速的秘密武器【MySQL系列】
  • AI 的早期萌芽?用 Swift 演绎约翰·康威的「生命游戏」
  • [蓝桥杯]机器人塔
  • Day 41
  • HackMyVM-Art
  • 关于win10系统中环境变量path变成一行显示的问题
  • Target店铺应该如何入驻?
  • Python训练营打卡Day41(2025.5.31)
  • 软件技术如何赚钱
  • 网站黑白代码/搜狗站长平台打不开
  • 网站测试方法/搜索引擎优化的例子
  • 哪家公司做网站比较好/网络营销的方式与手段
  • 行业app开发公司/百度的关键词优化
  • 平阳手机网站制作/谷歌推广怎么做最有效
  • 有了源码怎么做网站/百度pc端网页版