乐于分享
好东西不私藏

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

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