一文搞懂UART通信协议

简介: UART(Universal Asynchronous Receiver/Transmitter,通用异步收发器)是一种双向、串行、异步的通信总线,仅用一根数据接收线和一根数据发送线就能实现全双工通信。典型的串口通信使用3根线完成,分别是:发送线(TX)、接收线(RX)和地线(GND),通信时必须将双方的TX和RX交叉连接并且GND相连才可正常通信

1、UART简介

UART(Universal Asynchronous Receiver/Transmitter,通用异步收发器)是一种双向、串行、异步的通信总线,仅用一根数据接收线和一根数据发送线就能实现全双工通信。典型的串口通信使用3根线完成,分别是:发送线(TX)、接收线(RX)和地线(GND),通信时必须将双方的TX和RX交叉连接并且GND相连才可正常通信,如下图所示:


1d7da801010645a78a4ddcdde969206a.jpeg


2、UART特性

UART 接口不使用时钟信号来同步发送器和接收器设备,而是以异步方式传输数据。发送器根据其时钟信号生成的位流取代了时钟信号,接收器使用其内部时钟信号对输入数据进行采样。

同步点是通过两个设备的相同波特率(UART和大多数串行通信一样,发送和接收设备需要将波特率(波特率是指信息传输到信道的速率)设置为相同的值。对于串行端口,设定的波特率将用作每秒传输的最大位数)来管理的。

如果波特率不同,发送和接收数据的时序可能会受影响,导致数据处理过程出现不一致。允许的波特率差异最大值为10%,超过此值,位的时序就会脱节。

692057ea92ad47f8a2e64eecf8f0e25d.png


下总结了关于UART必须了解的几点:


导线数量       3根(TX、RX和GND)

速度 1200、2400、4800、9600、19200、38400、57600、115200等

传输方式           全双工异步

最大主机数量          1

最大从机数量          1


3、UART协议帧

在 UART中,传输模式为数据包形式。数据包由起始位、数据帧、奇偶校验位和停止位组成。

df705104e0804a66987093395ddaecac.png


3.1、起始位

当不传输数据时, UART 数据传输线通常保持高电压电平。若要开始数据传输,发送UART 会将传输线从高电平拉到低电平并保持1 个时钟周期。

当接收 UART 检测到高到低电压跃迁时,便开始以波特率对应的频率读取数据帧中的位。

e32461dcc0fd44aabd76d12f9b78036d.png


3.2、数据位

数据帧包含所传输的实际数据。如果使用奇偶校验位,数据帧长度可以是5 位到 8 位。如果不使用奇偶校验位,数据帧长度可以是9 位。

在大多数情况下,数据以最低有效位优先方式发送。

40afc62e3564490cab5e5d87698aad64.png


3.3、奇偶校验位

奇偶性描述数字是偶数还是奇数。通过奇偶校验位,接收 UART判断传输期间是否有数据发生改变。电磁辐射、不一致的波特率或长距离数据传输都可能改变数据位。

校验位可以配置成 1 位偶校验或 1 位奇校验或无校验位。

接收UART 读取数据帧后,将统计数值为 1 的位,检查总数是偶数还是奇数。如果奇偶校验位为0 (偶数奇偶校验),则数据帧中的1或逻辑高位总计应为偶数。如果奇偶校验位为 1 (奇数奇偶校验),则数据帧中的1 或逻辑高位总计应为奇数。

当奇偶校验位与数据匹配时,UART 认为传输未出错。但是,如果奇偶校验位为0 ,而总和为奇数,或者奇偶校验位为 1 ,而总和为偶数,则UART 认为数据帧中的位已改变。

c0038275adcd46eab6dcce2f30a3aa90.png


3.4、停止位

为了表示数据包结束,发送 UART 将数据传输线从低电压驱动到高电压并保持1 到 2 位时间。

5cd44fa42fd54a5da2e0869443b45b36.png


4、UART通信步骤

第1步:数据从数据总线到发送器。


8913759ea4a6436bb055aec9f63ddf8a.png


第2步:发送 UART 将起始位、奇偶校验位和停止位添加到数据帧。

ff962cb857c9471b868b3c07284ae4bd.png


第3步:从起始位到结束位,整个数据包以串行方式从发送器送至接收 器 。

接收 UART 以预配置的波特率对数据线进行采样。

0f1c55c6db73474cb941f0655de206c6.png


第4步:接收 器 丢弃数据帧中的起始位、奇偶校验位和停止位。

fb9155d732c34a75b9c7d020b6fdad88.png


第5步:接收 器 将串行数据转换回并行数据,并将其传输到接收端的数据总线。

5ab5046de4b94b06b8e936318b388ab1.png


拓展学习:


1、一文搞懂SPI通信协议

https://blog.csdn.net/m0_38106923/article/details/124364676

2、一文搞懂I2C总线通信

https://blog.csdn.net/m0_38106923/article/details/123673285

3、 一文看懂Modbus协议

https://blog.csdn.net/m0_38106923/article/details/105285231

4、 一文搞懂PID控制算法

https://blog.csdn.net/m0_38106923/article/details/109545445

5、一文搞懂TCP的三次握手和四次挥手

https://blog.csdn.net/m0_38106923/article/details/108292454

6、一文搞懂图像二值化算法

https://blog.csdn.net/m0_38106923/article/details/115206093

7、 一文搞懂步进电机特性、原理及驱动器设计

https://blog.csdn.net/m0_38106923/article/details/109821221

8、 一文搞懂三级管和场效应管驱动电路设计及使用

https://blog.csdn.net/m0_38106923/article/details/107131879

9、ADI期刊-UART:了解通用异步接收器-发送器的硬件通信协议

 https://download.csdn.net/download/m0_38106923/86406349


相关实践学习
自建数据库迁移到云数据库
本场景将引导您将网站的自建数据库平滑迁移至云数据库RDS。通过使用RDS,您可以获得稳定、可靠和安全的企业级数据库服务,可以更加专注于发展核心业务,无需过多担心数据库的管理和维护。
Sqoop 企业级大数据迁移方案实战
Sqoop是一个用于在Hadoop和关系数据库服务器之间传输数据的工具。它用于从关系数据库(如MySQL,Oracle)导入数据到Hadoop HDFS,并从Hadoop文件系统导出到关系数据库。 本课程主要讲解了Sqoop的设计思想及原理、部署安装及配置、详细具体的使用方法技巧与实操案例、企业级任务管理等。结合日常工作实践,培养解决实际问题的能力。本课程由黑马程序员提供。
相关文章
|
内存技术
【HARDWARE】 --- SPI接口协议介绍与应用说明
【HARDWARE】 --- SPI接口协议介绍与应用说明
2867 3
|
6月前
|
人工智能 自然语言处理 网络安全
2026年阿里云部署OpenClaw(Clawdbot)快速接入钉钉保姆级教程
2026年,AI自动化办公与企业IM协作深度融合,OpenClaw(前身为Clawdbot、Moltbot)作为轻量级开源AI代理平台,凭借“自然语言指令驱动、多工具协同、零编程门槛”的核心优势,成为个人与企业解锁“AI+IM”协同办公的首选工具。它无需复杂操作,仅需输入口语化指令,就能自动完成文档整理、邮件处理、日程规划、跨平台数据同步等重复性工作,而阿里云推出的OpenClaw一键部署方案,彻底解决了传统部署流程繁琐、环境配置复杂的痛点,新手10分钟即可完成云端部署。
6882 4
|
4月前
|
人工智能 JSON BI
DeepSeek V4 来了!超越 Claude Sonnet 4.5,赶紧对接 Claude Code 体验一把
JeecgBoot AI专题研究 把 Claude Code 接入 DeepSeek V4Pro 的真实体验与避坑记录 本文记录我将 Claude Code 对接 DeepSeek 最新模型(V4Pro)后的真实体验,测试了 Skills 自动化查询和积木报表 AI 建表两个场景——有惊喜,也踩
10690 21
|
5月前
|
中间件 项目管理 芯片
Keil MDK(uVision5)完全指导手册(个人总结,篇幅有限)
本指南系统讲解Keil MDK5开发全流程:涵盖环境搭建、首个STM32项目(LED闪烁)、工程配置、断点调试与内存监视、编译优化、中间件集成(USB/文件系统)及常见问题排错,助力嵌入式开发者高效入门与进阶。(239字)
2694 2
|
机器学习/深度学习 数据采集 安全
防止交叉验证中的数据泄露:提升模型在实际环境中的性能
本文探讨了机器学习模型从开发到部署过程中可能出现的性能断崖问题,重点分析了**数据泄露**和**类别不平衡**两大主要原因。数据泄露可能源于预处理、特征工程或目标变量的不当操作,导致模型在测试阶段表现优异但实际应用中失效。同时,类别不平衡会使得常规交叉验证结果不可靠,需采用分层K折等方法应对。文章还介绍了通过Scikit-learn的Pipeline和ColumnTransformer防止数据泄露的最佳实践,并强调重采样技术(如SMOTE)应在数据划分后执行。最后,总结了构建可靠模型评估流程的核心原则,包括使用管道、分层验证及独立保留集等,帮助开发者构建在真实场景中性能稳定的模型。
667 56
防止交叉验证中的数据泄露:提升模型在实际环境中的性能
|
传感器 安全 Java
了解SENT协议及其应用
了解SENT协议及其应用
1309 1
|
Kubernetes Java API
软件版本号解读(语义化SemVer、日历化CalVer及标识符)
软件版本号解读(语义化SemVer、日历化CalVer及标识符)
775 3
软件版本号解读(语义化SemVer、日历化CalVer及标识符)
透彻理解 UART 通信的基本方法
透彻理解 UART 通信的基本方法
1415 0

热门文章

最新文章