最常见的嵌入式通信协议—— 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串口协议详解 - 知乎 - 曾小庆
热门推荐
压力大?容易焦虑? 中医防治有妙招
珍爱网专家教你化解情侣冲突
七夕前夕,如何用健康的方式爱一个人?
打破沟通障碍,让爱情重获新生
上海市第一康复医院:创新团体康复训练助力患者重获新生
张大炯主任推荐:康复训练中的高效团体活动
团体康复训练:身心健康的双重守护者
脑外伤患者康复新模式:团体训练助力身心康复
广西抢花炮队再创佳绩!
验孕试纸到底准不准?揭秘背后真相!
李元元谈石墨烯技术如何引领制造业未来
南欧三国游:圣托里尼、巴塞罗那、里斯本必打卡!
黑木耳香菇助力RA术后康复,这些饮食注意事项要记牢
类风湿性关节炎术后心理调适:中医方法助力康复
领导让我监视同事考勤?职场生存大揭秘!
秋冬自驾游打卡:台州1号公路最美风景线
春节怎么形容?辞旧迎新过大年的N种高级表达法!
春节:人类非物质文化遗产的璀璨明珠
没有实习经验?这样写简历也能斩获offer
应该通过哪些渠道寻找高质量的实习机会
吉林市江北公园冬日打卡攻略:滑冰、滑雪、赏夜景,玩转3小时!
焕新升级!吉林市江北公园成网红打卡地
超温柔表白文案:温暖你的岁岁年年
南京晓然心理咨询中心教你如何表达爱
法式浪漫表白大揭秘!从"Mon amour"到"Je t'aime"
AI助力社交恐惧症患者重获自信
疝气手术后如何正确使用抗生素?阿莫西林和头孢呋辛酯使用指南
术后营养补充与药物相互作用解析:肠内营养新指南
你真的会用术后药吗?医生有话说!
线性回归的Matlab代码实现详解