构建可靠UART通信:基于特性的硬件选型与软件配置规范

UART通信的稳定性不仅取决于协议本身,更取决于对其实现特性的深刻理解与合理应用。不同MCU的UART模块在采样机制、波特率生成精度、FIFO深度等方面存在差异,直接影响通信容错能力。硬件设计需考虑驱动能力、抗干扰措施与电源隔离,软件则需根据应用场景合理配置数据格式、流控与错误处理机制。以UART接口的核心特性为基础,提出一套从元器件选型到固件编程的规范化设计流程,帮助提升系统通信的可靠性与可维护性。

本文将以Air780Exx系列模组为例解析各UART接口的特性,并提供从硬件设计到软件配置相关指南,助你构建稳定通信与低功耗运行兼备的可靠应用。

一、UART接口特性

1.1 UART接口配置总览

调试UART (UART0):固定用于系统调试,不可作为通用串口使用。

通用UART(UART1、UART2、UART3):可用于与外部MCU、传感器或其他设备通信。

1.2 不同型号的UART差异

纯4G型号:如Air780EPM/EHM/EHN/EHU,4路UART全部可用(UART0,1,2,3)。

通信定位二合一型号:如Air780EGP/EGG/EGH,因其内置GNSS芯片已占用UART2与主芯片通信,故仅UART1和UART3可供外部使用。

1.3 UART接口详细说明

image

下文以Air780EPM管脚图为例进行详细介绍:

1)UART0

上图所示的PIN38/39,也常被写作DBG_UART。

这路UART默认只能用作调试功能使用,不能当做通用UART使用。在实际的产品应用中,UART0需要在PCB上引出测试点,以便在遇到问题需要底层调试信息时使用。

特别注意:UART0开机时波特率为115200bps,日志开始输出后为6Mbps,不可更改。

2)UART1

上图所示的PIN17/18,也常被写作MAIN_UART。

其核心特点是:相对于UART2/UART3,UART1支持LPUART。

image

低功耗模式下的重要特性与注意事项:

唤醒功能:

因为UART1支持LPUART,所以低功耗模式下UART1接收数据可以将模组唤醒。

低功耗下波特率:UART1在低功耗模式pm.WORK_MODE,1下,仅支持波特率9600bps。

一般的做法是,模组进入低功耗模式后,对端MCU先使用波特率9600bps将模组唤醒,然后再同步进入设置好的高速率进行通信,比如常见的115200bps。

如果对端MCU不在模组进入低功耗模式时使用9600bps将模组唤醒,造成的后果是,MCU发送过来的前几个字节会被丢掉,直至模组被唤醒后才会被正常接收。大家在系统设计时务必注意这一点!

如果系统设计时,业务逻辑的规划上可以接受丢掉前几个字节,直至模组唤醒后再进行正常的数据通信,也是可以的。

UART1在开机之初会固定吐出一些系统log,无法关闭,大家在系统设计时需要注意将这段信息过滤掉:

image

最高波特率:UART1最高波特率2Mbps,但在使用经典的分立三极管搭建的电平转换电路时,注意最高不能超过460800bps,如需波特率2Mbps通信,请使用专门的电平转换芯片。

硬件流控:UART1不支持硬件流控RTS/CTS。

3)UART2/UART3

通用UART,在低功耗模式pm.WORK_MODE,1下无法将模组唤醒。

最高波特率:UART2/UART3最高波特率2Mbps,但在使用经典的分立三极管搭建的电平转换电路时,注意最高不能超过460800bps,如需波特率2Mbps通信,请使用专门的电平转换芯片。

硬件流控:UART2/UART3不支持硬件流控RTS/CTS。

二、硬件设计关键要点

2.1 IO电平控制与限制

电平控制:UART1/2/3的IO电平同GPIO电平一样,由函数pm.ioVol()控制;比较经典的IO电平是1.8V/2/8V/3.3V。

pm.ioVol()具体介绍详见API文档:https://docs.openluat.com/osapi/core/pm/

耐压极限:UART1/2/3能承受的IO电平上限是3.6V,高于3.6V可能会将模组损坏。

2.2 电平转换电路参考设计

当对端MCU的IO电平不是1.8V/2/8V/3.3V中的一种,比如5V,这个时候就需要电平转换电路来进行电平转换。

常用的经典分立三极管搭建的电平转换电路如下:

image
image

三、软件配置指南

3.1 LuatIO工具初始化

任何IO管脚,都需要通过LuatIO进行初始化配置,也就是指定这个管脚这么多复用功能你要使用的那一个。

LuatIO工具相关介绍详见:https://docs.openluat.com/air780epm/common/luatio/

image

3.2 UART相关LuatOS核心库

LuatOS的UART库通过简洁的API(如uart.setup、uart.write、uart.on)封装了底层硬件细节,为开发者提供了初始化配置、数据收发及事件回调等完整的串口操作功能,极大简化了多场景下的串口通信开发。

UART串口操作库详见:https://docs.openluat.com/osapi/core/uart/
image
今天的内容就分享到这里了~

posted @ 2025-12-26 17:40  合宙LuatOS  阅读(24)  评论(0)    收藏  举报