跳转至

通用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,应能微-淘宝网

AR3321P1LV.pdf

XESD100N-3V3 Rev. 0.1.pdf

CSLS03FBZ.pdf

PESDR3321P1.pdf

10、LuatIO工具初始化配置;

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