通用UART1/2/3+调试UART0

1、合宙Air780Exx系列模组,纯4G类的型号,比如Air780EPM/EHM/EHN/EHU,均有4个UART;
| Air780EPM/EHM/EHU/EHN | Air780EGP/EGG/EGH | Air780EHV | ||
|---|---|---|---|---|
| UART0 | PIN38/39 | PIN38/39 | PIN38/39 | 仅调试使用 |
| UART1 | PIN17/18 | PIN17/18 | PIN17/18 | 通用UART |
| UART2 | PIN28/29或PIN55/56或PIN84/86 | 内部已用作主控与GNSS芯片通信,外部不可再用 | PIN28/29或PIN55/56或PIN84/86 | 通用UART |
| UART3 | PIN52/53或PIN57/58 | PIN52/53或PIN57/58 | PIN52/53 | 通用UART |
- UART0,上图所示的PIN38/39,也常被写作DBG_UART,这路UART默认只能用作调试功能使用,不能当做通用UART使用,在实际的产品应用中,UART0需要在PCB上引出测试点,以便在遇到问题需要底层调试信息时使用;
注意!UART0开机时波特率为115200bps,日志开始输出后为6Mbps,不可更改;
- UART1,上图所示的PIN17/18,也常被写作MAIN_UART,其核心特点是,相对于UART2/3,UART1支持LPUART;
UART和LPUART的主要区别在于功耗、时钟源和通信速率;
功耗,LPUART专为低功耗应用设计,适合长时间运行的电池供电设备,而UART通常功耗较高;
时钟源,LPUART可由低速时钟(如32.768 kHz)驱动,而UART通常使用更高频率的时钟(26MHz);
通信速率,LPUART最高通常只支持到9600 bps,而UART则支持更高的波特率,通常最高到921600bps;
a. 因为UART1支持LPUART,所以,低功耗模式pm.WORK_MODE,1 和PSM+模式pm.WORK_MODE,3 下,UART1接收数据可以将模组唤醒;
b. UART1在 低功耗模式pm.WORK_MODE,1 下仅支持波特率9600bps时能被唤醒且不丢失数据;
如果您本来使用的就是9600bps,则无论唤醒还是数据同步都不会有问题;
如果您使用的是非9600bps波特率,比如是115200bps,模组也可以被唤醒,但会丢失掉唤醒前的一段数据;如果也需要被唤醒后的数据不丢失,在低功耗模式pm.WORK_MODE,1 下只能使用9600bps波特率;
如果您可以接受丢失掉唤醒前的一段串口数据,一般的做法是:
i. 对端MCU用模组常规模式pm.WORK_MODE,0 下正常通信时的波特率发唤醒指令,比如11520bps;
ii. 模块被唤醒后对唤醒指令不做解析,直接回复对端MCU应答指令"我醒了",模组退出低功耗,跟对端MCU正常交互;
iii. 模组需要重新进低功耗模式pm.WORK_MODE,1 时就正常进入,不需要改波特率;
如果您您需要在常规模式pm.WORK_MODE,0 下使用高速率通信,比如11520kps,同时在低功耗模式pm.WORK_MODE,1 唤醒时又可以不丢失数据,一般的做法是:
i. 模组在进入低功耗模式pm.WORK_MODE,1 前,先将串口波特率由11520bps修改为9600bps;
ii. 模组进入低功耗模式pm.WORK_MODE,1 后,对端MCU先使用波特率9600bps将发送修改波特率的指令给模块,模块退出低功耗模式,修改波特率恢复至11520bps;
iii. 波特率恢复至11520bps后,对端MCU和模组以11520bps波特率进行大量的数据交互;
iv. 以上三个步骤,如此反复;
v. 说明!仅以115200bps举例说明,其它波特率,比如460800bps/921600bps可同样参考;
c. 如果对端MCU不在模组进入低功耗模式时使用9600bps将模组唤醒,造成的后果是,MCU发送过来的前几个字节会被丢掉,直至模组被唤醒后才会被正常接收,大家在系统时务必注意这一点!
d. 如果系统设计时,业务逻辑的规划上可以接受丢掉前几个字节,直至模组唤醒后再进行正常的数据通信,也是可以的;
e. UART1在开机之初会固定吐出一些系统log,无法关闭,大家在系统实际时需要注意将这段信息过滤掉;

f. UART1最高波特率2Mbps,但在使用经典的分立三极管搭建的电平转换电路时,注意最高不能超过460800bps,如需波特率2Mbps通信,请使用专门的电平转换芯片;
g. UART1不支持硬件流控RTS/CTS;
- UART2,通用UART,在 低功耗模式pm.WORK_MODE,1 和PSM+模式pm.WORK_MODE,3 下无法将模组唤醒;
a. UART2最高波特率2Mbps,但在使用经典的分立三极管搭建的电平转换电路时,注意最高不能超过460800bps,如需波特率2Mbps通信,请使用专门的电平转换芯片;
b. UART2不支持硬件流控RTS/CTS;
UART3,通用UART,在 低功耗模式pm.WORK_MODE,1 和PSM+模式pm.WORK_MODE,3 下无法将模组唤醒;
a. UART3最高波特率2Mbps,但在使用经典分立三极管搭建的电平转换电路时,注意最高不能超过460800bps,如需波特率2Mbps通信,请使用专门的电平转换芯片;
b. UART3不支持硬件流控RTS/CTS;
2、合宙Air780Exx系列模组,通信定位二合一类的型号,比如Air780EGP/EGG/EGH,由于其内置的GNSS芯片与主芯片之间通信已占用了UART2,所以外部只能使用UART1和UART3两路UART;
3、UART1/2/3的IO电平,同GPIO电平一样,由函数 pm.ioVol() 控制,比较经典的IO电平是1.8V/2.8V/3.3V;
pm.ioVol()详细介绍:https://docs.openluat.com/osapi/core/pm/,也可以见第十二章节关于GPIO的介绍;
4、UART1/2/3能承受的IO电平上限是3.6V,高于3.6V可能会将模组损坏;
5、当对端MCU的IO电平不是1.8V/2.8V/3.3V中的一种,比如5V,这个时候就需要电平转换电路来进行电平转换,常用的经典分立三极管搭建的电平转换电路如下;

本电路在以上多个章节都有介绍,核心点是:
a. 注意Vref,不能用VDD_EXT,原因见第十二章节和第十五章节的介绍;
b. 本电平转换电路最高支持到460800bps波特率;
c. 大于460800bps波特率的电平转换需要使用专用芯片,我们使用过的有艾为和润石的两款型号;
C5162543_转换器-电平移位器_AW39112DNR_规格书_WJ61394.pdf
C783414_转换器-电平移位器_RS0102YH8_规格书_WJ152089.pdf
6、如果使用的是接插件,插拔时极易产生静电,电路上需要添加TVS保护;
推荐TVS型号如下;
样品购买链接:SIM和GPIO用,DFN1006-2封装,AR3321P1LV,应能微-淘宝网
7、LuatIO工具初始化配置;
-
任何IO管脚,都需要通过LuatIO进行初始化配置,也就是指定这个管脚这么多复用功能你要使用的那一个;
-
LuatIO工具相关介绍LuatIO初始化配置工具 - common@air780epm - 合宙模组资料中心 ;
-
有关LuatIO的说明,请见第十三章节中的介绍;
-
以Air780EPM为例,LuatIO工具界面如下;

8、UART相关LuatOS核心库 66 uart - 合宙模组资料中心 ;
