什么是PMU(PMIC)

PMU(power management unit)就是电源管理单元,一种高集成的、针对便携式应用的电源管理方案,即将传统分立的若干类电源管理芯片,如低压差线性稳压器(LDO)、直流直流转换器(DC/DC),但现在它们都被集成到手机的电源管理单元(PMU)中,这样可实现更高的电源转换效率和更低功耗,及更少的组件数以适应缩小的板级空间,成本更低。

PMU作为消费电子(手机、MP4、GPS、PDA等)特定主芯片配套的电源管理集成单元,能提供主芯片所需要的、所有的、多档次而各不相同电压的电源,同电压的能源供给不同的手机工作单元,像处理器、射频器件、相机模块等,使这些单元能够正常工作。按主芯片需要而集成了电源管理,充电控制,开关机控制电路。包括自适应的USB-Compatible的PWM充电器,多路直流直流转换器(BuckDC-DCconverter),多路线性稳压器(LDO),Charge Pump,RTC电路,马达驱动电路,LCD背光灯驱动电路,键盘背光灯驱动电路,键盘控制器,电压/电流/温度等多路12-BitADC,以及多路可配置的GPIO。此外还整合了过/欠压(OVP/UVP)、过温(OTP)、过流(OCP)等保护电路。高级的PMU可以在USB以及外部交流适配器、锂电池和应用系统负载之间安全透明的分配电能。动态电源路径管理 (DPPM) 在系统和电池充电之间共享交流适配器电流,并在系统负载上升时自动减少充电电流。调整充电电流和系统电流分配关系,最大程度保证系统的正常工作,当通过 USB 端口充电时,如果输入电压降至防止 USB 端口崩溃的阈值以下,则基于输入电压的动态电源管理 (IDPM) 便减少输入电流。当适配器无法提供峰值系统电流时,电源路径架构还允许电池补偿这类系统电流要求。

LDO是利用较低的工作压差,通过负反馈调整输出电压使之保持不变的稳压器件。压差小的话用LDO,带可关断功能便于电源管理。压差大的还是用DC-DC效率高。

按照系统需要能提供多种电压的电源,这些电压是电压调整所需的,另外这些电源还可以与功能同步开、关这些供电电压,以支持电压域切换。

PMU一般是和主芯片绑定定制的。因为它要配合CPU的上电时序。某些电压的上电顺序和之间的时间间隔有先后关系和时间要求。这个是掩模好的。PMU其实是带有掩模程序的专用电源控制器。要32.768KHZ的晶体和19.2M的晶体.待机状态是32.768KHZ的晶体工作,正常工作是19.2M的主晶体工作。
       靠上电池后PMIC进入待机状态,PMU由32.768KHZ的晶体提供时钟,按POWER按键触发开机后,安装定制的开机顺序将对应的LDO,DC-DC打开,19.2M的主时钟工作,CPU电源正常后,输出设置给CPU,输出复位信号给CPU,释放复位信号,CPU开始启动。CPU输出PS_HOLD信号将PMIC的状态处于工作状态。(关机的时候CPU将PS_HOLD拉低电,PMIC关闭进入关机状态)

CPU工作正常后,可以通过I2C接口对PMIC的各个模块进行控制。比如系统变频的时候,不同的工作频率要调整core电压到对应的电压。RTC时间的设置和ALARM的时钟。同时PMIC可以将异常事件产生中断信号给CPU,CPU再进行中断处理。

PMIC的电源越多,对系统的模块供电就越细,各个模块的电源受牵连就小,所以就越省电。

1.基本概念

PMIC: Power Management IC电源管理IC

相关接口代码:

U32 pmic_config_interface (U32 RegNum, U32 val, U32 MASK, U32 SHIFT)

preload:alps\mediatek\platform\mt6582\preloader\src\drivers\pmic_6323.c

lk:alps\mediatek\platform\mt6582\lk\mt_pmic.c

kernel:alps\mediatek\platform\mt6582\kernel\drivers\power\pmic_mt6323.c

LDO: 是low dropout regulator,意为低压差线性稳压器,LDO类的电源转换芯片。

相关接口定义:

上电接口函数:hwPowerOn
掉电接口函数:hwPowerDown

alps\mediatek\platform\mt6582\kernel\core\mt_pm_ldo.c

2.上电、掉电配置方法(preload 、lk、 kernel、系统启动后四个阶段):

2.1 preload 、lk 阶段配置:

下面是在LK阶段的上电/掉电方法:
使用upmu_common.c文件里面API来分别控制每一个LDO_VGPX.
比如:
upmu_set_rg_vgp6_vosel 用来控制上电的电压值;
upmu_set_rg_vgp6_en 用来控制enable VGP6这个pin 

2.2 kernel 阶段配置:

上电接口函数:hwPowerOn
掉电接口函数:hwPowerDown
以下以PMIC6320的VGP6为例。
请在您要上电的文件#include <mach/mt_pm_ldo.h> 上电请调用 hwPowerOn,掉电请调用hwPowerDown
hwPowerOn(MT65XX_POWER_LDO_VGP6, VOL_2800, "ldo_test");
bool hwPowerDown(MT65XX_POWER_LDO_VGP6, "ldo_test");

2.3系统启动后阶段配置:

系统正常启动后,kernel都是跑起来的,所以上电/掉电的操作都应该放在kernel里面。

3 驱动电压修改:

lcm vgp1驱动电压:

\alps\mediatek\custom\common\kernel\lcm\rgb_mt8193\rgb_mt8193.c

static void lcm_init(void){

upmu_set_rg_vgp1_vosel(0x7);//驱动电压修改--->pmic_config_interface()

upmu_set_rg_vgp1_en(0x1);

}

mt6323 电压等级对应文件:

\alps\mediatek\platform\mt6582\kernel\drivers\power\pmic_mt6323.c

举例说明:vgp1电压等级映射表:

void dct_pmic_VGP1_sel(kal_uint32 volt)

{

if(volt == VOL_DEFAULT)     { upmu_set_rg_vgp1_vosel(5);}

else if(volt == VOL_1200){ upmu_set_rg_vgp1_vosel(0);}

else if(volt == VOL_1300){ upmu_set_rg_vgp1_vosel(1);}

else if(volt == VOL_1500){ upmu_set_rg_vgp1_vosel(2);}

else if(volt == VOL_1800){ upmu_set_rg_vgp1_vosel(3);}

else if(volt == VOL_2000){ upmu_set_rg_vgp1_vosel(4);}

else if(volt == VOL_2800){ upmu_set_rg_vgp1_vosel(5);}

else if(volt == VOL_3000){ upmu_set_rg_vgp1_vosel(6);}

else if(volt == VOL_3300){ upmu_set_rg_vgp1_vosel(7);}

else{

}

}

android PMU相关推荐

  1. android如何根据机顶盒区分用户,Android 上手机跟机顶盒应用开发的区别

    首先声明,下述观点都限制为一般情况,之所以是一般情况是因为Android系统的是源代码开发的,开发商可以自行修改硬件,SDK配置.一般来说机顶盒盒是没有内置camera的,但是开发商是可以自行添加的, ...

  2. gpio驱动广播Android,[RK3288][Android6.0] 调试笔记 --- 通用GPIO驱动控制LED【转】

    Platform: ROCKCHIP OS: Android 6.0 Kernel: 3.10.92 由于板子没有lcd无法得知sd卡升级是否完成,因此使用LED显示. Recovery中升级完成后控 ...

  3. android启动的阅读笔记

    Android的启动过程,分为 1.Bootloader引导 2.装载与启动Linux内核 3.启动Android系统, 流程上 先是BOOT层bootloader启动,初始化硬件,是硬件进入一个准备 ...

  4. Android 异常问题分析

    1. Introduction 解决问题通常分为以下几个步骤: a) 确定问题,这是个什么样的问题,有什么外在表现: b) 分析问题,根据log里面的蛛丝马迹,定位出问题的原因: c) 对症下药,尽量 ...

  5. imx6 android快速启动,android启动不起来(已解决)

    我使用imx6dl,使用JB4.3.3-1.1.0版本,但在启动的时候最后停在了Freeing init memory: 232K,就没了动静,各位大侠帮忙分析一下吧: 以下是log: U-Boot ...

  6. MTK 驱动(4)---MTK Android Driver知识大全

    MTK Android Driver知识大全 一.Display 1.lcm 相关概念 1.1) MIPI接口:一共有三种接口:DBI(也做CPU或MCU接口).DPI(也叫RGB接口).DSI. 在 ...

  7. [RK3288]PMU配置(RK808)【转】

    本文转载自:http://www.javashuo.com/content/p-6398007.html 硬件原理 pmic 电路原理 平台概述 RK808 PWM 介绍 驱动分析 dts 驱动流程 ...

  8. PMU配置(RK808)

    本文转载自:http://www.javashuo.com/content/p-6398007.html 硬件原理 pmic 电路原理 平台概述 RK808 PWM 介绍 驱动分析 dts 驱动流程 ...

  9. android simpleperf工具介绍

    simpleperf介绍 Simpleperf是Android平台的一个native层性能分析工具.它的命令行界面支持与linux-tools perf大致相同的选项,但是它还支持许多Android特 ...

最新文章

  1. php-curl小记
  2. 软考高项之学习笔记——质量成本概念
  3. linux上用的端口转发工具,Linux中的快速端口转发工具—rinetd
  4. c语言基础学python_D11——C语言基础学PYTHON
  5. ip地址合不合法怎么看_电子印章合不合法?两部门再发意见认定
  6. 【操作系统】Semaphore处理哲学家就餐问题
  7. 函数03 - 零基础入门学习C语言34
  8. MPLS virtual private network Internet接入
  9. c 打印二叉树_基础扩展 | 22. 遍历二叉树—前序遍历算法的VBA代码解析
  10. Golang语言 零基础入门教程
  11. 恩施机器人编程_恩施武汉机器人激光切割机
  12. Flex builder 3 激活码
  13. latex 参考文献没有显示_LaTeX 中的参考文献
  14. Albumentation使用指南
  15. Tyvj P1864 守卫者的挑战
  16. vue点tab不刷新页面_如何使tab页切换,页面不刷新
  17. Python OpenCV 物体识别
  18. H5 捕鱼游戏搭建教程
  19. Apollo决策技术分享20190328
  20. C++中BitBlt的使用方法详解

热门文章

  1. OperationException: CLIENT: CLIENT_ERROR cannot increment or decrement non-numeric value
  2. 【第三方互联】11、创建支付宝(Alipay)互联应用
  3. 论文笔记:主干网络——DenseNet
  4. Android Studio集成NDK开发环境
  5. php imp,Imp_在线英语听力室
  6. 关于概率论和模糊数学的区别
  7. 禁用迅雷极速版自动升级为迅雷x
  8. leetcode——第860题——柠檬水找零
  9. 大数据具备的5大发展爆点,你准备抓住哪个呢?
  10. 计算日期差的方法c语言,C语言计算日期差的方法示例