通用UART1/2/3/11/12+调试UART0/10

1、Air8000系列模组,对外开放的,和仅对内使用的,全部加起来一共有七路UART;
| Air8000A/U/N/AB | Air8000W | Air8000D/DB | Air8000T | |||
|---|---|---|---|---|---|---|
| 主CPU | UART0 | PIN46/47 | PIN46/47 | PIN46/47 | PIN46/47 | 仅调试使用 |
| UART1 | PIN16/17 | PIN16/17 | PIN16/17 | PIN16/17 | 通用UART | |
| UART2 | 内部已用作主控与GNSS芯片通信,外部不可再用 | PIN40/41或PIN94/95 | 内部已用作主控与GNSS芯片通信,外部不可再用 | PIN40/41或PIN89/92或PIN94/95 | 通用UART | |
| UART3 | PIN25/26或PIN38/39 | PIN25/26或PIN38/39 | PIN25/26或PIN38/39 | PIN25/26或PIN38/39 | 通用UART | |
| 辅CPU | UART10 | PIN57/58 | PIN57/58 | 无 | 无 | 仅调试使用 |
| UART11 | PIN48/49 | PIN48/49 | 无 | 无 | 通用UART | |
| UART12 | PIN59/60 | PIN59/60 | 无 | 无 | 通用UART |
接下来,我们将按照这七路UART分属不同的芯片为区别,进行逐一的介绍;
2、4G主控芯片下的4路UART;
- UART0,上图所示的PIN46/47,也常被写作DBG_UART,这路UART默认只能用作4G主控芯片底层日志的抓取,不能当做通用UART使用,在实际的产品应用中,UART0需要在PCB上引出测试点,以便在遇到问题需要底层调试信息时使用;
注意!UART0开机时波特率为115200bps,日志开始输出后为6Mbps,不可更改; - UART1,上图所示的PIN16/17,也常被写作MAIN_UART,其核心特点是,相对于UART2/3,UART1支持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;
c. Air8000A/Air8000U/Air8000N/Air8000D/Air8000AB/Air8000DB的UART2用于内部4G主控芯片与GNSS芯片的通信用; - UART3,通用UART,在 低功耗模式pm.WORK_MODE,1 和PSM+模式pm.WORK_MODE,3 下无法将模组唤醒;

a. UART3最高波特率2Mbps,但在使用经典分立三极管搭建的电平转换电路时,注意最高不能超过460800bps,如需波特率2Mbps通信,请使用专门的电平转换芯片;
b. UART3不支持硬件流控RTS/CTS;
3、WiFi芯片下的3路UART;
- UART10,预留作为内部WiFi芯片底层日志的抓取,不可用作通用UART,也不可复用为GPIO使用;
波特率固定2Mbps,不可更改;
- UART11,通用UART,在 低功耗模式pm.WORK_MODE,1 和PSM+模式pm.WORK_MODE,3 下无法将模组唤醒;
a. UART11最高波特率2Mbps,但在使用经典的分立三极管搭建的电平转换电路时,注意最高不能超过460800bps,如需波特率2Mbps通信,请使用专门的电平转换芯片;
b. UART11不支持硬件流控RTS/CTS;
- UART12,通用UART,在 低功耗模式pm.WORK_MODE,1 和PSM+模式pm.WORK_MODE,3 下无法将模组唤醒;
a. UART12最高波特率2Mbps,但在使用经典的分立三极管搭建的电平转换电路时,注意最高不能超过460800bps,如需波特率2Mbps通信,请使用专门的电平转换芯片;
b. UART12不支持硬件流控RTS/CTS;
4、Air8000系列模组的8个子型号中,带有GNSS定位的6个型号:Air8000A/Air8000U/Air8000N/Air8000D/Air8000AB/Air8000DB,内部已将UART2作为4G主控芯片与内部GNSS芯片通信使用,外部不可再用;

5、合宙Air780Exx系列模组,通信定位二合一类的型号,比如Air780EGP/EGG/EGH,由于其内置的GNSS芯片与主芯片之间通信已占用了UART2,所以外部只能使用UART1和UART3两路UART;
6、UART1/2/3的IO电平,同GPIO电平一样,由函数 pm.ioVol() 控制,比较经典的IO电平是1.8V/2.8V/3.3V;
pm.ioVol()详细介绍:https://docs.openluat.com/osapi/core/pm/,也可以见第十二章节关于GPIO的介绍;
7、UART1/2/3能承受的IO电平上限是3.6V,高于3.6V可能会将模组损坏;
8、Air8000全系IO固定3.3V,所以,当对端MCU的IO电平不是3.3V时,比如1.8V或者5V,这个时候就需要电平转换电路来进行电平转换;
以对端MCU的IO电平为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,应能微-淘宝网
10、LuatIO工具初始化配置;
- 任何IO管脚,都需要通过LuatIO进行初始化配置,也就是指定这个管脚这么多复用功能你要使用的那一个;
- LuatIO工具相关介绍LuatIO初始化配置工具 - common@air780epm - 合宙模组资料中心 ;
- 有关LuatIO的说明,请见第十三章节中的介绍;
- 以Air8000A为例,LuatIO工具界面如下;

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