最常见的嵌入式通信协议—— UART | 深入数据帧格式
创作时间:
作者:
@小白创作中心
最常见的嵌入式通信协议—— UART | 深入数据帧格式
引用
CSDN
1.
https://m.blog.csdn.net/joker520522/article/details/142465151
UART
UART(通用异步收发器,Universal Asynchronous Receiver/Transmitter)是一种串行、异步、全双工的通信协议,在嵌入式领域应用非常广泛。
硬件接线
- 通信双方TX、RX交叉连接
- 通信双方共地
数据帧格式
- 启动位:占1个位长,保持逻辑0电平
- 有效数据位:可选5、6、7、8、9个位长(通常是8bit),LSB在前,MSB在后,即最低有效位在前
- 校验位:1位,可选是否有,常见的是奇偶校验位
- 停止位:可选1、1.5、2个位长,保持逻辑1电平,停止位不仅仅表示传输的结束,也是在提供计算机校正时钟同步的机会,适用于停止位的位数越多,不同时钟的容忍程度越大
- 空闲位:总线空闲时默认逻辑1电平
波特率
波特率和比特率的定义
- 比特率:每秒钟传输的比特数,单位 bit/s,bps
- 波特率:每秒钟传输的码元数,单位 symbol/s,Baud
波特率和比特率之间的关系
举一个生活化的例子,如果把通信系统类比到公共交通运输系统,那么比特的概念就是运输的最小单位——人,而码元可以类比为出租车、公交车、火车等等不同的交通运输车辆。波特率可以理解为单位时间内的发车数量,比特率可以理解为单位时间内运输的出行人数。
比特率 = 波特率 * log2M,M 表示每个码元承载的信息量( M 也可以认为是进制数)。
二进制系统中,每个码元都存在2种状态,所以波特率数值上等于比特率。
波特率的作用
在串口通信中,发送端和接收端需要规定好一个相同的波特率,才能保证通信正常。在描述波特率的作用时,我比较喜欢用打羽毛球来进行比喻。发送端是发球的人,接收端是接球的人,而波特率就是两个打球的人挥拍的频率,如果这两个人的节奏一致,羽毛球就可以很长时间不落地。而如果有快有慢,甲的球刚刚发出去,乙的球拍已经挥完放下了,就很容易出现丢球的情况。
8N1 表示的是什么意思?
8N1:8 表示的是数据位8位,N 表示的是无校验位,1 表示的是1位停止位
除了最常见的 8N1 之外,还有:
- 7E1:7个数据位,偶校验位,1个停止位
- 8O2:8个数据位,奇校验位,2个停止位
UART 通信分析实践
UART在波特率为9600、数据帧格式为默认 8-N-1 的情况下:
发送"Hello, World!",请写出数据帧。
- "Hello,World!"一共有12个字节,所以一共需要发送12个UART数据帧。
- 根据ASCII码,将字节转成二进制表示:
字符 | ASCII码 | 二进制 |
---|---|---|
H | 72 | 01001000 |
e | 101 | 01100101 |
l | 108 | 01101100 |
l | 108 | 01101100 |
o | 111 | 01101111 |
, | 44 | 00101100 |
W | 87 | 01010111 |
o | 111 | 01101111 |
r | 114 | 01110010 |
l | 108 | 01101100 |
d | 100 | 01100100 |
! | 33 | 00100001 |
- 串口通信的数据位通常是 LSB 先发送,这意味着在传输字符的时候,二进制表示的 ASCII 码是从右向左发送的。
字符 | 二进制 | LSB 开始发送 |
---|---|---|
H | 01001000 | 00010010 |
e | 01100101 | 10100110 |
l | 01101100 | 00110110 |
l | 01101100 | 00110110 |
o | 01101111 | 11110110 |
, | 00101100 | 00110101 |
W | 01010111 | 11101010 |
o | 01101111 | 11110110 |
r | 01110010 | 01000111 |
l | 01101100 | 00110110 |
d | 01100100 | 00100110 |
! | 00100001 | 10000010 |
- 数据格式默认8-N-1,所以开始位1位,结束位1位,无校验位。S 代表起始位,E 代表停止位:
字符 | 发送的数据帧格式 |
---|---|
H | S 00010010 E |
e | S 10100110 E |
l | S 00110110 E |
l | S 00110110 E |
o | S 11110110 E |
, | S 00110101 E |
W | S 11101010 E |
o | S 11110110 E |
r | S 01000111 E |
l | S 00110110 E |
d | S 00100110 E |
! | S 10000010 E |
每秒传输多少个有效字节?每秒传输多少个有效比特?
- 1 byte = 8 bit,但是 UART 协议中包含开始位和结束位,所以每秒钟传输的字节数 = 9600/10 = 960
- 根据计算出的每秒钟传输的字节数,每秒钟传输的比特数是 960*8 = 7680
Review
- UART属于哪种类型的通信方式?
- 请绘制出UART通信的硬件接线图。
- 波特率和比特率之间的区别是什么?
- UART在波特率为9600、数据帧格式为默认8-N-1的情况下,发送"Hi",请写出数据帧。(“H” 的 ASCII 值为72, “i” 的 ASCII 值 为105)
- UART在波特率为9600、数据帧格式为 7-E-1 的情况下,每秒传输多少个有效字节?每秒传输多少个有效比特?
参考:
- 超简单的一种通信,2分钟搞懂,串口通讯的工作原理!- B站 - 爱上半导体
- 一文搞懂比特率和波特率 - 知乎 - 奔跑的
- 串口通信8N1 - CSDN - modi000
- UART串口协议详解 - 知乎 - 曾小庆
热门推荐
禅宗思想对武僧图的艺术呈现与文化内涵的影响
终于有人把CISP全部说清楚了
什么是AB角分工协作?
交警提醒:别再给车上放挪车电话了,都是隐患,多位车主被利用!
计算加班工资是按最低工资标准吗?
Excel表格大小调整完全指南:从基础操作到VBA编程
胃癌胃全切后,如何科学饮食?
各种混动技术实际使用下来差别大吗?买混动车应该看重什么?
神奇的发酵:从化学反应到面食制作
TGS《街头霸王6》特瑞试玩:性能全面 情怀拉满
开棋牌室需要具备哪些条件
如何用C语言实现线性回归分析
婆媳合不来?先别翻脸,这些高招助你化解矛盾
Abaqus软件功能与非线性分析详解
APP制作的关键流程,你知道多少?
预防癌症要从年轻做起!《自然》揭秘:老了以后,患癌风险为何降低了?
保障型保险 vs储蓄型保险,家庭财务规划何去何从?
减肥期间的热量摄入指南:科学计算与健康饮食建议
怎么照片放在excel就模糊了
攸县开展“三优”公益家长课堂讲座活动 聚焦家庭教育痛点和难点
如何将微信聊天记录轻松导入电脑,确保数据安全与完整性
水培水竹怎样养
小货车超载处罚标准及保险赔付规定
怎么选择吉日和吉时:传统智慧与现代应用
四款低热量汤品,轻松度过减肥平台期
上海交大,连发2篇Nature
如何做到紧跟团队不掉队
Excel中插入和复制单元行的多种方法详解
我国常见的十大有毒蘑菇,你认识几种?
数字物业课堂|物业公司如何提升报修业务效率?