UART 协议规范

news/2026/1/17 23:48:52/文章来源:https://www.cnblogs.com/linhaostudy/p/19497405

1. Uart介绍

通用异步收发传输器(Universal Asynchronous Receiver/Transmitter),通常称为UART,是一种异步收发传输器,是电脑硬件的一部分。它将要传输的资料在串行通信与并行通信之间加以转换。作为把并行输入信号转成串行输出信号的芯片,UART 通常被集成于其他通讯接口的连上。

UART 是一种通用串行数据总线,用于异步通信。该总线双向通信,可以实现全双工传输和接收。在嵌入式设备中,UART 用于主机与辅助设备通信,如汽车音与外接AP 之间的通信,与PC 机通信包括与监控调试器和其它器件,如EEPOM通信。

1.1 通信协议

UART作为异步串口通信协议的一种,工作原理是将传输数据的每个字符一位接一位地传输。 其中各位的意义如下:

  • 起始位:先发出一个逻辑”0”的信号,表示传输字符的开始。
  • 数据位:紧接着起始位之后。数据位的个数可以是5、6、7、8等,构成一个字符。通常采用ASCII码。从最低位开始传送,靠时钟定位。
  • 奇偶校验位:数据位加上这一位后,使得“1”的位数应为偶数(偶校验)或奇数(奇校验),以此来校验数据传送的正确性 。
  • 停止位:它是一个字符数据的结束标志。可以是1位、1.5位、2位的高电平。

由于数据是在传输线上定时的,并且每一个设备有其自己的时钟,很可能在通信中两台设备间出现了小小的不同步。 因此停止位不仅仅是表示传输的结束,并且提供计算机校正时钟同步的机会。适用于停止位的位数越多,不同时钟同步的容忍程度越大,但是数据传输率同时也越慢。

  • 空闲位:处于逻辑“1”状态,表示当前线路上没有数据传送。

Uart传输数据如图2-1所示:

1

2

1.2. 不同的物理层实现

由于UART协议层的输入是逻辑0/1信号,而逻辑0/1信号在物理层可以通过不同的电平标准来区分。针对不同的通讯需求,便可以使用不同的物理层实现。例如简单的板内通讯,或者常见的设备调试场景,使用简单的LVTTL/TTL电平即可在两个设备间进行UART协议通讯。

3

通用的串口则使用的是RS232电平,可以增加传输距离,并且抵抗一定程度的信号干扰。付出的成本则是在物理层需要对应的电平转换芯片来实现,发送端需要将内部的高低电平信号转换成电压更高的+/-电压信号,接收端需要将+/-电压信号转换成内部的高低电平信号。

在工业通讯的场景下,为了进一步提高传输距离,以及增强信号的可靠性,一般会采用RS485的电平标准。在发送端将普通的高低电平信号转换成一对差分信号,在接收端将差分信号再转换成普通的高低电平信号。另外,RS485允许总线上连接多达128收发器,而TTL或者RS232则是点对点的连接。

2. 协议规范

2.1. UART帧结构

在上一节的介绍中,我们通过璞石示波器观察了实际的UART波形,那么这个波形到底是怎么被准确的识别成字符‘D‘,而不是其它内容的呢?这就涉及到UART协议帧结构的定义。如图 2‑1所示:

1

当两个设备需要通过UART协议进行通讯时,它们需要同时约定好以下内容:

  • 每一位信号的时间长度T(波特率 = 1/T)
  • 帧结构中每一项的具体位数
  • 是否有校验位,以及校验位的机制(奇/偶/..)

有了这些约定,接收设备只需要等待起始位的到来,再对之后的波形进行固定间隔的采样即可获得传输的具体信息。以字符‘D‘的波形为例,其解析过程如图 2‑2所示:

4

2.2 波特率

导线 2
速度 9600、19200、38400、57600、115200、230400、460800、921600、1000000、1500000
传输方法 异步
最大主机数 1
最大从机数 1

波特率是UART协议,或者说所有异步串行协议,非常重要的一个概念,即单位时间内(1秒)可表示的bit位个数,或者也可以表述为bit位宽的倒数。例如一个波特率为115200的UART波形表示1秒可容纳115200个bit位,也就是说每一位bit数据占大约8.68uS的时长。

1

​ 图 2‑3 波特率的定义

​ UART等异步串行协议,为了简化信号物理连接,降低通讯成本,一般只有一根信号线,无法同时传输数据和时钟信号。收/发设备为了正确解析波形就需要在相同的波特率设置下。而相同的波形使用不同的波特率获取的信息可能会完全不同。对于接收设备来讲,只有起始位可以作为一帧数据的同步点,其它数据都是通过波特率来确定具体的取样位置。

还是以字符‘D’的波形为例,如图 2‑4所示,如果用错误的波特率接收,就可能会得到完全错误的数据信息。

2

​ 图 2‑4 波特率错误

2.3 空闲位

设备之间不传输数据时以持续的高电平表示空闲。空闲位持续时间越长,两个数据帧间隔也越长,单位时间传输的数据就越少。

3

​ 图 2‑5 空闲位

2.4 起始位

UART接收端会一直检测信号线上的电平变化,开始传输数据时,发送端将信号线从高电平拉到低电平结束空闲状态,并保持一个bit位的时长。接收器检测到高低电平转换时,开始接收信号。

4

​ 图 2‑6 起始位

2.5 数据位

数据位包含传输的实际数据,如果使用了奇偶校验,那么数据位长为5~8 bits,如果没有使用奇偶校验,则位长为5~9 bits。在一般情况下,数据位为 8 bits,数据首先从最低有效位开始发送,高位在后。

5

​ 图 2‑7 数据位

2.6 校验位

校验位可以用来提高传输的可靠性。如果信号在传输过程中因为干扰而导致某些位置的电平产生错误,通过计算接收的数据和校验位是否匹配即可判断数据是否有传输错误,从而给应用层提供有效信息来决定接受/丢弃对应的数据。

6

​ 图 2‑8 校验位

2.1.6. 停止位

停止位表示一帧数据的结束,实际信号是一段时间的高电平。停止位的时间长短可以设置为1、1.5或者2bits的停止位。大部分情况使用1bit的停止位。

因为UART是一个异步协议,每一帧的开头可以用跳变沿来同步,但是停止位只能通过波特率来计算相对位置,如果在停止位的位置识别到一个低电平,则会产生帧错误。在通讯过程中,为了减少波特率的误差导致的问题,可以设置不同的停止位长度来适配。

1

​ 图 2‑9 停止位

3. UART传输步骤

第一步:发送UART从数据总线并行接收数据。

1

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

2

第三步:从起始位到结束位,整个数据包以串行方式从发送UART送至接收UART。接收UART以预配置的波特率对数据线进行采样。

3

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

4

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

5

4. UART 分频及波特率的关系

4.1 波特率计算公式

绝大多数 UART 的波特率都是由 输入时钟 + 分频器 生成的。

Baudrate = Fclk / (Oversample × Divider)

Fclk:UART 模块输入时钟

Oversample:过采样倍数(常见 16,也有 8、4)

Divider:分频系数(整数或整数+小数)

4.2 分频器类型

纯整数分频(最常见、最差精度)

Divider = round(Fclk / (Oversample × Baud))

生成的真实波特率:

Baud_real = Fclk / (Oversample × Divider)

特点

  • 实现简单
  • 误差可能较大
  • 对低波特率友好,对高波特率不友好

整数 + 小数分频(Fractional Divider)

常见形式:

Divider = Integer + Fraction

例如:

  • 8.25
  • 26 + 3/16
  • 52 + 1/8

PL011 示例:

Baud = Fclk / (16 × (IBRD + FBRD / 64))

特点

  • 波特率精度大幅提升
  • 成本略高(需要小数累加器或调制器)

小数调制(NCO / DDS 型)

Baud = Fclk × N / 2^k
  • 本质是数控振荡器
  • 精度极高
  • 常用于高速 UART / 调试串口

4.3 波特率误差的定义

Error (%) = (Baud_real - Baud_target) / Baud_target × 100%

4.4 UART 能容忍的最大误差

原因

UART 是 异步通信,靠起始位对齐,之后靠本地时钟采样。

理论极限(8N1)

  • 一帧:
    1 start + 8 data + 1 stop = 10 bit
  • 允许在 stop bit 采样前不漂移到下一个 bit

常见结论(工程经验)

情况 最大允许误差
单端误差(一边理想) ±5%
双端都有误差 ±2% ~ ±3%
稳妥设计 ≤ ±1%

这是累积误差,不是瞬时抖动

4.5 实例计算

示例 1:24 MHz 时钟,115200 bps,16 倍过采样

目标分频

Divider = 24,000,000 / (16 × 115200) ≈ 13.0208

整数分频

Divider = 13
Baud_real = 24,000,000 / (16 × 13) ≈ 115384
Error ≈ +0.16%

✔ 完全没问题

示例 2:48 MHz 时钟,921600 bps

Divider = 48,000,000 / (16 × 921600) ≈ 3.255
  • 取 3 → 1,000,000 (+8.5%) ❌
  • 取 4 → 750,000 (−18.6%) ❌

整数分频完全不可用

必须:

  • 降低 oversample(16 → 8)
  • 使用 fractional divider
  • 换 UART 时钟源

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1175153.shtml

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

相关文章

ssm493鲜活农产品商城销售系统--论文

目录具体实现截图摘要系统所用技术介绍写作提纲源码文档获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!具体实现截图 摘要 随着互联网技术的快速发展,电子商务已成为农产品销售的重要渠道。鲜活农产品因其易腐性、季节性等特点&am…

基于 IPIDEA 的 GitHub 代码文件抓取与数据可视化实践(Python 实现)

基于 IPIDEA 的 GitHub 代码文件抓取与数据可视化实践(Python 实现)在实际的数据分析和工具开发过程中,GitHub 往往是一个绕不开的数据来源。无论是统计某一技术方向的项目活跃度,还是分析开源生态趋势,都需要对仓…

2026 年北京机场广告公司及机场广告牌公司综合实力排行榜单及选择建议指南:2026年北京机场广告公司及机场广告牌公司如何选?哪家好?哪家靠谱?选哪家? - Top品牌推荐

一、核心机场广告运营商 1. 艾迪亚控股集团(首选 Top 1)基本信息:始创于 1998 年,注册资金 5000 万,是全域机场广告解决方案提供商,总部位于北京,业务遍及香港、北京、上海、广州、深圳等一线城市及全国重点二三…

ssm494校园旧书交易交换平台论文

目录具体实现截图摘要系统所用技术介绍写作提纲源码文档获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!具体实现截图 摘要 随着高校教育的发展,学生每年产生大量闲置教材和书籍,传统线下交易方式效率低、信息不对称&am…

ssm495校园视频监控系统--论文

目录具体实现截图摘要系统所用技术介绍写作提纲源码文档获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!具体实现截图 摘要 随着校园安全问题的日益突出,构建高效、智能的视频监控系统成为保障校园安全的重要手段。本文基于SSM&…

挖掘大数据领域数据产品的商业价值

大数据时代的数据产品商业价值挖掘:从信息到价值的系统转化框架 元数据框架 标题:大数据时代的数据产品商业价值挖掘:从信息到价值的系统转化框架关键词:数据产品、商业价值、大数据架构、价值转化模型、应用场景、伦理考量、未来…

ssm497医院预约挂号系统--论文

目录具体实现截图摘要系统所用技术介绍写作提纲源码文档获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!具体实现截图 摘要 随着信息技术的快速发展,传统医院挂号方式已无法满足患者高效、便捷的医疗需求。为提高医院挂号效率&…

张氏相机标定,不求甚解使用篇

本文记录使用张氏标定法进行使用的全过程,并记录最终的误差成果,为什么需要标定是因为相机本身拍照之后,就存在一个畸变,所以仅靠一个比例尺来进行推算实际距离 和 像素距离之间的比例,是存在很大的偏差的,理解一下&am…

HNU 2025年计科算法设计与分析期末考试原题

前言 感谢Smile_Laughter的共同回忆! 一、简答题(30分) 1. 请简述贪心算法和动态规划算法的区别与联系。(6分)【提示:区别与联系各写2点即可】 2. 请简述队列式分支限界法和优先队列式分支限界法的区别…

开启WSL的ssh访问

开启WSL的ssh访问$(".postTitle2").removeClass("postTitle2").addClass("singleposttitle");开启WSL的ssh访问 我不打算开启Windows的ssh,只是想开WSL的ssh,因为sb微软服务器太难连了…

2026 年机场广告公司综合实力排行榜单及选择建议指南:2026年机场广告公司如何选?哪家好?哪家靠谱?选哪家? - Top品牌推荐

一、机场广告公司概述 机场广告公司是专门从事机场范围内广告媒体资源开发、运营和管理的专业机构。这些公司通过整合机场内的各种广告位资源,为广告主提供精准的品牌传播解决方案。机场作为高净值人群聚集的场所,其…

ssm488图书销售管理入库信息系统9f27q--论文

目录具体实现截图摘要系统所用技术介绍写作提纲源码文档获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!具体实现截图 摘要 随着信息技术的快速发展,图书销售管理系统的信息化已成为提高企业运营效率的重要手段。本研究基于SSM&…

day138—快慢指针—删除链表的倒数第N个结点(LeetCode-19)

题目描述给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。示例 1:输入:head [1,2,3,4,5], n 2 输出:[1,2,3,5]示例 2:输入:head [1], n 1 输出:[]示例 3&#xf…

学霸同款2026 AI论文工具TOP8:本科生毕业论文神器测评

学霸同款2026 AI论文工具TOP8:本科生毕业论文神器测评 2026年学术写作工具测评:为什么需要一份权威榜单? 随着AI技术在学术领域的深入应用,越来越多的本科生开始依赖智能写作工具来提升论文效率与质量。然而,面对市场上…

深度测评专科生必用TOP8AI论文软件:开题报告文献综述全攻略

深度测评专科生必用TOP8AI论文软件:开题报告文献综述全攻略 2026年专科生论文写作工具测评:为什么你需要这份榜单? 随着AI技术在学术领域的广泛应用,越来越多的专科生开始借助智能工具提升论文写作效率。然而,面对市场…

Java毕设项目:基于springboot的旅行指南系统的设计与实现(源码+文档,讲解、调试运行,定制等)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

Java毕设选题推荐:基于springboot的旅行指南攻略游记系统的设计与实现【附源码、mysql、文档、调试+代码讲解+全bao等】

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

Java毕设项目:基于springboot的宠物医院管理系统的设计与实现(源码+文档,讲解、调试运行,定制等)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

5.Spring Boot、Spring MVC 和 Spring 有什么区别

Spring Boot、Spring MVC 和 Spring 有什么区别Spring是⼀个IOC容器,⽤来管理Bean,使⽤依赖注⼊实现控制反转,可以很⽅便的整合各种框架,提供AOP机制弥补OOP的代码重复问题、更⽅便将不同类不同⽅法中的共同处理抽取成切⾯、⾃动注…

计算机Java毕设实战-基于SpringBoot + Vue的旅游出行指南系统基于springboot的旅行指南系统的设计与实现【完整源码+LW+部署说明+演示视频,全bao一条龙等】

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…