目录
1 什么是UART
2 UART的电平
3 UART的波特率
4 UART帧格式
4.1 start bit起始位
4.2 data bit数据位
4.3 parity bit奇偶校验位
4.4 stop bit停止位
5 什么是8-N-1
6 UART总线负载率计算
结尾
优质博文推荐阅读(单击下方链接,即可跳转):
点击返回「《Autosar从入门到精通-实战篇》总目录」
点击返回「《Autosar_BSW高阶配置》总目录」
点击返回「《Autosar_MCAL高阶配置》总目录」
点击返回《嵌入式软件开发》专栏
1 什么是UART
UART:universal asynchronous receiver-transmitter通用异步接发器是一种用于asynchronous serial communication异步串行通信的硬件设备/器件,该总线(BUS)有两条数据线(TX和RX),可以实现全双工的发送和接收。在嵌入式系统中,UART常用于MCU(主机)与外设芯片(从机)之间的通信。
UART通常是一个单独的IC(integrated circuit集成电路),通常一个或多个UART被集成在微控制器MCU芯片中。
注意:
关于异步,同步,并行,串行,单工,半双工,全双工的介绍,详见博文“
什么是异步,同步,并行,串行,单工,半双工,全双工通信https://blog.csdn.net/qfmzhu/article/details/130332705”。
2 UART的电平
UART的电平通常使用逻辑电平TTL(Transistor-Transistor Logic)。该电平的来源MCU或外设芯片的供电。如果MCU或外设芯片的供电是5V,则5V等价于逻辑1,0V等价于逻辑0;如果MCU或外设芯片的供电是3.3V,则3.3V等价于逻辑1,0V等价于逻辑0。
图2-1 UART的TTL电平
注意:
如果MCU和外设芯片的供电不一样(一个5V,另一个3.3V),需要在二者之间加一个电平转换芯片,来满足通信。
图2-2 示波器下,一个UART帧波形,逻辑电平为3.3V(无parity bit,data bit长度为8,data bit = 0x09)
3 UART的波特率
波特率概念,我们在博文中“【图解CAN总线】-3-详述波特率(Raud Rate)和比特率(Bit Rate)二者的差异https://blog.csdn.net/qfmzhu/article/details/122805699”提到过。
波特率(Raud Rate)的定义:指单位时间内传输的码元数,单位:波特,b/s(Baud per second)
在通信领域中,常用时间间隔相同的符号来表示一个二进制数字,这样的时间间隔内的信号称为码元。而一个信号需要的间隔被称为码元长度。
每个码元需要通过几个比特(Bit)来表示,所以传输一个码元等于传输了几个比特(Bit)。例如,若使用0、1、2、3、4、5、6、7共8个状态值,则需要3个比特来表示一个信号值,所以一个码元不一定对应一个比特。
由于在UART通信中,一个码元表示0和1两个状态,需要一个Bit表示,既一个码元等于1 Bit。
在一个UART通信网络中,会约定好使用的波特率,来确保在同一时段,能够精准/相同分割逻辑1和逻辑0,到了一个连续0和1序列位。而一个UART Frame则由多个0和1序列位组成。
UART常用的波特率有9600bps,既一个Bit Time:1s / 9600 = 104微秒。
图3-1 示波器下,一个波特率为9600bps的UART帧波形,一个起始位的Bit Time为104微秒
4 UART帧格式
图4-1 UART帧格式
一个Uart Frame帧由以下几个部分组成:
- 1位start bit起始位:表示一次通信的开始,用于同步,给到接收器时钟同步,准备开始接收数据;
- 8位data bit数据位;表示通过UART串口发送的数据/信息;
- 1位parity bit奇偶校验位(可选,even偶数或odd奇数);校验发送数据的正确性
- 1/1.5/2位stop bit停止位:表示一次通信的结束。
注意:
- 这里一次通信,可以理解为发送一个字节。如果要连续发送多个字节,重复该过程即可;
- 波特率,是否使用parity bit,以及data bit和stop bit的长度,需要事先约定好。
- data bit先发LSB,再发MSB,如图2-2中,data bit = 0x09。
4.1 start bit起始位
起始位向接收方发出信号,表示一个新的数据即将到来。
4.2 data bit数据位
起始位后,接下来的五到九位,取决于所采用的代码集。既该UART帧携带的数据/信息。
注意对比图2-2和图4-2:少了一个高位。
图4-2 示波器下,data bit长度为7bit的UART波形(无parity bit,data bit = 0x09)
4.3 parity bit奇偶校验位
UART中的校验位(Parity Bit)是一种用于检测和纠正传输错误的简单错误检测和校正方法。校验位是在UART通信中的数据位之后添加的一位,用于检测数据传输过程中的错误。
Parity Bit校验位可以有三种不同的类型:
奇校验(Odd Parity):如果数据位中的1的个数为奇数,校验位就被设置为0;如果数据位中的1的个数为偶数,校验位就被设置为1,见图4-3和图4-4;
偶校验(Even Parity):如果数据位中的1的个数为偶数,校验位就被设置为0;如果数据位中的1的个数为奇数,校验位就被设置为1,见图4-5和图4-6;
无校验(No Parity):表示不使用校验位。
图4-3 示波器下,data bit数据=0x09的UART波形(奇校验)
图4-4 示波器下,data bit数据=0x0B的UART波形(奇校验)
图4-5 示波器下,data bit数据=0x09的UART波形(偶校验)
图4-6 示波器下,data bit数据=0x0B的UART波形(偶校验)
4.4 stop bit停止位
接下来的1个或2个位总是处于逻辑1状态,称为停止位(s)。它们向接收方发出信号,表示字节已经发送完成。由于起始位是逻辑低电平0,停止位是逻辑高电平1,所以在字节之间总是至少有两个保证信号变化。
图4-7和图4-8分别连续发了两个数据(0x09和0x0B),stop bit长度分别为1bit和2bit
图4-7 示波器下,stop bit长度为1bit的UART波形(无parity bit)
图4-8 示波器下,stop bit长度为2bit的UART波形(无parity bit)
5 什么是8-N-1
8-N-1是Asynchronous mode异步模式下,serial port串行端口参数设置或配置的常用速记符号,其表示:1个start bit起始位、8个data bit数据位、无parity bit奇偶校验位和1个stop bit停止位。
该缩写通常与通信链路速度一起给出,单位为bps(bits per second,其是波特率Baud单位),如9600-8-N-1。该速度描述了通信链路的最大带宽:其用于成Frame帧的Bit总数需要低于bit transmission rate比特传输率。对于8-N-1编码,一Frame帧只有80%的Bit可用于数据(对于每8个bit的数据,在串行链路上发送10个bit:1个起始位、8个数据位和1个停止位)。
6 UART总线负载率计算
因为UART是全双工通信,分别有一个TX链路和RX链路,所以需要分开考虑各通信链路的负载率。
假设UART串口参数设置为9600-8-N-1,既一个UART帧为10Bit。此时你可以通过统计1秒内,串口工具或者嵌入式软件接收到的UART帧数n(这里也可以理解为接收到字节数),来计算负载率:((n * 10) / 9600) * 100%
结尾
获取更多“汽车电子资讯”和“工具链使用”,
请关注CSDN博客“汽车电子助手”,做您的好助手。