参考博客:https://blog.csdn.net/weixin_49259827/article/details/133761740 Uart:Universal Asyncchronous Receiver Transmitter即通信异步收发器,是一种通用的串行、异步通信总线。该总线有两条数据线,可以实现全双工的发送和接收,在嵌入式系统中常用于主机与设备之前的通信 波特率:波特率用来描述UART通信时的通信速度,其单位为bsp(bit per second),即每秒钟传送的bit数量,例如波特率为115200,就是每秒中传输115200bit数据
UART帧格式:
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,发送允许)为输入信号,用于判断是否可以向对方发送数据,低电平有效,低电平说明本设备可以向对方发送数据
CTS/RTS流控的工作原理如下:
当串口准备好发送数据时,RTS信号一般只会被置高电平一次,也就是只有一个上升沿。这个上升沿会被接收端的芯片检测到,如果当前可以接收数据,接收端发送一个CTS(Clear To Send)信号(该信号一直保持高电平),表示接收端已经准备好接收数据了。如果接收端的缓冲区已经满了,CTS信号会被置低电平,发送端就会停止发送数据,等待接收端的缓冲区有空间可以存放新的数据后再继续发送;
当发送端接收到CTS信号后,发送端的RTS电平会被拉高,开始发送数据;
当发送端发送完数据后,会将RTS信号置为低电平,表示发送数据结束。此时,接收端的CTS信号也会被置为低电平,表示不再需要接收数据;