UART千万别乱用,硬件设计和软件配置“禁区”

合宙低功耗系列模组/工业引擎产品为物联网应用提供了强大的UART资源支持,但其不同接口在功能、功耗及可用性上存在关键差异:
-
调试UART为何不可复用?
-
为何仅有UART1能实现低功耗唤醒?
-
不同型号的可用串口数量有何不同?
-
在硬件电平转换和软件配置上,又有哪些必须注意的“禁区”?
-
……
本文将以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。
▼ 主要区别 ▼
UART和LPUART的主要区别在于功耗、时钟源和通信速率:
-
功耗:LPUART专为低功耗应用设计,适合长时间运行的电池供电设备,而UART通常功耗较高;
-
时钟源:LPUART可由低速时钟(如32.768 kHz)驱动,而UART通常使用更高频率的时钟(26MHz);
-
通信速率:LPUART最高通常只支持到9600bps,而UART则支持更高的波特率,通常最高到921600bps。
低功耗模式下的重要特性与注意事项:
唤醒功能:
因为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,这个时候就需要电平转换电路来进行电平转换。
常用的经典分立三极管搭建的电平转换电路如下:

▼ 相关注意事项 ▼
本电路在多个章节都有介绍,核心点如下:
-
电路中的参考电压(Vref)不能直接使用模组的VDD_EXT引脚供电。
具体原因请参考硬件设计相关章节:
https://docs.openluat.com/air780epm/product/air780exxpins/
-
本电平转换电路最高支持到:460800bps波特率;
-
大于460800bps波特率的电平转换,需要使用专用芯片。
我们使用过的两款专用芯片型号:艾为C5162543、润石C783414。
三
软件配置指南
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/


今天的内容就分享到这里了,欢迎加技术交流群共同探讨。
合宙LuatOS提供一站式物联网高效解决方案,集成高速通信、外设驱动、UI交互及视觉处理,助力行业客户快速落地产品,同时实现极致低功耗——相较于传统的“串口屏+DTU方案”或安卓方案,功耗减半,成本不足三分之一。
更多开发资料,详见合宙资料中心:
docs.openluat.com

夜雨聆风
