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接口详细说明

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

1)UART0

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

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

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

2)UART1

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

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

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

唤醒功能:

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

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

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

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

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

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

最高波特率: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,这个时候就需要电平转换电路来进行电平转换。

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

三、软件配置指南

3.1  LuatIO工具初始化

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

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

3.2  UART相关LuatOS核心库

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

UART串口操作库详见:https://docs.openluat.com/osapi/core/uart/

今天的内容就分享到这里了~

Logo

openvela 操作系统专为 AIoT 领域量身定制,以轻量化、标准兼容、安全性和高度可扩展性为核心特点。openvela 以其卓越的技术优势,已成为众多物联网设备和 AI 硬件的技术首选,涵盖了智能手表、运动手环、智能音箱、耳机、智能家居设备以及机器人等多个领域。

更多推荐