9.2.2 修改设备树电源管理

本文介绍了如何在STM32MP157开发板上使用非ST官方PMIC芯片STPMIC1A时,移除其配置并添加基本电源管理,包括VDDCORE、3.3V、VDD_USB电源以及SD/MMC和USBOTG接口的调整。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        ST 官方 STM32MP157 开发板用到了一颗 PMIC 芯片,型号为 STPMIC1A,PMIC 全称为
Power Management IC,也就是集成电源管理芯片。随着 SOC 功能越来越强大,所需要的的电源要求也越来越高,最直观的就是电源种类很多。另外,电源的上电顺序也是有要求的。STPMIC1A 就是 ST 专门为 STM32MP1 系列设计的专用 PMIC。PMIC 芯片性能非常强大:
        · 输入电压 2.8V~5.5V。
        · 4 路可调的通用 LDO 输出。
        · 1 路 DDR3 端接 LDO 电源。
        · 1 路 USB PHY 所使用的 LDO 电源。
        · 1 路 DDR 参考电压 LDO 电源。
        · 4 路可调的 BUCK 开关电源。
        · 1 路 5.2V/1.1A 的 BOOST 开关电源。
        · 1 路 500mA 的 USB OTG 电源。
        · 1 路 500mA/1000mA 的通用电源。
        · 此芯片有一个 IIC 接口,主控通过 IIC 接口来配置电源芯片,设置每一路输出电源的输
出电压,开启时间等。

        ST 官方提供的 TF-A、 uboot、 linux kernel 等都会有 PMIC 驱动。
但是正点原子的开发板并没有采用这个 PMIC 芯片,所以 TF-A 默认的电源配置就会出问题,
这里就需要我们修改相关的文件,取消掉这个 PMIC 的相关配置。

        打开 stm32mp157d-atk.dtsi 文件

        第 45 行,“i2c4”表示这段代码是和 I2C4 控制器有关的,在设备树中一个 IIC 接口下的所有设备都“打包”放到一个节点下,在这里就是描述 I2C4 这个 IIC 控制器下的所有 IIC 器件。ST 官方的 STM32MP157 开发板将 STPMIC1A 这个 PMIC 芯片挂到了 I2C4 下,所以 STPMIC这个芯片的相关信息就会在“i2c4”这个节点下进行描述。
        将第 54~281 行的内容全部删除掉,也就是删除掉 STPMIC1A 芯片的相关描述。

        由于我们上面把 PMIC 相关的信息都删除了,但是其他设备的电源信息还是要有的,只是不通过 PMIC 来描述了。所以需要我们自己添加一些设备的电源描述信息,大家在 stm32mp157d-atk.dtsi 文件里面找到“vin”节点。

        将的vin 节点内容全部删除掉,也就是将 17~23 行代码删除掉,替换为下面的代码:

17 vddcore: regulator-vddcore {
18 compatible = "regulator-fixed";
19 regulator-name = "vddcore";
20 regulator-min-microvolt = <1200000>;
21 regulator-max-microvolt = <1350000>;
22 regulator-off-in-suspend;
23 regulator-always-on;
24 };
25
26 v3v3: regulator-3p3v {
27 compatible = "regulator-fixed";
28 regulator-name = "v3v3";
29 regulator-min-microvolt = <3300000>;
30 regulator-max-microvolt = <3300000>;
31 regulator-off-in-suspend;
32 regulator-always-on;
33 };
34
35 vdd: regulator-vdd {
36 compatible = "regulator-fixed";
37 regulator-name = "vdd";
38 regulator-min-microvolt = <3300000>;
39 regulator-max-microvolt = <3300000>;
40 regulator-off-in-suspend;
41 regulator-always-on;
42 };
43
44 vdd_usb: regulator-vdd-usb {
45 compatible = "regulator-fixed";
46 regulator-name = "vdd_usb";
47 regulator-min-microvolt = <3300000>;
48 regulator-max-microvolt = <3300000>;
49 regulator-off-in-suspend;
50 regulator-always-on;
51 };

        第 17~24 行,描述 VDDCORE 电源,也就是 STM32MP157 的内核电源,最小为 1.2V,最大为 1.35V。
        第 26~33 行,描述 3.3V 电源,最小和最大都是 3.3V
        第 35~42 行,描述 VDD 电源,这是一个 3.3V 的电源,所以最小和最大都为 3.3V
        第 44~51 行,描述 VDD_USB 电源,为 3.3V,所以最小和最大都为 3.3V。

9.2.3 修改 TF 卡和 EMMC 设备树

       在stm32mp157d-atk.dtsi 找到“sdmmc1”和“sdmmc2”这 2 个节点。将  sdmmc1 和 sdmmc2 节点改为如下所示内容:

&sdmmc1 {
pinctrl-names = "default";
pinctrl-0 = <&sdmmc1_b4_pins_a &sdmmc1_dir_pins_a>;
st,neg-edge;
broken-cd;
bus-width = <4>;
vmmc-supply = <&v3v3>;
status = "okay";
};

&sdmmc2 {
pinctrl-names = "default";
pinctrl-0 = <&sdmmc2_b4_pins_a &sdmmc2_d47_pins_a>;
non-removable;
st,neg-edge;
bus-width = <8>;
vmmc-supply = <&v3v3>;
vqmmc-supply = <&v3v3>;
status = "okay";
};

9.2.4 修改 USB OTG 设备树

        继续操作 stm32mp157d-atk.dtsi文件,修改一下 USB OTG 对应的设备树节点,找到“usbotg_hs”节点。

        修改为:

&usbotg_hs {
     phys = <&usbphyc_port1 0>;
     phy-names = "usb2-phy";
     usb-role-switch;
     status = "okay";
};

        最后还需要修改“usbphyc”节点里面的“status”属性值,看起来就是向 stm32mp157d-atk.dtsi文件里面添加了一个名为“usbphyc”的节点。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值