打印
[资源共享]

串口丢数据常见的原因

[复制链接]
1074|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
duo点|  楼主 | 2022-9-16 10:35 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
UART:Universal Asynchronous Receiver / Transmitter,通用异步收发传输器,即我们通常说的串口。

串口是工程师最常用的串行外设之一,但在实际应用中还是会经常遇到各种问题。比如:丢失一字节数据。

今天我们就结合STM32来讲讲UART相关内容,以及容易丢失一字节数据的问题。


UART几个标志位

这里重点说一下UART状态寄存器中的几个标志位:TXE、 TC、 RXNE、 ORE。


这几个标志位在编程中经常使用,直接用函数库的同学可能没有关心过这几个标志位,数据丢失有可能就是对它们操作不当而导致出错。

TXE:发送数据寄存器为空 (Transmit data register empty)

  • 0:数据未传输到移位寄存器

  • 1:数据传输到移位寄存器



TC:发送完成 (Transmission complete)

  • 0:传送未完成

  • 1:传送已完成



RXNE:读取数据寄存器不为空 (Read data register not empty)

  • 0:未接收到数据

  • 1:已准备好读取接收到的数据



ORE:上溢错误 (Overrun error)

  • 0:无上溢错误

  • 1:检测到上溢错误



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。

选用该电气标准的目的在于提高抗干扰能力,增大通信距离。


使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

427

主题

1596

帖子

1

粉丝