UART:Universal Asynchronous Receiver / Transmitter,通用异步收发传输器,即我们通常说的串口。
串口是工程师最常用的串行外设之一,但在实际应用中还是会经常遇到各种问题。比如:丢失一字节数据。
今天我们就结合STM32来讲讲UART相关内容,以及容易丢失一字节数据的问题。
UART几个标志位 这里重点说一下UART状态寄存器中的几个标志位:TXE、 TC、 RXNE、 ORE。
这几个标志位在编程中经常使用,直接用函数库的同学可能没有关心过这几个标志位,数据丢失有可能就是对它们操作不当而导致出错。
TXE:发送数据寄存器为空 (Transmit data register empty) 0:数据未传输到移位寄存器 1:数据传输到移位寄存器
TC:发送完成 (Transmission complete)
RXNE:读取数据寄存器不为空 (Read data register not empty)
ORE:上溢错误 (Overrun error)
UART通信硬件接口 UART通信硬件接口常见有:TTL、 RS232、 RS485。
在编程时需要考虑通信接口方式,在长距离通信的时候,需要考虑线路上的延时,如果操作不当也会导致数据丢失。
1.TTL TTL比较简单,就是直接连接UART的Tx和Rx引脚,不需要外部转换。如图:
注意:Tx和Rx引脚需要交叉连接。
2.RS232 RS-232标准接口是常用的串行通信接口标准之一,规定逻辑“1”的电平为-5V~-15 V,逻辑“0”的电平为+5 V~+15 V。
选用该电气标准的目的在于提高抗干扰能力,增大通信距离。
|