前面已经介绍了串口的基本用法,本文将使用两个串口(UART1、UART2)进行分别通信的演示。
大家可先跳转至 3.5 介绍串口如何接线中查看单串口的接线说明,在学会了 UART1 接线和 UART2 接线后,只需将这两个通用串口同时接上对应位置即可。
本文中字符串编码格式为 UTF-8 编码格式,SSCOM 串口调试工具的编码格式为 GB2312,所以导致无法正确显示字符串中的中文,需要注意。
代码运行结果:
UART 电平是指串行通信中使用的电压电平标准。常见的串口电平标准有 RS-232、TTL 和 RS-485 等。
1、RS-232 电平:RS-232 是一种常用的串口通信标准,它使用负逻辑电平,即逻辑 1 用 -3V 到 -15V 表示,逻辑 0 用 +3V 到 +15V 表示。RS-232 电平适用于短距离、低速率的通信。
2、TTL 电平:TTL(Transistor-Transistor Logic)电平是一种常见的数字电路电平标准,它使用正逻辑电平,即逻辑 1 用 +5V 表示,逻辑 0 用 0V 表示。TTL 电平适用于短距离、高速率的通信。
3、RS-485 电平:RS-485 是一种常用的串口通信标准,它使用差分电平,即逻辑 1 用 +2V 到 +6V 表示,逻辑 0 用 -2V 到 -6V 表示。RS-485 电平适用于长距离、高速率的通信。
在串口通信中,选择合适的电平标准非常重要,它直接影响到通信的可靠性和稳定性。
Air724UG 模块的 UART IO 电压默认为 1.8V,如果要和 3.3V/5V 的 MCU 或其他串口外设通信,必须要加电平转换电路
1、串口电平电压过低或过高可能会导致什么问题? 如果电压过低,可能会导致接收器无法正确识别信号,如果过高,可能会导致信号损坏或损坏接收器。概述:可能会导致串口无法正常通讯,或通讯数据会突然出现乱码,数据错乱等问题。
串口接收到乱码通常是由于数据格式不匹配或信号干扰等原因引起的。以下是一些可能导致乱码的情况及其解决方法:
1、波特率不一致 - 情况:发送方和接收方的波特率设置不同。- 解决:确保两端的波特率设置一致。
2、数据位、停止位或校验位不匹配 - 情况:数据格式不一致,例如数据位数、停止位或是否使用校验位。- 解决:确认发送和接收的设置一致。例如,常用设置为8个数据位、1个停止位、无校验。
3、信号干扰 - 情况:外部干扰导致信号失真。- 解决:使用屏蔽线缆,缩短线缆长度,避免在电磁干扰强的环境中使用。
4、接线错误 - 情况:TX(发送)和RX(接收)线接反。- 解决:检查接线,确保正确连接。
5、设备未正确初始化 - 情况:发送设备未配置好,导致数据格式不正确。- 解决:检查发送设备的初始化代码和配置,确保正确设置。
6、缓冲区溢出 - 情况:接收端处理速度慢,导致数据被覆盖。- 解决:提高接收端处理速度,或者增加缓冲区大小。
7、电源问题 - 情况:设备供电不足或不稳定。- 解决:检查电源供应,确保设备正常供电。
8、数据编码不一致 - 情况:发送和接收使用不同的字符编码(如ASCII与UTF-8)。- 解决:确保两端使用相同的字符编码。
9、物理连接问题 - 情况:接口接触不良或线缆损坏。- 解决:检查串口连接,确保接触良好,必要时更换线缆。
10、串口驱动问题 - 情况:驱动程序不兼容或未正确安装。- 解决:检查并更新串口驱动程序。
出现漏发和接收不到的情况,大概率是因为模块转向时间设置的问题,模块收不到数据可能是因为没有设置转向脚,导致只能发不能收,出现漏发的情况,大概率是因为转向时间设置和设备的实际转向存在偏差导致漏数据的情况,可以通过 uart.set_rs485_oe()接口调整转向时间,通常 9600 波特率设置 3500us 的转向时间。
如果出现模块串口接收不到数据的情况,首先排查软件方面逻辑是否写的正确,可以按照 Uart 的 demo 进行测试,如果 demo 也不行的话,排查下模块端和设备端是否为 rx-tx,tx-rx 这样的接法,避免 rx-rx,tx-tx,如果接线也都正常的话确定下波特率方面,如果有条件的话,可以直接通过逻辑分析仪/示波器检测模块的 rx/tx 脚看是否收到数据或者发送数据。
文章评论(0条评论)
登录后参与讨论