UART协议

参考博客:
 
Uart:Universal Asyncchronous Receiver Transmitter即通信异步收发器,是一种通用的串行、异步通信总线。该总线有两条数据线,可以实现全双工的发送和接收,在嵌入式系统中常用于主机与设备之前的通信
波特率:波特率用来描述UART通信时的通信速度,其单位为bsp(bit per second),即每秒钟传送的bit数量,例如波特率为115200,就是每秒中传输115200bit数据
 

UART帧格式:

0
1、启动位也称起始位
2、字符数据5-8位,先发低位,再发高位,一般发八位,符合一个字节
3、校验位可有可无,一般为奇校验或者偶校验,取决于控制器设置,校验位仅校验数据是否正确,无法纠正数据
4、停止位一般为1bit
5、发收双发需设置相同波特率才能正常进行通信
 

UART的优缺点:

以下是uart通信的一些优缺点:
优点:
1.仅使用两根传输线
2.无需时钟信号
3.具有奇偶校验位以允许进行错误检查
4.只要双方都设置好数据包的结构,即可改变其数据包结构
缺点:
1.数据帧的大小最大为9位
2.不支持多个从属系统或多个主系统
3.每个UART的波特率必须在彼此的10%之内
 

UART的CTS和RTS:

有些uart控制器会加上RTS和CTS信号线,如下:

RTS和CTS用于流控,提供了流控信号,但实际的流控功能还是要在软件实现,就是说即使硬件上RTS和CTS做了连线,但软件没有使用这两个信号,则通信就如无流控状态。

RTS (Require ToSend,发送请求)为输出信号,用于指示本设备准备好可接收数据,低电平有效,低电平说明本设备可以接收数据。
CTS (Clear ToSend,发送允许)为输入信号,用于判断是否可以向对方发送数据,低电平有效,低电平说明本设备可以向对方发送数据

RTS的作用是告诉对方我可以接受数据,是输出口;CTS的作用是根据电平高低控制发送或不发送数据。
如:A与B通信,现在A给B发送数据,当B出现某种情况(可能是接受缓存快要满了)的时候,B的RTS拉低(一般拉低表示有效,但也不一定),A的CTS是与B的RTS相连的,则A检测到它的CTS拉低,就知道B在告诉他暂时不要再发了。他就乖乖地停止发送。等到B可以继续接收数据的时候,B的RTS拉高,这时候A的CTS也拉高,A就知道可以继续发送数据了。如果A和B收发情况换一下也是一样的道理
 

CTS/RTS流控的工作原理如下:

当串口准备好发送数据时,RTS信号一般只会被置高电平一次,也就是只有一个上升沿。这个上升沿会被接收端的芯片检测到,如果当前可以接收数据,接收端发送一个CTS(Clear To Send)信号(该信号一直保持高电平),表示接收端已经准备好接收数据了。如果接收端的缓冲区已经满了,CTS信号会被置低电平,发送端就会停止发送数据,等待接收端的缓冲区有空间可以存放新的数据后再继续发送;
当发送端接收到CTS信号后,发送端的RTS电平会被拉高,开始发送数据;
当发送端发送完数据后,会将RTS信号置为低电平,表示发送数据结束。此时,接收端的CTS信号也会被置为低电平,表示不再需要接收数据;

 

TTL、RS-232、RS-485:

均是串行通信标准,可参考https://www.cnblogs.com/lethe1203/p/18078494
posted @ 2024-03-17 15:06  lethe1203  阅读(14)  评论(0编辑  收藏  举报