网站建设费如何入账怎么摊销,wordpress 繁简,手机可做兼职的网站,网站群建设公司排行榜6大家好#xff0c;这里是 Hello_Embed。在前几篇中#xff0c;我们通过环形缓冲区解决了按键数据丢失问题#xff0c;而在嵌入式系统中#xff0c;设备间的数据交互#xff08;如单片机与电脑、传感器的通信#xff09;同样至关重要。UART#xff08;通用异步收发传输器…大家好这里是 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 协议异步串行通信的典型实现
UARTUniversal 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 位低电平默认状态为高电平拉低表示传输开始数据位8 位传输实际数据‘A’的 ASCII 码为 0x41二进制01000001校验位可选1 位用于简单错误检测奇校验 / 偶校验停止位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 则判定为 02 次为 1 则判定为 1。
6. 校验位简单的错误检测
校验位用于检测数据传输中的偶然错误分为奇校验和偶校验
奇校验数据位中 “1” 的个数为奇数包括校验位偶校验数据位中 “1” 的个数为偶数包括校验位。例传输‘A’二进制01000001含 2 个 1
奇校验校验位需为 1总个数 3奇数偶校验校验位需为 0总个数 2偶数。三、波特率与比特率的区别
波特率每秒传输的 “信号状态数”波形变化次数比特率每秒传输的 “有效数据位数”bit/s。
多数情况下1 个信号状态对应 1 位数据因此波特率 比特率如 UART。
特殊场景若 1 个信号状态表示 2 位数据如 00.7V000.81.5V01则比特率 波特率 ×2例2ms 传输 2 个状态对应 4 位数据波特率 500 波特比特率 1000bit/s。
结尾
UART 协议通过 “异步传输 约定格式” 实现了简单可靠的串行通信其核心是波特率同步和数据帧格式。下一篇我们将聚焦 STM32 的 UART 硬件结构学习如何通过 CubeMX 配置 UART并结合环形缓冲区实现高效的串口数据收发。
Hello_Embed 继续带你从协议原理到硬件实战掌握嵌入式通信的核心技能敬请期待