前言
UART应该是嵌入式工程师使用最多的总线之一。笔者总是忘记一些细节。特意抓图记录一下。
实例
设置:115200 8N1
时序
知识点
- IDLE时为高电平。
- LSB对齐
- 8N1代表8个数据位(协议可以是5 ~ 9位)。N代表没有奇偶校验位。1代表1个停止位。
- 由高电平转低电平,表示Start或者下一个bit。
- 图 时序 中,测量0(红色框框,标0的两个测试点)。表示一个bit位宽。
bit位宽 = 1 / 115200 = 8.68e-6s = 8.68us
。这里的0.05us左右的偏差是逻辑分析仪采样精度和串口控制器精度引起的误差。注意,通过位宽也可以推算波特率。 - 图 时序 中,测量1包含一个1Start位和2个数据位。
- 图 时序 中,测量2包含一个1Start位、8个数据位和一个停止位,正是8N1。核算一下,测量2中的白色小点对应的数据,分别是0b01011100。因为是LSB对齐,所以对应于
0b00111010 = 0x3A = 58
正是字符:
- 流控。暂时没用到,以后再记录。