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

STM32外设-串口UART

STM32外设-串口UART

  • 一,串口简介
  • 二,串口基础概念
    • 1,什么是同步和异步/UART与USART对比
    • 2,串行与并行
    • 3,波特率 (Baud Rate)
    • 4,数据帧 (Data Frame)
    • 5,TX 和 RX
  • 三,硬件连接
    • 1,usb转ttl模块
    • 2,dap下载器
  • 四,超时解析法
    • 1,数据解析的方法
    • 2,超时解析法

一,串口简介

如果想让单片机和电脑,或者和其他设备"交流",该怎么办呢?
UART 就像是设备之间的一条电话线,专门用来互相传递信息。通过它,单片机可以把传感器数据发送给电脑显示,电脑也可以给单片机发送指令来控制硬件。

UART(Universal Asynchronous Receiver/Transmitter)即通用异步收发器 ,USART(Universal Synchronous Asynchronous Receiver/Transmitter)即通用同步异步收发器
UART 只支持异步通信模式;USART 功能更丰富,既支持同步通信也支持异步通信
UART 仅能进行异步通信,依靠约定波特率来保证收发双方同步 ;USART 除异步模式外,还支持同步模式,同步模式下需要同步时钟信号(如 STM32 单片机中的 USART_CK )来实现更精确的数据传输同步 。

二,串口基础概念

1,什么是同步和异步/UART与USART对比

UART(Universal Asynchronous Receiver/Transmitter)即通用异步收发器USART(Universal Synchronous Asynchronous Receiver/Transmitter)即通用同步异步收发器
UART 只支持异步通信模式USART 功能更丰富,既支持同步通信也支持异步通信
异步通信,依靠约定波特率来保证收发双方同步USART 除异步模式外,还支持同步模式,同步模式下需要同步时钟信号(如 STM32 单片机中的 USART_CK )来实现更精确的数据传输同步 。

2,串行与并行

串行 (Serial): UART 就是这种方式,数据一位一位地在单根线上发送。
优点:省线,适合长距离;
缺点:速度相对较慢。

并行 (Parallel): 数据同时在多根线上发送。
优点:速度快;
缺点:需要更多线,成本高,不适合长距离。

3,波特率 (Baud Rate)

波特率(Baud rate),是对符号传输速率的一种度量 ,单位为波特(Bd )。它表示单位时间(每秒)内通过信道传输的码元个数

波特率就好比两个人打电话时说话的速度。你说话快,对方也要能听得快;你说话慢,对方也要能听得慢。只有双方速度(波特率)约定一致,才能正确理解对方的信息。

码元:是通信中携带数据信息的信号单元,是数字通信中对数字信号进行调制编码后的信号表示形式。在不同的调制方式下,一个码元可以携带不同数量的比特信息。例如,在四进制调制中,一个码元可以表示 2 个比特的信息;在八进制调制中,一个码元可以表示 3 个比特的信息。
比特:即二进制位,是计算机中数据存储和处理的基本单位,只有 0 和 1 两种状态。比特是信息的最小单位,用于表示数据的二进制值。
常见的波特率有 9600, 115200 等,单位是 Bd

4,数据帧 (Data Frame)

为了确保数据正确传输,UART 通信时会把数据打包成一个个"数据帧"来发送。就像写信需要信封、地址、邮票一样,数据帧也有固定格式。

一个典型的数据帧通常包含:
起始位 (Start Bit): 标志着一个新数据帧的开始,通常是低电平(逻辑 0)。
数据位 (Data Bits): 这才是我们要传输的真正数据,通常是 5 到 8 位。
校验位 (Parity Bit) (可选): 用于检查数据在传输过程中是否出错(奇校验、偶校验或无校验)。
停止位 (Stop Bit): 标志着数据帧的结束,通常是高电平(逻辑 1),可以是 1 位、1.5 位或 2 位。
在这里插入图片描述

重要:通信双方必须约定好相同的数据帧格式(数据位、校验位、停止位),否则就无法解析数据。

5,TX 和 RX

UART 通信至少需要两根线:

TX (Transmit): 发送数据线。设备的 TX 连接到另一个设备的 RX。
RX (Receive): 接收数据线。设备的 RX 连接到另一个设备的 TX。

TX 要连接对方的 RX,RX 要连接对方的 TX,交叉连接,就像打电话一样,你的话筒对着别人的听筒。
通常还需要一根 GND (Ground) 线,即地线,用来统一双方的参考电平(两个设备不是同一电源),确保信号稳定。

三,硬件连接

理论讲完了,我们来看看实际怎么连接。

1,usb转ttl模块

最常见的场景是将单片机(比如 STM32)和电脑通过 USB 转 TTL 模块连接起来。

  1. 找到单片机上的 UART 引脚: 通常在开发板原理图或丝印上会标明 UART1_TX, UART1_RX 等。不同单片机可能叫 USART、SCI 等,但原理类似。
  2. 准备 USB 转 TTL 模块: 这是一个小模块,一边是 USB 口插电脑,另一边引出 TXD, RXD, GND, VCC 引脚。
  3. 连接:
    单片机的 TX 连接到 USB 转 TTL 模块的 RXD
    单片机的 RX 连接到 USB 转 TTL 模块的 TXD
    单片机的 GND 连接到 USB 转 TTL 模块的 GND
    (可选)如果模块需要供电,根据情况连接 VCC。
  4. 插入电脑: 将模块的 USB 口插入电脑。电脑会识别到一个虚拟串口(COM口)。

注意: 一定要交叉连接 TX 和 RX!GND 必须连接!
连接好后,就可以在电脑上使用串口助手软件(如 XCOM、Putty 等)来收发数据了。

2,dap下载器

连接方法同上

因为我的板子上有ch340模块,ch340是usb转串口芯片,电脑的usb接口可以通过ch340连接到STM32
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

四,超时解析法

1,数据解析的方法

好了,现在硬件连上了,单片机也配置好了 UART(这部分通常由 STM32CubeMX 或类似工具生成初始化代码),数据源源不断地通过 RX 线进来了。但问题是:我怎么知道一帧完整的数据什么时候结束呢?

比如,电脑发送了 “Hello” 这个字符串,单片机是一个字节一个字节接收的(‘H’, ‘e’, ‘l’, ‘l’, ‘o’)。单片机怎么知道收到 ‘o’ 之后就表示 “Hello” 发送完了,而不是后面还有其他字符呢?

这就是数据解析要解决的问题。方法有很多,比如:

  1. 固定长度: 双方约定好每次都发送固定长度的数据,比如每次 10 个字节。收满 10 个字节就算一帧。
  2. 特定结束符: 双方约定好用一个特殊的字符或字符串作为结束标志,比如每次发送都以回车换行符 \r\n 结尾。收到这个标志就算一帧结束。
  3. 超时解析法: 利用数据传输的间歇时间来判断。如果两个字节之间的时间间隔超过某个阈值(比如 10ms),就认为上一帧数据已经结束了。

2,超时解析法

超时解析法 是非常常用的一种方法,尤其适合那些数据长度不固定,且发送方会自然停顿(比如我们通过串口助手手动发送数据),这时可以用超时解析法,当单片机超过一定时间没有接收到数据时,接收完毕,具体在串口接收讲解

http://www.xdnf.cn/news/352441.html

相关文章:

  • 项目高压生存指南:科学重构身体与认知系统的抗压算法
  • 计算机二级WPS Office第三套电子表格
  • 排序算法-插入排序
  • Linux快速入门
  • 排序算法-归并排序
  • 在线caj转换word
  • 安全核查基线-2.nfslock服务
  • 密码学--AES
  • 解密火星文:LeetCode 269 题详解与 Swift 实现
  • Uskin阵列式三轴力触觉传感器:驱动机器人智能的触觉数据专家
  • 达梦、PostgreSQL数据库讲json解析成临时表(json_table函数的使用)
  • HunyuanCustom, 腾讯混元开源的多模态定制视频生成框架
  • PostgreSQL 的 pg_advisory_lock 函数
  • 输入顶点坐标输出立方体长宽高的神经网络
  • Microsoft Azure DevOps针对Angular项目创建build版本的yaml
  • 【MySQL】存储引擎 - ARCHIVE、BLACKHOLE、MERGE详解
  • 电机密集型工厂环境下的无线通信技术选型与优化策略
  • Azure资源创建与部署指南
  • 嵌入式培训之C语言学习完(十七)结构体、共用体、枚举、typedef关键字与位运算
  • 嵌入式openharmony标准系统中GPIO口控制详解
  • rust-candle学习笔记11-实现一个简单的自注意力
  • 前端工程化和性能优化问题详解
  • Vue3 中 ref 与 reactive 的区别及底层原理详解
  • fakebook
  • 【Linux】深入拆解Ext文件系统:从磁盘物理结构到Linux文件管理
  • 在企业级项目中高效使用 Maven-mvnd
  • 2025-05-10-FFmepg库裁切有水印的视频
  • docker 日志暴露方案 (带权限 还 免费 版本)
  • 企业如何将钉钉付款单高效集成到金蝶云星空?
  • 高频微服务面试题总结