UART串口通信简记
流程空闲时线路保持 高电平(逻辑 1)起始位,发送方先故意拉低 1 位时间(逻辑 0),这个低电平就是 “哨子”:“注意啦,我要开始发一个字节!”接收方检测到从高→低的跳变,立刻开始按约定波特率采样后面的位。数据位+校验位停止位,校验位之后再发 1~2 位高电平(逻辑 1),表示“本帧结束,线路恢复空闲”,如果接收方在预期位置没采样到高电平,就会报“帧错误(frame error)”。波特率常用值:4800 / 9600 / 115200例如波特率9600表示每秒传 9600 个 bit注意:通信双方必须设为一致校验位校验方式规则举例(发 0x35 = 0b0011_0101)偶校验(even)整个帧(数据+校验)里 1 的个数 = 偶数原数据有 4 个 1 → 校验位 = 0奇校验(odd)1 的个数 = 奇数同上 → 校验位 = 10 校验校验位固定为 0不用算,直接写 01 校验校验位固定为 1不用算,直接写 1无校验没有第 9 位,速度快,省 1 位时间常见于现代高速 UART奇偶校验是为了使得数据+校验里的1的个数满足奇或偶,0 校验 = “第 9 位必须是 0”——简单拉低检测;1 校验 = “第 9 位必须是 1”——简单拉高检测;无校验 = “根本没有第 9 位”——速度最快,错误交给上层。LSB&MSBLSB = Least Significant Bit最低有效位 → 数值最小那一位 → 先发/先存MSB = Most Significant Bit最高有效位 → 数值最大那一位 → 后发/后存用 1 字节 0xB5 举例二进制:1011 0101位权1286432168421值10110101别名MSB LSBUART 规定:先传 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:数值最大,串口后发,大端先存。