大家好,这里是 Hello_Embed。在前几篇中,我们通过环形缓冲区解决了按键数据丢失问题,而在嵌入式系统中,设备间的数据交互(如单片机与电脑、传感器的通信)同样至关重要。UART(通用异步收发传输器)是最常用的串行通信协议之一,广泛应用于调试、数据传输等场景。本篇将从 “同步与异步传输的区别” 入手,详解 UART 协议的工作原理、数据格式及关键概念,为下一篇 “UART 硬件结构与编程” 打基础。

一、数据传输的两种基本方式

在讲解 UART 之前,我们先明确 “同步传输” 与 “异步传输” 的核心区别 —— 这是理解 UART(异步协议)的基础。

1. 同步传输
  • 特点:同时发送两种信号 ——时钟信号(用于同步)和数据信号(实际传输的数据)。
  • 原理:发送方通过时钟信号的上升沿 / 下降沿通知接收方 “即将传输数据”,双方严格按照时钟节拍同步收发。
  • 类比:就像和朋友约定 “每天下午 3 点准时视频”,到点后直接开始交流,无需额外确认 “是否准备好”。
2. 异步传输
  • 特点:仅发送数据信号,通过信号本身的 “起始标识” 和 “时长约定” 实现同步。
  • 原理:数据信号中包含起始位(标记传输开始)、数据位(实际数据)和停止位(标记传输结束),收发双方需提前约定信号时长(如波特率)。
  • 类比:就像打电话 —— 先拨号码(起始标识),对方接起后开始说话(数据),说完挂电话(停止标识),双方无需提前约定 “几点开始”,但需听懂同一种语言(约定规则)。
  • 实例:红外遥控器协议 —— 接收端检测到 “9ms 低电平 + 4.5ms 高电平” 时,判定为传输开始;逻辑 1 定义为 “0.56ms 低电平 + 1.69ms 高电平”,逻辑 0 定义为 “0.56ms 低电平 + 0.56ms 高电平”。
对比项同步传输异步传输
信号线需时钟线 + 数据线仅需数据线
速率由时钟信号频率决定(可动态调整)收发双方需提前约定(固定波特率)
抗干扰能力强(时钟同步可修正偏差)弱(依赖信号时长,偏差易导致错误)
适用场景高速、短距离(如 SPI、IIC)中低速、长距离(如 UART、红外)
二、UART 协议:异步串行通信的典型实现

UART(Universal Asynchronous Receiver/Transmitter)是异步传输的典型应用,通过单条数据线实现双向通信,其核心是 “约定数据格式和传输速率”,示意图如下:
请添加图片描述

1. 通信方式:全双工

UART 支持全双工通信,即发送数据(TX)和接收数据(RX)可同时进行,互不干扰。三种通信方式的对比如下:
要使用串口传输数据,则需要明白其底层工作逻辑,我们以下图为例:

通信方式核心特点数据流向典型场景
全双工同时收发,无冲突双向并行(TX/RX 独立)电话通话、视频会议、以太网通信
半双工可双向传输,但同一时间只能单向双向交替(共用一根线)对讲机、RS485 半双工模式(共用一根线)
单工只能单向传输(固定发送或接收)单向固定广播、红外遥控器(仅发送)、打印机(仅接收)
2. 波特率:传输速率的度量

波特率(Baud Rate)是 UART 的核心参数,定义为 “每秒传输的信号状态数(波特)”。在多数场景中,1 个状态对应 1 位数据,因此波特率等价于 “每秒传输的比特数(bit/s)”。

  • 例:波特率 115200 表示 “每秒传输 115200 位数据”,传输 1 位数据的时间为 1/115200 ≈ 8.68μs
3. 数据传输格式:从起始到停止

UART 传输 1 字节(8 位)数据的完整格式如下(以传输字符‘A’为例):

  1. 起始位:1 位,低电平(默认状态为高电平,拉低表示传输开始);
  2. 数据位:8 位,传输实际数据(‘A’的 ASCII 码为 0x41,二进制01000001);
  3. 校验位(可选):1 位,用于简单错误检测(奇校验 / 偶校验);
  4. 停止位:1 位、1.5 位或 2 位,高电平(表示传输结束,给接收方缓冲时间)。
  • 传输 1 字节的总位数:1(起始)+8(数据)+1(停止)=10 位(无校验位时),总耗时 10/115200 ≈ 86.8μs
    请添加图片描述
4. 接收方的采样与同步

接收方如何准确识别每一位数据?以波特率 115200 为例:

  • 检测到 “起始位”(低电平)后,等待 1.5 个比特时间(1.5×8.68μs ≈ 13μs),此时处于第 1 位数据的中间位置(采样最稳定);
  • 此后每间隔 1 个比特时间采样一次,依次获取 8 位数据;
  • 最后检测到 “停止位”(高电平),完成一次传输。
    请添加图片描述
5. 容错机制:抗干扰的采样策略

为应对信号抖动,UART 接收端采用 “多次采样” 策略(以 16 次采样为例):

  • 起始位校验:需满足 3 个条件 —— 前 2 次采样为低电平、中间 3 次(8/9/10)为低电平、最后 2 次为低电平,才认定为有效起始位;
  • 数据位校验:中间 3 次采样(8/9/10)中,若 2 次为 0 则判定为 0,2 次为 1 则判定为 1。
6. 校验位:简单的错误检测

校验位用于检测数据传输中的偶然错误,分为奇校验和偶校验:

  • 奇校验:数据位中 “1” 的个数为奇数(包括校验位);
  • 偶校验:数据位中 “1” 的个数为偶数(包括校验位)。
  • 例:传输‘A’(二进制01000001,含 2 个 1):
    • 奇校验:校验位需为 1(总个数 3,奇数);
    • 偶校验:校验位需为 0(总个数 2,偶数)。
三、波特率与比特率的区别
  • 波特率:每秒传输的 “信号状态数”(波形变化次数);
  • 比特率:每秒传输的 “有效数据位数”(bit/s)。
    多数情况下,1 个信号状态对应 1 位数据,因此波特率 = 比特率(如 UART)。
    特殊场景:若 1 个信号状态表示 2 位数据(如 00.7V=00,0.81.5V=01),则比特率 = 波特率 ×2(例:2ms 传输 2 个状态,对应 4 位数据,波特率 = 500 波特,比特率 = 1000bit/s)。
结尾

UART 协议通过 “异步传输 + 约定格式” 实现了简单可靠的串行通信,其核心是波特率同步和数据帧格式。下一篇我们将聚焦 STM32 的 UART 硬件结构,学习如何通过 CubeMX 配置 UART,并结合环形缓冲区实现高效的串口数据收发。
Hello_Embed 继续带你从协议原理到硬件实战,掌握嵌入式通信的核心技能,敬请期待~

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

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

相关文章

使用 C 模仿 C++ 模板的拙劣方法

如下所示,准备两个宏,一个定义类型,一个定义容器大小。 使用时只要先定义这两个宏,然后再包含容器头文件就能生成不同类型和大小的容器了。但是这种方法只允许在源文件中使用,如果在头文件中使用,定义不同类…

flume接收处理器:构建高可用与高性能的数据链路

flume接收处理器:构建高可用与高性能的数据链路 在大规模数据采集场景中,单点故障和性能瓶颈是两大核心挑战。Flume 通过 Sink Group 接收处理器(Processor) 机制,提供了强大的故障转移(Failover&#xf…

高级Kafka应用之流处理

40 Kafka Streams与其他流处理平台的差异在哪里? 什么是流处理平台? “Streaming Systems”一书是这么定义“流处理平台”的:流处理平台(Streaming System)是处理无限数据集(Unbounded Dataset)…

Custom SRP - LOD and Reflections

1 LOD Groups 场景中对象越多,场景就越丰富,但是过多的对象,也会增加 CPU 和 GPU 的负担.同时如果对象最终渲染在屏幕上后覆盖的像素太少,就会产生模糊不清的像素点/噪点.如果能够不渲染这些过小的对象,就能解决噪点问题,同时释放 CPU GPU,去处理更重要的对象. 裁剪掉这些对象…

【Linux篇章】互联网身份密码:解密 Session 与 Cookie 的隐藏玩法和致命漏洞!

本篇摘要 本篇将承接上篇HTTP讲解( 戳我查看 )遗留的关于Cookie与Session的介绍,在本篇,将会介绍Cookie的由来,作用,以及缺点等,进而引出Session,最后介绍一下它们的性质等&#xf…

Postman接口测试工具:高效管理测试用例与环境变量,支持断言验证及团队协作同步

之前跟你们聊过能搭知识网络的 Obsidian,今天换个偏向接口测试的方向 —— 给你们安利一个 Github 上的「Postman」,它是个接口测试工具,官网能直接下载(Postman: The Worlds Leading API Platform | Sign Up for Free&#xff09…

可可图片编辑 HarmonyOS 上架应用分享

可可图片编辑 HarmonyOS 上架应用分享 介绍 可可图片编辑 原名 图片编辑大师,因为上架审核的时候 ,提示与一些已有应用重名,为了避免冲突,需要改名字,所以苦心思考了一分钟,就调整成 可可图片编辑。 应用…

Notepad++近期版本避雷

近期Notepad若干版本存在投毒事件,虽然也欢迎大家使用替代软件,但是Notepad作为一款开源软件,如有需要也可以继续白嫖使用,但是请务必避开若干埋雷版本! 经检查,部分版本在帮助菜单中加入了有关tw的部分个人…

【lucene核心】impacts的由来

在 Lucene 的 Impact 概念(出现在 ImpactsEnum / Impact 对象里)中:字段 含义 freq 当前 term 在该文档中出现了多少次(即词频 term frequency)。 norm 当前 文档在该字段中的长度因子(即之前 norms 里保存…

基于Echarts+HTML5可视化数据大屏展示-惠民服务平台

效果展示代码结构&#xff1a;主要代码实现 index.html布局 <!doctype html> <html><head><meta charset"utf-8"><title>双数智慧公卫-传染病督导平台</title><meta http-equiv"refresh" content"60;urlhttps…

【Flink】DataStream API:执行环境、执行模式、触发程序执行

目录执行环境getExecutionEnvironmentcreateLocalEnvironmentcreateRemoteEnvironment执行模式流执行模式&#xff08;Streaming&#xff09;批执行模式&#xff08;Batch&#xff09;自动模式&#xff08;AutoMatic&#xff09;触发程序执行DataStream API是Flink的核心层API&…

CentOS7.6

腾讯云服务器 腾讯云 产业智变云启未来 - 腾讯 服务器在控制台显示 点击进入面板&#xff0c;显示所有信息 现在来安装桌面的远程控制软件 宝塔SSH终端:一款同时支持SSH和SFTP客户端的免费软件! 点击立即下载 在云服务器的实例列表复制公网ip 密码就是服务器的密码&#xff…

前端架构知识体系:常见图片格式详解与最佳实践

前端开发必备&#xff1a; 在前端开发中&#xff0c;合理选择图片格式直接影响网页加载性能、用户体验和带宽成本。本文将系统梳理常见图片格式&#xff0c;分析它们的优缺点、压缩原理、兼容性和推荐使用场景&#xff0c;并提供前端优化实战建议。1. JPEG / JPG 全称&#xff…

ARM的编程模型

ARM的编程模型 ARM 的编程模型指的是从程序员&#xff08;特别是汇编程序员和编译器设计者&#xff09;视角所看到的 ARM 处理器架构。它定义了程序员可以使用的资源、数据操作方式以及规则&#xff0c;主要包括&#xff1a;寄存器组、数据类型、内存访问方式、执行状态和异常处…

最大熵强化学习相比传统强化学习,有什么缺点?

要理解最大熵强化学习&#xff08;MaxEnt RL&#xff09;相比传统强化学习&#xff08;如DQN、PPO、DDPG等&#xff09;的缺点&#xff0c;首先需要明确两者的核心差异&#xff1a;传统RL的目标是“最大化累积奖励”&#xff0c;而MaxEnt RL在该目标基础上额外增加了“最大化策…

python生成器与协程深度剖析

目录 生成器 传统列表 vs 生成器对比 yield机制深度解析 生成器的高级用法 协程的演进:从yield到async/await 基于yield的协程 现代async/await语法 协程的错误处理和超时控制 异步生成器与异步迭代器 异步生成器 异步迭代器实现 实战案例:异步爬虫框架设计 生成器…

论文解读:基于 77 GHz FMCW 毫米波雷达的舱内占位检测

毫米波 (mm-Wave) 雷达是汽车应用&#xff08;例如高级驾驶辅助系统 (ADAS)&#xff09;的一种解决方案。本研究探索了商用毫米波雷达技术在车内应用领域的应用。本文提出了一种基于 77 GHz 毫米波雷达的车辆占用检测器框架。本研究采用了德州仪器 (Texas Instruments) 的多输入…

进程优先级(Process Priority)

&#x1f381;个人主页&#xff1a;工藤新一 &#x1f50d;系列专栏&#xff1a;C面向对象&#xff08;类和对象篇&#xff09; &#x1f31f;心中的天空之城&#xff0c;终会照亮我前方的路 &#x1f389;欢迎大家点赞&#x1f44d;评论&#x1f4dd;收藏⭐文章 文章目录进…

OpenCV的轮廓检测

1. 轮廓检测的基本概念轮廓是图像中连续的、闭合的曲线段&#xff0c;代表物体的边界&#xff08;如圆形的轮廓是一条闭合曲线&#xff09;。OpenCV 的轮廓检测通过 cv2.findContours() 实现&#xff0c;可用于形状识别、物体计数、图像分割等场景。2. 核心函数与参数&#xff…

亚信安全亮相鸿蒙生态大会2025 携手鸿蒙生态绘就万物智联新蓝图

8 月30 日&#xff0c;以 “新场景・新体验” 为主题的鸿蒙生态大会 2025 在深圳福田会展中心隆重开幕。本次大会由全球智慧物联网联盟&#xff08;GIIC&#xff09;主办、鸿蒙生态服务&#xff08;深圳&#xff09;有限公司承办&#xff0c;旨在搭建全球鸿蒙生态伙伴的高层次交…