对外电源,VDD_EXT

1、模组管脚;
- VDD_EXT,PIN24;
2、功能说明;
-
VDD_EXT,是模组主芯片内部的一个LDO,其主要作用是为模组大部分IO(或者叫做GPIO)提供电源;
-
VDD_EXT,是模组主芯片内部的一个LDO,但并不是唯一一个LDO,也并不是模组所有的IO都由VDD_EXT负责供电;
-
大家可以看到和可以使用的模组IO,共有内部的三个LDO负责供电,一个是VDD_EXT,一个是LDO_AON,一个是LDO_1.8V,其中,LDO_AON和LDO_1.8V仅供内部使用,未在模组管脚引出;
-
VDD_EXT、LDO_AON、LDO_1.8V分别负责哪些IO?二者有什么区别?见下表;

上述表格的文字版如下:
| VBAT 3.1V-4.35V | VBAT 3.1V-4.35V | PWR_KEY | PWRKEY和CHRG_DET在开机前是开机功能,开机后和WAKEUP一样的功能和特性: 支持双边沿中断,执行动作取决于软件设置; |
|---|---|---|---|
| LDO_1.8V 1)上电即开启 2)开机期间始终保持开启 3)仅模组内部使用 4)模组管脚未引出 |
CHRG_DET | 1)PWRKEY和CHRG_DET在开机前是开机功能,开机后和WAKEUP一样的功能和特性:支持双边沿中断,执行动作取决于软件设置; 2)CHG_DET由于内部电路设计的原因,悬空时电压在1.3V以上时都为正常; 3)CHG_DET外接电平输入时可直连电平范围为1.8V-3.6V,或者说可以直接对接1.8V/2.8V/3.3V的MCU而无需电平转换; |
|
| RESET | 1)系统硬复位,低有效; 2)RESET由于内部电路设计的原因,悬空时电压在1.3V以上时都为正常,如果外部高电平可能将RESET拉至1.3V以下,则需要外加上拉电阻使其在合理范围内; 3)如果硬件系统里其它MCU的GPIO通过三极管连接到模块的RESET,则要求三极管的截止漏电流小于0.5uA。否则,由于RESET内部上拉微弱,大漏电可能会将RESET拉到1.3V以下进而造成模组无法正常工作; 4)在三极管漏电流不能保证的情况下,可使用MOS管代替三极管, 大多数MOS漏电流相对较低; 5)模组Reset容易受到干扰而引起异常复位,如有必要可在Reset引脚上添加RC滤波电路; |
||
| WAKEUP0-2 | 1)常规模式(pm.WORK_MODE,0)和休眠状态下(pm.WORK_MODE,1 和 pm.WORK_MODE,3)都可实现中断输入,不可用于输出; 2)WAKEUP管脚内部上下拉非常弱,驱动能力<30uA,外部上下拉电阻建议选择100K阻值; 3)所有WAKEUP中断和GPIO中断都支持双边沿中断,也都支持软件配置内部上下拉,也都支持软件取消内部上下拉而使用外部上下拉; 4)WAKEUP由于内部电路设计的原因,悬空时电压在1.3V以上时都为正常; 5)WAKEUP外接电平输入时可直连电平范围为1.8V-3.6V,或者说可以直接对接1.8V/2.8V/3.3V的MCU而无需电平转换; 6)合宙的模组,3个WAKEUP一般的处理是:WAKEUP0引出到模组管脚供用户自由使用;WAKEUP2引出的模组管脚但推荐用作USIM_DET,当然也可以自定义使用;WAKEUP1模组内部固定用作USB插入检测使用(模组VBUS管脚,经过电压分压后,接WAKEUP1),不能再自定义为其它中断; |
||
| AGPIOWU0-2用作 WAKEUP时 AGPIOWU0=WAKEUP3 AGPIOWU1=WAKEUP4 AGPIOWU2=WAKEUP5 |
1)AGPIOWU=AGPIO+WAKEUP,兼具AGPIO和WAKEUP的功能,具体配置为AGPIO还是WAKEUP,需要软件指定; 2)AGPIO,配置为AGPIO和WAKEUP不同功能时所对应的电压域也不一样,AGPIO对应LDO_AON,WAKEUP对应LDO_1.8V; 3)AGPIOWU0/1/2,配置为中断模式时,需要在软件上选择是配置为GPIO中断还是WAKEUP中断; (1)AGPIOWU0/1/2配置为AGPIO时,相对普通GPIO来说在休眠模式(pm.WORK_MODE,1 和 pm.WORK_MODE, 3)下可以保持固定电平(固定为高或固定为低)输出,普通GPIO不可以; (2)AGPIOWU0/1/2配置为GPIO中断时,跟普通的GPIO中断时没有区别,也不存在AGPIO中断的说法; (3)AGPIOWU0/1/2配置为WAKEUP中断时,跟WAKEUP0-2相同,相对于AGPIOWU0/1/2配置为GPIO中断的区别是二者所属电压域不同,且GPIO中断无法在休眠状态(pm.WORK_MODE,1 和 pm.WORK_MODE,3)下唤醒模组; 4)AGPIOWU0/1/2,配置为WAKEUP中断时,具有WAKEUP的特点: (1)常规模式(pm.WORK_MODE,0)和休眠状态下(pm.WORK_MODE,1 和 pm.WORK_MODE,3)都可实现中断输入; (2)WAKEUP内部上下拉非常弱,驱动能力<30uA,外部上下拉电阻建议选择100K阻值; (3)所有WAKEUP中断和GPIO中断都支持双边沿中断,也都支持软件配置内部上下拉,也都支持软件取消内部上下拉而使用外部上下拉; (4)WAKEUP由于内部电路设计的原因,悬空时电压在1.3V以上时都为正常; (5)WAKEUP外接电平输入时可直连电平范围为1.8V-3.6V,或者说可以直接对接1.8V/2.8V/3.3V的MCU而无需电平转换; 5)休眠状态下,低功耗模式pm.WORK_MODE,1/PSM+模式pm.WORK_MODE,3 ,只能通过WAKEUP0-2,AGPIOWU0-2配置为WAKEUP3/4/5,PWRKEY,CHRG_DET,UART1(LPUART)这几个中断输入源可以将模组唤醒,普通GPIO中断在休眠模式下无法唤醒模组; |
||
| LDO_AON(1.8V/2.8V/3.3V) 1)上电开机后自动开启,初始电压为1.8V,之后调整至模组定义的IO默认电平,比如3.3V;如需自定义调整,可通过pm.ioVol()配置 2)电流输出上限10mA 3)开机期间始终保持开启 4)仅模组内部使用 5)模组管脚未引出 特别说明! Air780EPM/Air780EHM,由于历史原因,还可以通过PIN100,也就是GPIO17,悬空或下拉的方式实现VDD_EXT电压的设置,也就是IO电平的设置,PIN100悬空时为3.3V,接地时为1.8V; 如果需要使用PIN100:GPIO17作为普通GPIO使用且有硬件下拉的电路存在,需要在main文件通过pm.iovol()设置电平,否则Air780EPM/EHM的IO电平会被设置为1.8V; |
AGPIOWU0-2用作 AGPIO时 AGPIOWU0=GPIO20 AGPIOWU1=GPIO21 AGPIOWU2=GPIO22 |
1)AGPIOWU=AGPIO+WAKEUP,兼具AGPIO和WAKEUP的功能,具体配置为AGPIO还是WAKEUP,需要软件指定; 2)AGPIO,配置为AGPIO和WAKEUP不同功能时所对应的电压域也不一样,AGPIO对应LDO_AON,WAKEUP对应LDO_1.8V; 3)AGPIOWU0/1/2,配置为中断模式时,需要在软件上选择是配置为GPIO中断还是WAKEUP中断; (1)AGPIOWU0/1/2配置为GPIO中断时跟普通的GPIO中断时没有区别,也不存在AGPIO中断的说法; (2)AGPIO主要相对普通GPIO来说在休眠模式(pm.WORK_MODE,1 和 pm.WORK_MODE,3)下可以保持固定电平(固定为高或固定为低)输出,普通GPIO不可以; 4)AGPIOWU0/1/2,配置为GPIO中断时,具有如下特点: (1)常规模式(pm.WORK_MODE,0)状态下可实现中断输入,休眠状态下(pm.WORK_MODE,1 和 pm.WORK_MODE,3)不可实现中断输入,只有在配置为WAKEUP中断时才可以在休眠状态下响应中断输入; (2)AGPIOWU0-2内部上下拉非常弱,驱动能力<30uA,外部上下拉电阻建议选择100K阻值; (3)所有WAKEUP中断和GPIO中断都支持双边沿中断,也都支持软件配置内部上下拉,也都支持软件取消内部上下拉而使用外部上下拉; 5)AGPIOWU0/1/2,配置为AGPIO输入/输出功能时,具有如下特点: (1)常规模式(pm.WORK_MODE,0)和休眠状态(pm.WORK_MODE,1 和 pm.WORK_MODE,3)下都可以保持固定电平(固定为高或固定为低)输出; (2)AGPIOWU0/1/2,配置为AGPIO时,分别对应GPIO20/21/22,其电压域将被切换为LDO_AON,且由于切换电路的存在,作为AGPIO其每路的驱动能力也只有30uA,外部上下拉电阻建议选择100K阻值,使用时请特别注意! 6)休眠状态下,低功耗模式pm.WORK_MODE,1/PSM+模式pm.WORK_MODE,3 ,只能通过WAKEUP0-2,AGPIOWU0-2配置为WAKEUP3/4/5,PWRKEY,CHRG_DET,UART1(LPUART)这几个中断输入源可以将模组唤醒,普通GPIO中断在休眠模式下无法唤醒模组; |
|
| AGPIO3-8 也常写作AONGPIO3-8 AGPIO3-8 = GPIO23-28 |
1)AGPIO3-8,分别对应GPIO23-28,常规模式(pm.WORK_MODE,0)和休眠状态(pm.WORK_MODE,1 和 pm.WORK_MODE,3)下都可以保持固定电平(固定为高或固定为低)输出; 2)AGPIO3-8,既可以作为AGPIO使用(即GPIO输入输出功能),也可以配置为GPIO中断输入; 3)AGPIO3-8虽然在 低功耗模式pm.WORK_MODE,1/PSM+模式pm.WORK_MODE,3 下可以保持固定电平(固定为高或固定为低)输出,但配置为GPIO中断功能时,是无法在 低功耗模式pm.WORK_MODE,1/PSM+模式pm.WORK_MODE,3 下触发中断的; 4)AGPIO3-8,配置为中断输入功能时,跟所有WAKEUP中断一样都支持双边沿中断,也都支持软件配置内部上下拉,也都支持软件取消内部上下拉而使用外部上下拉; 5)AGPIO3-8驱动能力单管脚<=5mA, 但所有AGPIO驱动电流总和也不能超过5mA; 6)休眠状态下,低功耗模式pm.WORK_MODE,1/PSM+模式pm.WORK_MODE,3 ,只能通过WAKEUP0-2,AGPIOWU0-2配置为WAKEUP3/4/5,PWRKEY,CHRG_DET,UART1(LPUART)这几个中断输入源可以将模组唤醒,普通GPIO中断在休眠模式下无法唤醒模组; |
||
| VDD_EXT(1.8V/2.8V/3.3V) 1)上电开机后自动开启,初始电压为1.8V,之后调整至模组定义的IO默认电平,比如3.3V;如需自定义调整,可通过pm.ioVol()配置 2)电流输出上限200mA 3)低功耗模式pm.WORK_MODE,1 状态下间歇性输出,频率和与通信协议要求的时间间隔相同,通常为0.64S/1.28S/2.56S中的一个 4)PSM+模式(pm.WORK_MODE,3)下完全掉电 特别说明! Air780EPM/Air780EHM,由于历史原因,还可以通过PIN100,也就是GPIO17,悬空或下拉的方式实现VDD_EXT电压的设置,也就是IO电平的设置,PIN100悬空时为3.3V,接地时为1.8V; 如果需要使用PIN100:GPIO17作为普通GPIO使用且有硬件下拉的电路存在,需要在main文件通过pm.iovol()设置电平,否则Air780EPM/EHM的IO电平会被设置为1.8V; |
GPIO0-19 GPIO29-38 注意! GPIO0开机前为BOOT选择脚 GPIO0开机后可设置为普通GPIO |
1)普通GPIO在"低功耗模式pm.WORK_MODE,1"下会处于间歇性掉电状态,随着系统间歇性唤醒与基站交互而频繁产生高脉冲(电平与pm.ioVol()设置的VDD_EXT电压一致),间歇性唤醒频率和与通信协议要求的时间间隔相同,通常为0.64S/1.28S/2.56S中的一个; 2)普通GPIO在PSM+模式(pm.WORK_MODE,3)下会处于完全掉电状态; 3)VDD_EXT最大电流输出能力是200mA,对应本电压域下的每个GPIO,最大负载电流大约6mA@1.8V,14mA@3.3V,但是所有普通驱动电流总和不能超过200mA; 4)如果VDD_EXT需要给外设供电,需要控制总电流消耗不超过50mA,以免VDD_EXT电压域下的这类普通GPIO性能受到影响甚至无法正常工作,且此时给全部普通GPIO可提供的电流总和将降为150mA; 5)普通GPIO配置为GPIO中断功能时,跟所有WAKEUP中断一样都支持双边沿中断,也都支持软件配置内部上下拉,也都支持软件取消内部上下拉而使用外部上下拉; 6)休眠状态下,低功耗模式pm.WORK_MODE,1/PSM+模式pm.WORK_MODE,3 ,只能通过WAKEUP0-2,AGPIOWU0-2配置为WAKEUP3/4/5,PWRKEY,CHRG_DET,UART1(LPUART)这几个中断输入源可以将模组唤醒,普通GPIO中断在休眠模式下无法唤醒模组; 7)GPIO0默认用作USB_BOOT,LuatOS没有开放其可以配置作为GPIO0使用的功能; |
|
| LDO33USB(3.3V) 1)开机后底层软件控制开启或关闭 2)仅模组内部USB使用 |
USB | 1)USB供电电源,常规模式(pm.WORK_MODE,0)下打开,低功耗模式pm.WORK_MODE,1/PSM+模式pm.WORK_MODE,3 下关闭; 2)USB供电电源的打开和关闭,打开:pm.power(pm.USB ,true);关闭:pm.power(pm.USB ,false),用户一般只有机会关闭,开启则由LuatOS底层控制; |
|
| LDOSIM(1.8V/3.3V) 1)开机后底层软件控制开启或关闭 2)仅模组内部SIM1/SIM2使用 |
USIM | 1)SIM供电电源,常规模式(pm.WORK_MODE,0)/低功耗模式pm.WORK_MODE,1 下检测到SIM卡插入时供电打开,未检测到SIM卡插入时供电关闭; 2)PSM+模式(pm.WORK_MODE, 3)下关闭; 3)记住!SIM卡电源(VDD_SIM)没有输出,是模组未能识别到卡的结果,而不是因为SIM卡电源没输出所以识别不到卡,开机初始化时用万用表可以量得到整个SIM卡电源的输出过程,用万用表是量不到这个过程的,切记! |
- VDD_EXT、LDO_AON、LDO_1.8V都是上电后自动开启,也都无法软件自定义关闭,不同的是:
a. LDO_1.8V,开机后一直保持1.8V,不可更改电压数值大小;
b. LDO_AON,开机后一直开启,低功耗模式pm.WORK_MODE,1 和 PSM+模式pm.WORK_MODE,3 不关闭,因此,其电压域下的IO,包括AGPIO、AGPIOWU、WAKEUP和Reset,在 低功耗模式pm.WORK_MODE,1 和 PSM+模式pm.WORK_MODE,3 下都可以保持工作;
LDO_AON的详细状态,如下表所示;
| LDO_AON | 电压可调 | 输出状态 |
|---|---|---|
| 常规模式pm.WORK_MODE,0 | 完全开启1.8V/2.8V/3.3V | 1)上电开机后自动开启,初始电压为1.8V,之后调整至模组定义的IO默认电平,比如3.3V;如需自定义调整,可通过pm.ioVol()配置; (Air780EPM/Air780EHM仍然可以使用PIN100悬空或下拉进行设置) 2)电流输出上限10mA; 3)开机期间始终保持开启; 4)仅模组内部使用; |
| 低功耗模式 pm.WORK_MODE,1 | 完全开启1.8V/2.8V/3.3V | 1)上电开机后自动开启,初始电压为1.8V,之后调整至模组定义的IO默认电平,比如3.3V;如需自定义调整,可通过pm.ioVol()配置; (Air780EPM/Air780EHM仍然可以使用PIN100悬空或下拉进行设置) 2)电流输出上限10mA; 3)开机期间始终保持开启; 4)仅模组内部使用; |
| PSM+模式 pm.WORK_MODE,3 | 完全开启1.8V/2.8V/3.3V | 1)上电开机后自动开启,初始电压为1.8V,之后调整至模组定义的IO默认电平,比如3.3V;如需自定义调整,可通过pm.ioVol()配置; (Air780EPM/Air780EHM仍然可以使用PIN100悬空或下拉进行设置) 2)电流输出上限10mA; 3)开机期间始终保持开启; 4)仅模组内部使用; |
c. VDD_EXT,开机后的状态比较复杂,如下表所示:
| VDD_EXT | 电压可调 | 输出状态 |
|---|---|---|
| 常规模式pm.WORK_MODE,0 | 完全开启1.8V/2.8V/3.3V | 1)上电开机后自动开启,初始电压为1.8V,之后调整至模组定义的IO默认电平,比如3.3V;如需自定义调整,可通过pm.ioVol()配置; (Air780EPM/Air780EHM仍然可以使用PIN100悬空或下拉进行设置) 2)电流输出上限200mA; |
| 低功耗模式 pm.WORK_MODE,1 | 间歇性输出1.8V/2.8V/3.3V | 3)低功耗模式pm.WORK_MODE,1 状态下间歇性输出,频率和与通信协议要求的时间间隔相同,通常为0.64S/1.28S/2.56S中的一个; |
| PSM+模式 pm.WORK_MODE,3 | 完全关闭 | 4)PSM+模式(pm.WORK_MODE,3)下完全掉电; |
VDD_EXT,由于在 低功耗模式 pm.WORK_MODE,1 下状态为间线性输出,既不是完全打开,也不是完全关闭,因此,其电压域下的IO,GPIO0-19和GPOIO29-38,在低功耗模式 pm.WORK_MODE,1 下也会跟VDD_EXT一样,随着系统间歇性唤醒与基站交互而频繁产生高脉冲(重点是无法保持高电平或低电平),间歇性唤醒频率和与通信协议要求的时间间隔相同,通常为0.64S/1.28S/2.56S中的一个;
d. VDD_EXT和LDO_AON都是通过函数 pm.ioVol() 设置输出电压,且 pm.ioVol() 对二者同时进行修改,所以大家看到的模组的所有IO,包括VDD_EXT电压域和LDO_AON电压域,电平都是同时修改且保持一致;
3、VDD_EXT详细参数;
| VDD_EXT | Min | Typical | Max | Units | 对应的LuatOS API 函数 |
|---|---|---|---|---|---|
| 1.71 | 1.8 | 1.89 | V | pm.ioVol(pm.IOVOL_ALL_GPIO, 1800) 由于历史原因,Air780EPM/Air780EHM这两个型号通过PIN100接地也可以设置,但是软件设置优先 |
|
| 2.66 | 2.8 | 2.94 | V | pm.ioVol(pm.IOVOL_ALL_GPIO, 2800) | |
| 3.135 | 3.3 | 3.465 | V | pm.ioVol(pm.IOVOL_ALL_GPIO, 3300) 同时,3.3V也是Air780EPM/EHM/EHV/EGP/EGG/EGH/EHN/EHU默认电平 |
4、特别注意事项;
- VDD_EXT标称输出电流最大至200mA,但是,VDD_EXT同时用于模组芯片内部和外部,为了保证内部该电压域负载的使用稳定性,请保证外部负载消耗电流不要超过50mA;
- VDD_EXT在 低功耗模式pm.WORK_MODE,1 状态下间歇性输出,频率和与通信协议要求的时间间隔相同,通常为0.64S/1.28S/2.56S中的一个,因此,在可能影响低功耗模式pm.WORK_MODE,1 下中断唤醒的场合,要避免使用VDD_EXT做上拉电平用,比如UART1电平转换电路(UART1为LPUART,低功耗模式pm.WORK_MODE,1 下可被唤醒);
如下图所示,如果VREF使用VDD_EXT,那么低功耗模式pm.WORK_MODE,1 下模组的UART1_RX频繁的高低电平变化就会将模组唤醒,进而导致模组退出低功耗模式而功耗无法降低;

- 需要特别指出的是,如果你的硬件需要在休眠状态下(低功耗模式pm.WORK_MODE,1 和 PSM+模式pm.WORK_MODE,3)也可以稳定输出的电源,请根据需要选择外置的DCDC或者LDO;
5、VDD_EXT相关LuatOS API;
- VDD_EXT相关LuatOS API,请看pm库:52 pm - 合宙模组资料中心 ;
- 配置IO电平,其实就是配置给IO供电的LDO,包括VDD_EXT和LDO_AON; 相应的,配置VDD_EXT,就可以通过配置IO电平来实现;
- pm.ioVol(id, val)
功能
配置模块所有 IO 引脚的高电平电压
注意事项
可配置 IO 电平, 范围 1650 ~ 2000,2650~3400 , 单位毫伏, 步进 50mv,可以根据外围电路需求配置;
实际应用中,经常配置的三个经典电压值为 1.8V/2.8V/3.3V;
合宙支持二次开发的模组,绝大多数默认都为 3.3V,例外是:
Air8000 系列模组,全系只支持 3.3V,不支持其它电平;
Air780EHV,IO 电平固定为 3.3V;相对应的,Air780EHV-1.8V,IO 电平固定为 1.8V;
参数
id
含义说明:需要配置高电平电压的对象;
数据类型:number;
取值范围:0;
注意事项:对象id仅有pm.IOVOL_ALL_GPIO,如命名含义,指配置所有GPIO的高电压电平,调用该接口时模块会以该接口配置的高电压电平调整,无视固件的默认配置和硬件100脚IO_Volt_Set的拉高和拉低配置;
参数示例:--如下方所示,第一个参数为**pm.IOVOL_ALL_GPIO**,所有GPIO高电平输出1.8V;
pm.ioVol(pm.IOVOL_ALL_GPIO, 1800)
val
含义说明:需要配置对象的电压值;
数据类型:number;
取值范围:1650 ~ 2000,2650~3400 , 单位毫伏, 步进50mv;
注意事项:模块会有1.8V和3.3V默认高电平电压的版本,也可调用该接口手动调整,以外围电路要求为主;
参数示例:--如下方所示,第二个参数为**3300**,所有GPIO高电平输出3.3V;
pm.ioVol(pm.IOVOL_ALL_GPIO, 3300)
返回值
local result = pm.ioVol(id, val)
有一个返回值 result
result
含义说明:判断高电平电压调整是否正确执行;
数据类型:boolean;
取值范围:成功时返回true,失败时返回false;
注意事项:注意电压变化前后的外部电阻匹配;
参数示例:--如下方所示,第二个参数为3300,模块所有IO的高电平电压配置为为3.3V;
--result返回true则模块电压转为3.3V;
local result = pm.ioVol(pm.IOVOL_ALL_GPIO, 3300)
示例
pm.ioVol(pm.IOVOL_ALL_GPIO, 3300) -- 所有GPIO高电平配置为3.3V
pm.ioVol(pm.IOVOL_ALL_GPIO, 1800) -- 所有GPIO高电平配置为1.8V