Air8000G GPIO 设计说明
1. 概述
- 开发方式:Air8000G 仅支持 LuatOS 软件开发方式,不支持 AT 指令开发方式。若使用 AT 指令开发方式,可选择合宙价格较低的 Air780EQ。
- LuatOS 开发优势:相对 C-SDK 入门更简单,开发更方便,开发时间更快。
- 适用对象:本文的 GPIO 设计指导针对 Air8000G 用于 LuatOS 开发方式时的注意事项。
- GPIO 及 WAKEUP 管脚数量:Air8000G 模块共支持 35 个 GPIO 35 个 GPIO 口 35 个 GPIO 中分为普通 GPIO,AGPIO,AGPIOWU,WAKEUP。
其中AGPIO,AGPIOWU,WAKEUP为如下列表:
管脚编号 |
管脚名称 |
描述 |
---|---|---|
AGPIOWU |
||
23 |
GPIO20 |
低功耗模式可输出 |
24 |
GPIO21 |
低功耗模式可输出 |
AGPIO |
||
36 |
CAN_TXD |
低功耗模式可输出,可唤醒air8000G |
35 |
CAN_STB |
低功耗模式可输出,可唤醒air8000G |
37 |
CAN_RXD |
低功耗模式可输出,可唤醒air8000G |
WAKEUP |
||
44 |
WAKEUP0 |
可唤醒air8000G |
2 |
VBUS |
可唤醒air8000G,可支持5V电平,常用于检测USB 电源插入 |
14 |
PWRKEY |
可唤醒air8000G,常用于按键开机 |
43 |
WAKEUP6 |
可唤醒air8000G |
2. GPIO 复用表
3. GPIO 详细特性
Air8000G 的 GPIO 口根据特性分为三种类型:普通 IO、AGPIO、AGPIOWU 、Wakeup IO。不同特性的 GPIO 在驱动能力以及低功耗模式/PSM+ 模式下的表现有较大区别,使用时需注意。
GPIO类型 | 常规模式下输入 | 常规模式下输出 | 低功耗/PSM+模式下中断输入 | 低功耗/PSM+模式下输出 | 上下拉配置 | 电压域(V) | 驱动电流 | 注意事项 |
---|---|---|---|---|---|---|---|---|
普通GPIO | √ | √ | × | × | √ | 3.3 | 单个管脚≤10mA,总和不能超过200mA; | 普通GPIO在低功耗模式和PSM+模式下均会处于掉电状态,并且随着系统间歇性唤醒与基站交互而频繁产生高脉冲; |
AGPIO | √ | √ | × | √ | √ | 3.3 | 总共驱动电流不能超过 5mA | 电压一致性没有普通IO电压一致性高,普通IO电压偏差在0.05V以内,AGPIO在0.15V以内 |
AGPIOWU | √ | √ | √ | √ | × | 2 | <30uA | 电压一致性没有普通IO电压一致性高,普通IO电压偏差在0.05V以内,AGPIO在0.15V以内 |
WAKEUP | √ | × | √ | × | × | 3.3 | <30uA | WAKEUP固定电平1.8V,由于内部分压,实测电平电压值在1.1V左右 |
4. 软件使用方法
4.1 pins_Air8000G.json 配置方法
例如需要35 管脚复用为GPIO27,可以如下配置:
{
" pins" : [
[35, "GPIO27", " PIN35脚,做GPIO27用, 用于控制XXX"],
]
}
4.2 注意事项
注意:wakeup 没有gpio 号,在软件上可以用gpio.WAKEUP0 , gpio.VBUS ,gpio.PWRKEY,gpio.WAKEUP6 表示,比如:
gpio.setup(gpio.WAKEUP0, function()
log.info("GPIO唤醒中断触发")
end, gpio.PULLUP, gpio.BOTH)
5. GPIO 应用注意事项
-
普通 GPIO 及 VDD_EXT 在低功耗模式时输出高脉冲问题
-
原因:Air8000G 的低功耗模式特性使得 VDD_EXT 在低功耗模式状态下会关闭,但系统会不定时唤醒与 4G 网络交互,导致 VDD_EXT 打开,普通 GPIO 默认为 i&PU 状态,会被 VDD_EXT 拉高,输出高脉冲,易导致外设误动作。
- 设计建议:
- 对于低功耗模式状态下需正常工作的外设控制(如 LED 控制),不建议使用普通 GPIO,可使用 AGPIO。
- 若必须使用普通 GPIO,可在普通 GPIO 上外接 10K 电阻下拉,可大幅减小低功耗模式时输出的高脉冲幅值,使其低于外设的高电平判别门限,避免误动作,但会增加功耗,需根据实际情况选择。
-
Wakeup IO 类型 GPIO 的上拉问题
-
原因:Air8000G 的低功耗模式特性使得普通 GPIO 管脚和 VDD_EXT 在低功耗模式状态下输出高脉冲,若 Wakeup IO 用 VDD_EXT 或普通 GPIO 上拉,会收到中断导致系统被唤醒,无法进入低功耗模式模式。
- 设计建议:使用内部的上下拉。
-
Wakeup IO 类型 GPIO 与主控 MCU IO 管脚连接问题
-
原因:Wakeup IO 管脚电平约 2V,与大多数 MCU 的 IO 电平不匹配,且其供电为内部的 LDO_AON,会给系统启动相关部分供电,如 reset 管脚,因此电平不匹配导致的漏洞可能影响系统稳定性。
-
设计建议:使用二极管或三极管来隔离。
-
普通 GPIO 以及相应的电压域 VDD_EXT 在低功耗模式时会输出频繁百 ms 级别的高脉冲,极易导致连接的外设误动作。
原因:
Air8000G 的低功耗模式特性,VDD_EXT 在低功耗模式状态下会关闭,但是 Air8000G 系统在低功耗模式的整个时期内并不是一直保持稳定低功耗模式状态,需要不定时唤醒起来与 4G 网络交互以保持网络连接,因此 VDD_EXT 会随着模块唤醒而打开。而大部分普通 GPIO 默认是 i&PU 状态,就会被 VDD_EXT 拉高,导致输出高脉冲。
设计建议:
- 在一些需要低功耗模式状态下正常工作的外设的控制(比如 LED 控制)不建议使用普通 GPIO,可以使用 AGPIO;
-
由于 AGPIO 数量有限,在必须用普通 GPIO 的情况下,可以在普通 GPIO 上做外接 10K 电阻下拉(如下图 R23),可以大幅减小低功耗模式时输出的高脉冲幅值,使得减小到外设的高电平判别门限以下,也可以避免误动作的情况,但是相应的在某些情况下,会增加功耗,请根据实际情况酌情做出选择;
-
Wakeup IO 类型的 GPIO 不要用 VDD_EXT 或者普通 GPIO 上拉,会导致系统无法进入低功耗模式。
原因:
Air8000G 的低功耗模式特性使得普通 GPIO 管脚和 VDD_EXT 会在低功耗模式状态下输出高脉冲,会使得 Wakeup IO 收到中断而导致系统被唤醒,无法进入低功耗模式模式。
设计建议:
-
使用内部的上下拉;
-
Wakeup IO 类型的 GPIO 不要直接连接主控 MCU IO 管脚,会导致电平不一致而影响系统稳定性。
原因:
Wakeup IO 管脚电平是 2V 左右,这个与大多数 MCU 的 IO 电平不匹配,而且 Wakeup IO 的供电为内部的 LDO_AON,而这个供电会给系统启动相关的部分供电,比如 reset 管脚,因此 Wakeup IO 上由于电平不匹配而导致的漏洞有可能会影响系统稳定性。
设计建议:
- 使用二极管或者三极管来隔离(如下图)