最常见的嵌入式通信协议—— 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串口协议详解 - 知乎 - 曾小庆
热门推荐
低聚果糖(FOS)的天然益处:从肠道健康到体重管理
深度解析:股票投资分析的理论与实践
查尔斯小火车—当网络热梗化身恐怖梦魇
【筋膜刀从入门到精通】筋膜刀的功效与作用、在运动康复中的应用!
日语N1容易考过吗?全方位解析及备考建议
医学影像专业留学美国的机会与挑战
Nature子刊:常用降胆固醇药物他汀类药物,可预防癌症
关于金星的10个奇葩冷知识:高温全球无死角,太阳只是照明灯,你有什么看法?
芦苇种在什么地方好?详解芦苇种植要点与应用价值
如何进行半程马拉松准备训练
如何在 Android 上激活开发者模式:完整指南
笔墨之尊:古代文人在社会中的地位
推荐6部凶残至极的黑深残动漫,每部都充满着致郁美学!
哮喘患者如何识别及预防急性发作?
【檀香】是甚麼? 一文講清楚檀香的特點、味道、產地和歷史文化背景。
青光眼手术新趋势:前房隅角切开术
鼻泪管开口于何处?功能及预防问题详解
全球电解铝生产增速放缓:产能利用率持续提升
如何合理规划购车预算以避免财务困境?购车预算管理有哪些技巧?
布雷斯特门将比佐:巴黎与皇马同水平,我们的实力显然有差距
宝宝腹泻处理指南:观察症状、饮食调整与及时就医的重要性
别只看盐酸氨基葡萄糖!缓解疼痛,硫酸氨糖更靠谱
体育教师行业环境分析
动漫角色从草图到成品的绘制过程
预支工资是属于借钱吗?
医生提醒:这5种药一旦吃上,真的不能随便停!突然停服风险大
抑郁症的人认知错误怎么办
贵州特产威宁荞酥:600年历史的美食传奇
诗经采薇的诗意深度解读
德甲强强碰撞:莱红牛来势汹汹,海登海姆不容小觑