流程

  1. 空闲时线路保持 高电平(逻辑 1)
  2. 起始位,发送方先故意拉低 1 位时间(逻辑 0),这个低电平就是 “哨子”:“注意啦,我要开始发一个字节!”
  3. 接收方检测到从高→低的跳变,立刻开始按约定波特率采样后面的位。
  4. 数据位+校验位
  5. 停止位,校验位之后再发 1~2 位高电平(逻辑 1),表示“本帧结束,线路恢复空闲”,如果接收方在预期位置没采样到高电平,就会报“帧错误(frame error)”。

波特率

常用值:4800 / 9600 / 115200

例如波特率9600表示每秒传 9600 个 bit

注意:通信双方必须设为一致

校验位

校验方式规则举例(发 0x35 = 0b0011\_0101)
偶校验(even)整个帧(数据+校验)里 1 的个数 = 偶数原数据有 4 个 1 → 校验位 = 0
奇校验(odd)1 的个数 = 奇数同上 → 校验位 = 1
0 校验校验位固定为 0不用算,直接写 0
1 校验校验位固定为 1不用算,直接写 1
无校验没有第 9 位,速度快,省 1 位时间常见于现代高速 UART
  • 奇偶校验是为了使得数据+校验里的1的个数满足奇或偶,
  • 0 校验 = “第 9 位必须是 0”——简单拉低检测;
  • 1 校验 = “第 9 位必须是 1”——简单拉高检测;
  • 无校验 = “根本没有第 9 位”——速度最快,错误交给上层。

LSB&MSB

LSB = Least Significant Bit
最低有效位 → 数值最小那一位 → 先发/先存
MSB = Most Significant Bit
最高有效位 → 数值最大那一位 → 后发/后存

用 1 字节 0xB5 举例

二进制:1011 0101

位权1286432168421
10110101
别名MSB LSB

UART 规定:先传 LSB,再传 MSB

所以 0xB5 在 TXD 线上出现的顺序是:

1  0  1  0  1  1  0  1
↑  ↑  ↑  ↑  ↑  ↑  ↑  ↑
LSB              MSB
(时间从左→右)

内存/文件怎么存?

小端(Little-Endian):低地址存 LSB(x86、ARM Cortex-M)

大端(Big-Endian):低地址存 MSB(网络字节序、部分 MCU)

例:16 位数值 0x1234

分组计算0001 0010 0011 0100,8位一字节存储。

地址小端大端
0x000x34 (LSB)0x12 (MSB)
0x010x12 (MSB)0x34 (LSB)
  • LSB:数值最小,串口先发,小端先存。
  • MSB:数值最大,串口后发,大端先存。

推荐文章

七牛云防盗链测试

落霞与孤鹜齐飞秋水共长天一色

周末游

甘坑古镇,去的时候刚好小雨,里面全是穿汉服拍照的和拉客...

评论区(暂无评论)

我要评论

昵称
邮箱
网址
0/200
没有评论
可按 ESC 键退出搜索

0 篇文章已搜寻到~