1电源域的概念
其实就是管理IO输出的电平;假如硬件上IO电源域配置为3.3V,则IO输出最大电平为3.3V;同理IO电源域硬件配置为1.8V,则IO输出最大电平是1.8V;这样有利于IO电平
的灵活配置;IO电源域一般都会接到PMU电源芯片不同组的LDO,由PMU(电源管理芯片)
配置输出电平,因为PMU的LDO可以在DTS上配置不同的电压;这样不至于把IO的输出
最大的电平写死,可动态调整;RK356x共有10个独立的IO电源域,分别为VCCIO[1:7]和PMUIO[0:2],从rk3568 的数据手册可以看出,如下图所示:
其中: PMUIO0、PMUIO1 为固定电平电源域,不可配置;其余IO domain 均可进行配置:PMUIO2和VCCIO1,VCCIO[3:7]电源域均要求硬件供电电压与软件的配置(也就是 dts 配置信息)相匹配;VCCIO2电源域的供电与FLASH_VOL_SEL 状态关系必须保持一致。kernel/arch/arm64/boot/dts/rockchip/rk3568-evb.dtsi设备树配置io
电源域如下所示:
&pmu_io_domains {
status = "okay";
pmuio1-supply = <&vcc3v3_pmu>;
pmuio2-supply = <&vcc3v3_pmu>;
vccio1-supply = <&vccio_acodec>;
vccio3-supply = <&vccio_sd>;
vccio4-supply = <&vcc_1v8>;
vccio5-supply = <&vcc_3v3>;
vccio6-supply = <&vcc_1v8>;
vccio7-supply = <&vcc_3v3>;
};
那么是为啥要这样配置呢?接下来查看原理图一一进行讲解。
2 IO电源域配置方法
首先我们在核心板原理图上找到相关的IO电源域,以下依次讲解。
2.1 VCCIO2解析
RK3568_I(VCCIO2 Domain)原理图如下图所示:
由上图文字描述可知,VCCIO2的供电电压由FLASH_VOL_SEL(GPIO0_A7_u)的电平状态决定。也就是说,如果GPIO0_A7_u 输入为高电平,VCCIO_FLASH必须是1.8V,VCCIO2 为1.8V;如果GPIO0_A7_u 输入为低电平,VCCIO_FLASH必须是3.3V,VCCIO2为3.3V;那么GPIO0_A7_u/FLASH_VOL_SEL 输入是多少呢?继续查看原理图,如下图所示:
从上面的原理图我们可以看到FLASH_VOL_SEL通过上拉电阻连到了3v3的电源上,因此这个引脚为高电平。那么VCCIO_FLASH必须是1.8V,VCCIO2为1.8V,因此VCCIO2的IO 电源域完全是由硬件决定,dts 上不需要配置。
2.2 VCCIO1解析
接着来看VCCIO1 的原理图,如下图所示:
由上图可知,VCCIO1的IO电源域是VCCIO_ACODEC,那么VCCIO_ACODEC是接到电源管理芯片RK809的LDO4 上,如下图所示:
从上图不难看出,VCCIO1的电源域接入的是3.3V 电压,VCCIO1的IO电源域是3.3V。
VCCIO_ACODEC是接到rk809上面音频编解码使用的。所以我们看看设备树里面rk809的配
置,如下图所示:
rk809: pmic@20 {
..................................
vccio_acodec: LDO_REG4 {
regulator-always-on;
regulator-boot-on;
regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
regulator-name = "vccio_acodec";
regulator-state-mem {
regulator-off-in-suspend;
};
};
..................................
};
由上可知,regulator-min-microvolt和regulator-max-microvolt是3.3V,不是动态调整的。所以设备树上配置:vccio1-supply = <&vccio_acodec>;
3 VCCIO3解析
接下来来看VCCIO3的原理图,如下图所示:
由上图可知,VCCIO3的IO电源域是VCCIO_SD,VCCIO_SD是接到rk809的LDO5上,如
下图所示:
从上图可以看出,这部分是给TF卡外设使用的,我们继续查看设备树里面关于rk809
的配置,
rk809: pmic@20 {
..................................
vccio_sd: LDO_REG5 {
regulator-always-on;
regulator-boot-on;
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <3300000>;
regulator-name = "vccio_sd";
regulator-state-mem {
regulator-off-in-suspend;
};
};
};
可看到regulator-min-microvolt=1.8V和regulator-max-microvolt=3.3V,即vccio_sd的电压
范围为1.8~3.3V,电压是可动态调整;假如vccio_sd 的电压动态调整了,VCCIO3的IO电源
域电压也会跟随vccio_sd的电压进行动态调整。所以dts 上配置引用为:vccio3-supply =
<&vccio_sd>;
4 VCCIO4解析
VCCIO4 原理图如下图所示:
由上图可知,VCCIO4连接的1.8V,DNP 是不焊接的意思
VCC_1V8是接到PMU的BUCK5 上,如下图所示:
BUCK5是属于DCDC_REG5,查看设备树如下图所示:
rk809: pmic@20 {
vcc_1v8: DCDC_REG5 {
regulator-always-on;
regulator-boot-on;
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
regulator-name = "vcc_1v8";
regulator-state-mem {
regulator-off-in-suspend;
};
};
};
DCDC_REG5动态调整的电压最小和最大值都为1.8V,所以该路只输出1.8V,不进行电压动态调整;即dts 上配置为:vccio4-supply = <& vcc_1v8>;
5 VCCIO5解析
VCCIO5 电路图如下图所示:
由上图可知,VCCIO5的电源域是VCC_3V3,VCC_3V3连接到rk809的2.1A SWOUT1,如
下图所示:
我们继续查看设备树里面关于rk809的配置,如下所示:
rk809: pmic@20 {
..................................
vcc_3v3: SWITCH_REG1 {
regulator-always-on;
regulator-boot-on;
regulator-name = "vcc_3v3";
regulator-state-mem {
regulator-off-in-suspend;
};
};
};
可看到vcc_3v3是3.3V ,所以dts 上配置引用为:vccio5-supply = <&vcc_3v3>;
更多请点击迅为网站了解更多>>