STM32外设-串口UART

news2025/5/10 14:17:12

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.coloradmin.cn/o/2372364.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MCU存储系统架构解析

今天和大家分享一下MCU存储器层次结构的设计思路。这种分层存储架构通过整合不同特性的存储单元,能够很好地平衡性能与成本需求。 首先是寄存器层,它直接集成在CPU内核里,速度最快(纳秒级),但容量比较小&a…

Linux——MySQL基础

基础知识 连接服务器 mysql -h 127.0.0.1 -P 3306 -u root -p -h 指明登录部署了myqsl服务的主机 -P 指明访问的端口号 -u 指明用户 -p 指明登录密码(可以不填写) 什么是数据库 首先,数据库是分为服务端和客户端的: mysql是客户…

OpenGl实战笔记(2)基于qt5.15.2+mingw64+opengl实现纹理贴图

一、作用原理 1、作用:将一张图片(纹理)映射到几何体表面,提升视觉真实感,不增加几何复杂度。 2、原理:加载图片为纹理 → 上传到 GPU;为顶点设置纹理坐标(如 0~1 范围)&…

【计算机视觉】OpenCV实战项目: opencv-text-deskew:实时文本图像校正

opencv-text-deskew:基于OpenCV的实时文本图像校正 一、项目概述与技术背景1.1 核心功能与创新点1.2 技术指标对比1.3 技术演进路线 二、环境配置与算法原理2.1 硬件要求2.2 软件部署2.3 核心算法流程 三、核心算法解析3.1 文本区域定位3.2 角度检测优化3.3 仿射变换…

Java 23种设计模式 - 结构型模式7种

Java 23种设计模式 - 结构型模式7种 1 适配器模式 适配器模式把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。 优点 将目标类和适配者类解耦增加了类的透明性和复用性,将具体的实现封…

数据库(MySQL)基础

一、登录数据库 在linux系统中登录数据库的指令 mysql -h 127.48.0.236 -P 3306 -u root -p -h:填写IP地址,指明要连接的主机。如果不加该字段表示本地主机-P:填写端口号,指明进程。 如果不加该字段会使用默认的端口号。-u&…

Vue 2.0 详解全教程(含 Axios 封装 + 路由守卫 + 实战进阶)

目录 一、Vue 2.0 简介1.1 什么是 Vue?1.2 Vue 2.x 的主要特性 二、快速上手2.1 引入 Vue2.2 创建第一个 Vue 实例 三、核心概念详解3.1 模板语法3.2 数据绑定3.3 事件绑定3.4 计算属性 & 侦听器 四、组件系统4.1 定义全局组件4.2 单文件组件(*.vue …

依赖关系-根据依赖关系求候选码

关系模式R(U, F), U{},F是R的函数依赖集,可以将属性分为4类: L: 仅出现在依赖集F左侧的属性 R: 仅出现在依赖集F右侧的属性 LR: 在依赖集F左右侧都出现的属性 NLR: 在依赖集F左右侧都未出现的属性 结论1: 若X是L类…

uniapp-商城-47-后台 分类数据的生成(通过数据)

在第46章节中,我们为后台数据创建了分类的数据表结构schema,使得可以通过后台添加数据并保存,同时使用云函数进行数据库数据的读取。文章详细介绍了如何通过前端代码实现分类管理功能,包括获取数据、添加、更新和删除分类。主要代…

java-----------------多态

多态,当前指的是 java 所呈现出来的一个对象 多态 定义 多态是指同一个行为具有多个不同表现形式或形态的能力。在面向对象编程中,多态通过方法重载和方法重写来实现。 强弱类型语言 javascript 或者python 是弱类型语言 C 语言,或者 C…

【文档智能】开源的阅读顺序(Layoutreader)模型使用指南

一年前,笔者基于开源了一个阅读顺序模型(《【文档智能】符合人类阅读顺序的文档模型-LayoutReader及非官方权重开源》), PDF解析并结构化技术路线方案及思路,文档智能专栏 阅读顺序检测旨在捕获人类读者能够自然理解的…

Edu教育邮箱申请2025年5月

各位好,这里是aigc创意人竹相左边 如你所见,这里是第3部分 现在是选择大学的学科专业 选专业的时候记得考虑一下当前的时间日期。 比如现在是夏天,所以你选秋天入学是合理的。

STM32-TIM定时中断(6)

目录 一、TIM介绍 1、TIM简介 2、定时器类型 3、基本定时器 4、通用定时器 5、定时中断基本结构 6、时基单元的时序 (1)预分频器时序 (2)计数器时序 7、RCC时钟树 二、定时器输出比较功能(PWM) …

Modbus RTU 详解 + FreeMODBUS移植(附项目源码)

文章目录 前言一、Modbus RTU1.1 通信方式1.2 模式特点1.3 数据模型1.4 常用功能码说明1.5 异常响应码1.6 通信帧格式1.6.1 示例一:读取保持寄存器(功能码 0x03)1.6.2 示例二:写单个线圈(功能码 0x05)1.6.3…

对称加密算法(AES、ChaCha20和SM4)Python实现——密码学基础(Python出现No module named “Crypto” 解决方案)

文章目录 一、对称加密算法基础1.1 对称加密算法的基本原理1.2 对称加密的主要工作模式 二、AES加密算法详解2.1 AES基本介绍2.2 AES加密过程2.3 Python中实现AES加密Python出现No module named “Crypto” 解决方案 2.4 AES的安全考量 三、ChaCha20加密算法3.1 ChaCha20基本介…

【软件设计师:存储】16.计算机存储系统

一、主存储器 存储器是计算机系统中的记忆设备,用来存放程序和数据。 计算机中全部信息,包括输入的原始数据、计算机程序、中间运 行结果和最终运行结果都保存在存储器中。 存储器分为: 寄存器Cache(高速缓冲存储器)主存储器辅存储器一、存储器的存取方式 二、存储器的性…

WebRTC通信原理与流程

1、服务器与协议相关 1.1 STUN服务器 图1.1.1 STUN服务器在通信中的位置图 1.1.1 STUN服务简介 STUN(Session Traversal Utilities for NAT,NAT会话穿越应用程序)是一种网络协议,它允许位于NAT(或多重 NAT)…

Java版ERP管理系统源码(springboot+VUE+Uniapp)

ERP系统是企业资源计划(Enterprise Resource Planning)系统的缩写,它是一种集成的软件解决方案,用于协调和管理企业内各种关键业务流程和功能,如财务、供应链、生产、人力资源等。它的目标是帮助企业实现资源的高效利用…

Redis总结(六)redis持久化

本文将简单介绍redis持久化的两种方式 redis提供了两种不同级别的持久化方式: RDB持久化方式能够在指定的时间间隔能对你的数据进行快照存储.AOF持久化方式记录每次对服务器写的操作,当服务器重启的时候会重新执行这些命令来恢复原始的数据,AOF命令以redis协议追加保…

PMIC电源管理模块的PCB设计

目录 PMU模块简介 PMU的PCB设计 PMU模块简介 PMIC(电源管理集成电路)是现代电子设备的核心模块,负责高效协调多路电源的转换、分配与监控。它通过集成DC-DC降压/升压、LDO线性稳压、电池充电管理、功耗状态切换等功能,替代传统分…