UART接口详解

本文介绍了UART、RS232和RS485串行通信协议,包括接口定义、通信原理和实际应用。特别讨论了STM32在不同波特率下的通信稳定性,以及与PC通信时的数据位校验问题,指出在高波特率下可能存在的通讯不稳定现象,并提出了协议解析优化的解决方案。
摘要由CSDN通过智能技术生成

简介

UART全称Universal Asynchronous,中文意思就是通用异步收发传输器。可以双向通信,实现全双工传输和接收。
在嵌入式设计中,UART用于主机与辅助设备通信,如汽车音响与外接AP之间的通信,与PC机通信包括与监控调试器和其他器件,如EEPROM通信。

硬件接线

RS232

RS232接口是PC机上串行接口标配, 通常用DB9,DB9又有公头(针型)和母头(孔型)之分。
其图片如下图所示:

img

其接口定义如下:

1. DCD 载波检测
2. RXD 接收数据  -----> 终端到计算机(计算机是公头)
3. TXD 发送数据  -----> 计算机到终端(计算机是公头)
4. DTR 数据终端准备好
5. GND 信号地线
6. DSR 数据准备好
7. RTS 请求发送
8. CTS 清除发送
9. RI  振铃提示

实际的使用中,一般只需要接2,3,5。即收、发和地三根线,就能实现通信。

RS485

RS485接口通常为2条线,A和B,其图片如下图所示

img

实际的使用中,需要接线A, B两条线实现通信。

RS232和RS485比较

img

通信原理

UART用一条传输线将数据一位位地顺序传送, 以字符为传输单位. 通信中两个字符间的时间间隔多少是不固定的, 然而在同一个字符中的两个相邻位间的时间间隔是固定的。(一个字符的信息由起始位、数据位、奇偶校验位和停止位组成)。

img

  • 起始位: 先发出一个逻辑0信号, 表示传输字符的开始
  • 数据位: 可以是5~8位逻辑0或1. 如ASCII码(7位), 扩展BCD码(8位)小端传输
  • 校验位: 数据位加上这一位后, 使得1的位数应为偶数(偶校验)或奇数(奇校验)
  • 停止位: 它是一个字符数据的结束标志. 可以是1位、1.5位、2位的高电平
  • 空闲位: 处于逻辑1状态, 表示当前线路上没有数据传送

波特率
数据传送速率用波特率来表示:指每秒钟传送的二进制位数。如每秒钟传送240个字符, 而每个字符包含10位这时的波特率为2400Bd。

uart和usart的区别

UART是通用异步收发器,而USART是通用同步异步收发器。
一般而言,单片机中:

  • 名称为UART的接口一般只能用于异步串行通讯。
  • 名称为USART的接口既可以用于同步串行通讯,也能用于异步串行通讯。

事实上当我们使用USART在异步通信的时候,它与UART没有什么差别,可是用在同步通信的时候,差别就非常明显了:大家都知道同步通信需要时钟来触发数据传输,也就是说USART相对UART的差别之中的一个就是能提供主动时钟。
如STM32的USART能够提供时钟支持ISO7816的智能卡接口。

实例

针对STM32的串口数据位特点,改成对应PC的串口数据校验

通过查询STM32数据手册如下图:

img

可知:

STM32 8+E/O ==>  PC 7+E/O
STM32 8+N   ==>  PC 8+N
STM32 9+E/O ==>  PC 8+E/O
STM32 9+N   ==>  PC 9+N

需要特别注意的是:

当STM32芯片设置8+E/O的时候,PC端设置7+E/O,通过串口收发数据会发现,PC端发送到STM32芯片是异常的,但是PC端接收到STM32芯片的数据是正常的。

img

原因
因为STM32的文档里(串口设置的数据长度包含校验位),即一旦使能了校验位,则数据位设置了8位,就变成7位数据+1位校验位。
所以此时的STM32的串口设置相当于PC端设置7+E/O。

  • 当PC端发送数据的时候:
    STM32收到的数据是7位数据+1位校验位,但是因为STM32里面不支持7位数据位,所以这个时候会出现接收数据异常。

  • 当PC端接收数据的时候:
    STM32发送的数据是7位数据+1位校验位,刚好和PC端设置7+E/O是一样的,所以这个时候接收时正常的。

当使用9600波特率的时候,通讯稳定,当使用115200波特率的时候,通讯变得不稳定。

串行通信中,数据位信号流在信号线上传输时,要引起畸变,畸变的大小与以下的因素有关:

  • 波特率-----信号线的特征(频带范围)
  • 传输距离—信号的性质及大小(电平高低,电流大小)
  • 当畸变较大时,接收出现误码。

在规定的误码率下,当波特率,信号线,信号的性质及大小一定时,串行通信的传输距离就一定。为了加大传输距离,必须加调制解调器。

最终解决方案:
既然硬件通讯过程中会出现错误的情况,通讯协议在解析的时候考虑到兼容这种情况,那么对协议解析进行优化处理,后续验证可以。

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

啊唯0o

如果能够帮助到您,不介意的话,

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

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

打赏作者

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

抵扣说明:

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

余额充值