Android: 使用Linux regulator系统通过一个GPIO控制外部IC的电源

本文介绍如何在Android系统中使用Linux regulator系统,通过GPIO控制外部IC的电源。详细讲解了电源管理regulator的静态和动态控制,包括获取、使能、禁用及设置电压等操作,并提供了dts设备树配置和驱动代码示例。

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

  Android: 使用Linux regulator系统通过一个GPIO控制外部IC的电源

一、通过一个GPIO控制外部IC的电源,如下图,通过SDMMC0_PWR_H pin(连到CPU的GPIO0_A1)去控制sd卡的电源enable或者disable。

1.1、 电源管理 regulator 分成静态和动态:静态不需要改变电压电流,只需要开关电源,用在 BootLoader、frameware、kernel board 阶段等;动态是根据需要改变电压电流。

1.2、 获取设备的 regulator、dev 为驱动对应的设备指针,可以用NULL,Vcc 为电源的 ID,内核会查表找到电源 ID 对应的 regulator。如:struct regulator *ldo; ldo = regualtor_get(NULL, "act_ldo5");

regulator = regulator_get(dev, "Vcc");  //获取设备 regulator

1.3、 regulator_put(regulator); //释放regulator

1.4、 int regulator_enable(regulator); //使能电源输出。调用之前也可能已经使能了。所以用下面函数判断。

1.5、 int regulator_is_enabled(regulator); //判断是否使能, >0 表示已经使能。

1.6、 int regulator_disable(regulator); //关闭电源输出。但是未必立刻关闭,有可能存在电源共享的场景。

1.7、int regulator_force_disable(regulator); //强制关闭电源。

1.8、int regulator_set_volatage(regulator, min_uV, max_uV); //调节电压的最小和最大输出。如果接下去调用 regulator_enable,那么这个值马上就生效,如果调用 regulator_disable 等其他的,要等到下一次调用 regulator_enable 时才能生效。

1.9、int regulator_get_voltage(regulator); //通过此接口获取配置的输出电压。

二、dts设备树添加如下:

三、驱动添加红框里面的代码:

三、然后再在驱动里面分别通过regulator_enable、regulator_disable函数拉高或者拉低上面提到GPIO0_A1达到控制外部电源的目的。例如:

四、亲自测试成功

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值