【MCAL_UART】-1.1-图文详解UART串口协议

目录

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

UARTuniversal asynchronous receiver-transmitter通用异步接发器是一种用于asynchronous serial communication异步串行通信的硬件设备/器件,该总线(BUS)有两条数据线(TX和RX),可以实现全双工的发送和接收。在嵌入式系统中,UART常用于MCU(主机)与外设芯片(从机)之间的点对点通信。

UART通常是一个单独的ICintegrated circuit集成电路),通常一个或多个UART被集成在微控制器MCU芯片中。

注意:

关于异步,同步,并行,串行,单工,半双工,全双工的介绍,详见博文“

什么是异步,同步,并行,串行,单工,半双工,全双工通信https://blog.csdn.net/qfmzhu/article/details/130332705”。

2 UART的电平

UART的电平通常使用逻辑电平TTLTransistor-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通信中,一个码元表示01两个状态,需要一个Bit表示,既一个码元等于1 Bit

在一个UART通信网络中,会约定好使用的波特率,来确保在同一时段,能够精准/相同分割逻辑1逻辑0,到了一个连续01序列位。而一个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起始位:表示一次通信的开始,用于同步,给到接收器时钟同步,准备开始接收数据;
  • 5~9位data bit数据位;表示通过UART串口发送的数据/信息;
  • 1位parity bit奇偶校验位(可选,even偶数或odd奇数);校验发送数据的正确性
  • 1/1.5/2位stop bit停止位:表示一次通信的结束。

注意:

  • 这里一次通信,可以理解为发送一个字符/字节。如果要连续发送多个字符/字节,重复该过程即可;
  • 波特率大小,是否使用parity bit,以及data bitstop bit的长度,需要事先约定好。
  • data bit先发LSB,再发MSB,如图2-2中,data bit = 0x09

4.1 start bit起始位

起始位向接收方发出信号,表示一个新的数据即将到来。

4.2 data bit数据位

起始位后,接下来的5~9 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 Bit总是处于逻辑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-1Asynchronous mode异步模式下,serial port串行端口参数设置或配置的常用速记符号,其表示:1start bit起始位8data bit数据位parity bit奇偶校验位1stop 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博客“汽车电子助手”,做您的好助手。

  • 7
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

汽车电子助手

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值