跳转至

对外电源,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的高电压电平,调用该接口时模块会以该接口配置的高电压电平调整,无视固件的默认配置和硬件100IO_Volt_Set的拉高和拉低配置
参数示例:--如下方所示,第一个参数为**pm.IOVOL_ALL_GPIO**,所有GPIO高电平输出1.8V;
      pm.ioVol(pm.IOVOL_ALL_GPIO, 1800)

val

含义说明:需要配置对象的电压值;
数据类型:number
取值范围:1650 ~ 20002650~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