嵌入式:深刻理解UART与USART串口通信的特点
前言文章合集嵌入式系列https://blog.csdn.net/2401_88433210/category_13196870.html?fromshareblogcolumnsharetypeblogcolumnsharerId13196870sharereferPCsharesource2401_88433210sharefromfrom_link文章以STM32F103ZET6芯片为例来介绍一、什么是 UARTUARTUniversal Asynchronous Receiver/Transmitter是一种叫做 “通用异步收发器” 的硬件电路用于设备间的串行通信即数据按位顺序逐次传输一次传输 1 位数据可以按照需求发送多次。二、初步理解 UART 定义1. UART 接线UART 由 2 根数据线和一根地线组成。2 根数据线分别是Tx 用于发送数据。 Rx 用于接收数据。其实还有一些其他的线但现在很少使用了不再介绍。UART 是用来进行设备间通信的就如同人和人、猫和猫、狗和狗之间通信一样UART模块一般也是和另一个 UART 模块进行通信那么接线上可以如下设置Tx 接对端 Rx Rx 接对端 Tx 构建双向通信的信道通信双方 GND 都接地或者叫做接入公共地上述过程细节对通信双方都有效即通信双方没有主从概念地位是对等的。⭐ 注意Tx/Rx 中T、R 分别表示 “Transmit”发送和 “Receive”接收x 表示什么市面上说法不一可以把他理解成为 exchange交换这样接入之后双方就可以互相进行通信了。2 UART 核心特点串行通信异步通信1 对 1 通信全双工通信关于 UART串口的这些特点对于初学者而言可能比较陌生在继续学习 UART 之前首先以通俗易懂的方式分别对上述特点及其周边进行一下理论补充。2.1 串行 vs 并行如果设备间要进行通信从物理形式上通信基本可以分为两种并行通信和串行通信。并行通信并行通信同时使用多条数据线如 8 条、16 条、32 条来传输一个数据字节或半字、字的所有位。如图中的 8 位数据并行传输 示意图一次性会传递完 8 位数据。并行通信的明显缺点成本高昂线多PCB 布线艰难、接口插件贵速率受限所有数据位必须同时有效才能被正确采样但物理上无法做到绝对同步为了尽量同步时钟就必须很慢给没有到达的信号足够时间。距离短串扰严重仅限板级通信扩展性差位宽升级必须改硬件连线名词解释位0 或 1最小单位字节8 位存一个字母 / 数字半字16 位2 字节STM32 的 uint16_t字32 位4 字节STM32 的 uint32_tCPU 一次处理的大小串行通信串行通信只使用一条或一对数据线将数据字节的各 bit 按照时间顺序一 bit 接一 bit 地依次传输。如图中的 8 位数据串行传输示意图8 位数据会分 8 次按位依次传输。UART 发送、接收都只有 1 根信号线所以数据发送、接收都只能是串行方式。在 STM32 通信领域串行通信成本低速率高扩展性好功耗低等优势让它成为主流实际应用中串行通信占绝对主导地位。注意:串行 UART 串口像 SPII2CCANUART 等都是采用串行通信的主流通信技术UART 串口只是串行通信的一种具体技术2.2 同步通信 vs 异步通信同步通信如下图中同步通信所示在时钟的下降沿 (或者上升沿) 对数据进行采样读取这就是同步通信使用时钟的边沿进行数据接收、发同步如示意图中的波形就可以准确的解析为 11110000 二进制数据下降沿采集异步通信如下图中异步通信示意图所示传输信号中没有时钟信号UART 就是这样的那应该怎样才能识别输入数据波形表示的是11110000、1100、10、… 等哪种二进制情况呢这就需要通过通信收、发端约定的每一个数据位占用的时间 T 来区分 (如图中绿色分割线等分) 每一个数据位对于 UART 而言这就是波特率。光约定每一个数据位占用的时间还是不够的还需要知道从什么时刻开始等间隔截取数据需要截取多少位数据这就是需要数据帧格式来完成的工作。UART 并没有一个用于同步的时钟信号因此 UART 是异步通信方式Aasynchronous异步。结论:stm32 中区分同步通信还是异步通信只看有没有时钟线就可以判断出来2.3 1 对 1 通信 vs 1 对多通信1 对 1 这个很好理解朴素的说就是串口单元只能和另一个串口单元通信不能一个串口单元和多个串口单元通信。 后续会见到一个主设备可以和多个从设备通信的场景比如 I2C 或者 SPI 等。2.4 全双工 vs 半双工全双工可以同时双向传输A → B 且 B → A。如下图中的全双工示意图所示可以同时走红色和蓝色传输路径传输数据。半双工可以双向传输但一次只能一个方向A → B 或者 B → A。如下图中的半双工示意图所示同一时刻要么走红色传输路径要么走蓝色传输路径。单工只能单向传输A → BB → A 二选一。如图中的单工示意图所示只有一条传输路径。秒理解:全双工就是我们人类正常沟通我说你听。你说我听互相可同时说话半双工就是我们人类吵架你说你的我说我的互相问候输入输出同时进行单工就是吵架吵输了我不说了你说你的UART 有独立的发送 (Tx)、接收 (Rx) 信号线因此可以同时进行数据发送与接收也就是全双工的通信方式。但是基于 UART 扩展而来的 RS‑485 通信方式则是半双工通信方式简单了解即可。三、MCU 和串口1. 串口属于 MCU 片上外设在 STM32 对应的 MCU 中为了让 MCU 能进行串口通信进而能获取或者板级外设或者上位机通信的能力为 MCU 内置串口模块。 下面是 STM32 系列 MCU 的内部结构框图很明显串口是以片上外设的形式接入到 MCU 的 APB 总线上的。所以未来整个 MCU 要进行串口通信都由片上外设 USART* 来完成。所以后面研究串口通信都是我们的 MCU 通过自己的片上 USART在和 MCU 外部的串口设备进行通信。类似于网卡和网卡通信。但是网卡属于你的电脑你的电脑需要上网时就给自己的电脑内置网卡使用网卡的联网功能。2. UART 和 USART大家一定注意到了STM32 参考数据手册中都是 USART这两个名词的全称如下UARTUniversal asynchronous receiver transmitter。翻译过来就是通用异步收发器。USARTUniversal synchronous asynchronous receiver transmitter。翻译过来就是通用同步异步收发器。所以 USART 的功能要比 UART 的功能更强大因为 USART 多了一个同步 synchronous 功能。这个同步功能大概是怎么回事呢 如下图所示STM32 MCU 可以给 USART 额外提供一根时钟线以实现双方数据同步传输模式。但是这种同步方式的串口应用场景非常罕见几乎不用此处只做了解。所以如果忽略掉 USART 的同步通信功能那么 USARTUART。注意:区分同步异步看有没有时钟线即可使用 USART时因为不用 USART 同步功能那么 USART 就是 UART3. 串口复用GPIO引脚细节USART 直接复用 GPIO就可以通过 MCU 引脚对外输出信号也就是未来我们配置 USART就一定会配置有关 GPIO 的配置。4. MCU 和 USART 设备通信的宏观过程和问题如下图所示使用 USART 进行通信的设备之间用 Tx 和 Rx 交叉相连意思就是一端发送、一端接收。 此处是 MCU 内部的 USART 模块和外部的 USART 设备之间进行通信。宏观数据传输流程如下发送端Tx发送二进制数据‘1’时输出高电平接收端Rx读取到高电平时代表得到二进制数据‘1’发送端Tx发送二进制数据‘0’时输出低电平接收端Rx读取到低电平时代表得到二进制数据‘0’数据会按顺序拆分成一个个的数据位并依次进行发送和接收。示例 (以 MCU 端发送为例)假定 MCU 要传输 1 个字节的数据 0x55二进制序列为0101 0101发送端依次输出以下电平序列高、低、高、低、高、低、高、低接收端依次读取到电平序列高、低、高、低、高、低、高、低就代表接收到了二进制数0101 0101但是上述的通信过程看似可行实则不行主要有以下 2 个问题通信双方发送和接收数据快慢的问题接收端怎么知道发送端什么时间开始或者结束数据发送的一次计划携带多少数据“波特率” 和 “帧格式” 就是为了解决这两个问题。在继续讲解之前我们先来沟通一下关于通信 “约定” 的话题。要真正通信必须要求通信双方都要采用相同的规则人和人通信双方都要说中文不要说外语都说普通话不要说方言那么我们两个人要通信就必须遵守这个规则。设备间通信就必须遵守通信的规则比如每秒收发的数据量一次发多少哪里开始哪里结束等等都是通信双方都要遵守的规则只有大家都遵守提前约定好的规则才能互相理解彼此完成通信过程结论无论未来设备怎么通信参与通信的设备间约定好的规则大家都要遵守。这点 USART 是这样未来其他通信方式也是如此。后续精彩内容详见下一篇

相关新闻

层次分析法(AHP)详解:从主观判断到量化决策的完整指南

层次分析法(AHP)详解:从主观判断到量化决策的完整指南

1. 从拍脑袋到结构化决策:为什么我们需要层次分析法 做项目、搞研究、甚至生活中选工作、挑房子,我们总会遇到需要“做决定”的时刻。很多时候,这个决定过程是模糊的:几个方案各有优劣,A方案成本低但风险高&#xff0c…

2026/8/23 9:10:47 阅读更多 →
DPDK 与 FPGA 网络损伤方案的区别:网准通和信而泰 Xcompass-S 怎么选?

DPDK 与 FPGA 网络损伤方案的区别:网准通和信而泰 Xcompass-S 怎么选?

DPDK 与 FPGA 网络损伤方案的区别:网准通和信而泰 Xcompass-S 怎么选? 很多人在选网络损伤仪时,会先问一句:“DPDK 和 FPGA,哪个更好?” 这个问题其实少了一个前提:你想解决的是哪一类测试问题&…

2026/8/23 9:10:47 阅读更多 →
ComfyUI Uni3C:像Git一样版本化你的AI绘画工作流

ComfyUI Uni3C:像Git一样版本化你的AI绘画工作流

如果你还在为 Stable Diffusion WebUI 的“黑盒”式工作流感到困惑,或者觉得 Midjourney 的“咒语”生成方式不够透明、难以精确控制,那么 ComfyUI 的出现,可能已经改变了你的认知。但今天要聊的,远不止 ComfyUI 本身。一个更关键…

2026/8/23 9:09:47 阅读更多 →

最新新闻

3步跑通 ELK.js:复杂图自动布局不再靠手拖

3步跑通 ELK.js:复杂图自动布局不再靠手拖

3步跑通 ELK.js:复杂图自动布局不再靠手拖 【免费下载链接】elkjs ELKs layout algorithms for JavaScript 项目地址: https://gitcode.com/gh_mirrors/el/elkjs 节点一多,连线就成了蜘蛛网,拖拽半天还是乱。ELK.js 把 Eclipse 的图布…

2026/8/23 10:03:02 阅读更多 →
SystemTrayMenu 完全使用指南:免费系统托盘菜单替代 Windows 开始菜单

SystemTrayMenu 完全使用指南:免费系统托盘菜单替代 Windows 开始菜单

SystemTrayMenu 完全使用指南:免费系统托盘菜单替代 Windows 开始菜单 【免费下载链接】SystemTrayMenu SystemTrayMenu - Browse and open your files easily 项目地址: https://gitcode.com/gh_mirrors/sy/SystemTrayMenu SystemTrayMenu 是一款开源免费的…

2026/8/23 10:03:02 阅读更多 →
UI-TARS Desktop 5分钟快速上手GUI自动化

UI-TARS Desktop 5分钟快速上手GUI自动化

UI-TARS Desktop 5分钟快速上手GUI自动化 【免费下载链接】UI-TARS-desktop The Open-Source Multimodal AI Agent Stack: Connecting Cutting-Edge AI Models and Agent Infra 项目地址: https://gitcode.com/GitHub_Trending/ui/UI-TARS-desktop UI-TARS Desktop 是一…

2026/8/23 10:03:02 阅读更多 →
推荐系统特征注意力机制:SENET与GateNet原理、应用与调优实践

推荐系统特征注意力机制:SENET与GateNet原理、应用与调优实践

1. 从“特征”到“注意力”:推荐系统Embedding的进化之路如果你在推荐系统领域摸爬滚打过几年,一定经历过这样的阶段:早期,我们费尽心思做特征工程,把用户画像、物品属性、上下文信息等一堆离散特征,通过On…

2026/8/23 10:03:02 阅读更多 →
嵌入式开发实战:从硬件调试到系统集成的工程实践

嵌入式开发实战:从硬件调试到系统集成的工程实践

1. 从“拧螺丝”到“造轮子”:嵌入式开发的真实日常很多人对嵌入式开发工程师的想象,可能还停留在“对着电路板焊线”、“天天写单片机代码”的阶段。作为一个在这个行当里摸爬滚打了十来年的老鸟,我想说,这行当的日常&#xff0c…

2026/8/23 10:03:02 阅读更多 →
斯大林排序算法:从程序员梗到软件工程思维的极端映射

斯大林排序算法:从程序员梗到软件工程思维的极端映射

如果你在技术社区或社交媒体上看到“斯大林排序算法”这个词,第一反应是什么?是某个严肃的苏联计算机科学遗产,还是一个充满黑色幽默的程序员梗?答案是后者。这并非一个真正的、用于生产的排序算法,而是一个在程序员圈…

2026/8/23 10:02:02 阅读更多 →

日新闻

[光学原理与应用-521]:对光的错误理解与纠偏

[光学原理与应用-521]:对光的错误理解与纠偏

首先光是一种能量的载体和形态,宏观上观察到的光是由无数个微观的光量子组成的,每个光子在产生的瞬间,其在真空的空间中以确定不变的速度沿着一个初始的方向一直向前,在微观层面,每个光量子的运动轨迹是以波函数所展现…

2026/8/23 0:00:50 阅读更多 →
SIP通话转接原理与REFER方法实战解析

SIP通话转接原理与REFER方法实战解析

1. 通话转接不是“挂断再拨号”,而是SIP会话的动态重定向你有没有遇到过这样的场景:客服坐席A正在和客户通电话,突然需要把这通对话无缝转给专家坐席B,客户完全感知不到中间的断连——既没听到忙音,也没被要求重新拨号…

2026/8/23 0:00:50 阅读更多 →
Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

1. 为什么选择Kolla-ansible来部署单节点OpenStack?如果你正在寻找一种能把OpenStack从“概念”快速变成“可用的实验环境”的方法,那么Kolla-ansible几乎是当前最主流、最省心的选择。我见过太多人卡在手动编译依赖、配置服务、处理版本冲突的泥潭里&am…

2026/8/23 0:00:50 阅读更多 →

周新闻

[光学原理与应用-521]:对光的错误理解与纠偏

[光学原理与应用-521]:对光的错误理解与纠偏

首先光是一种能量的载体和形态,宏观上观察到的光是由无数个微观的光量子组成的,每个光子在产生的瞬间,其在真空的空间中以确定不变的速度沿着一个初始的方向一直向前,在微观层面,每个光量子的运动轨迹是以波函数所展现…

2026/8/23 0:00:50 阅读更多 →
SIP通话转接原理与REFER方法实战解析

SIP通话转接原理与REFER方法实战解析

1. 通话转接不是“挂断再拨号”,而是SIP会话的动态重定向你有没有遇到过这样的场景:客服坐席A正在和客户通电话,突然需要把这通对话无缝转给专家坐席B,客户完全感知不到中间的断连——既没听到忙音,也没被要求重新拨号…

2026/8/23 0:00:50 阅读更多 →
Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

1. 为什么选择Kolla-ansible来部署单节点OpenStack?如果你正在寻找一种能把OpenStack从“概念”快速变成“可用的实验环境”的方法,那么Kolla-ansible几乎是当前最主流、最省心的选择。我见过太多人卡在手动编译依赖、配置服务、处理版本冲突的泥潭里&am…

2026/8/23 0:00:50 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/22 18:08:39 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/22 7:31:03 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/22 3:22:48 阅读更多 →