对外电源,VDD_EXT

1、功能说明;
-
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?二者有什么区别?见下表;

- 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()配置; 2)电流输出上限10mA; 3)开机期间始终保持开启; 4)仅模组内部使用; |
| 低功耗模式 pm.WORK_MODE,1 | 完全开启1.8V/2.8V/3.3V | 1)上电开机后自动开启,初始电压为1.8V,之后调整至模组定义的IO默认电平,比如3.3V;如需自定义调整,可通过pm.ioVol()配置; 2)电流输出上限10mA; 3)开机期间始终保持开启; 4)仅模组内部使用; |
| PSM+模式 pm.WORK_MODE,3 | 完全开启1.8V/2.8V/3.3V | 1)上电开机后自动开启,初始电压为1.8V,之后调整至模组定义的IO默认电平,比如3.3V;如需自定义调整,可通过pm.ioVol()配置; 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()配置; 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) | |
| 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、特别注意事项;
- 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;
4、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