Exynos 4412 电源管理芯片PMIC 的配置及使用方法

开发板:迅为4412精英版。

uboot:uboot-2014-10。

PMIC:SAMSUNG S5M8767A

 

在移植新版u-boot的时候,上网搜电源管理芯片的使用方法资料,发现几乎没有,就算是datasheet也很难下载得到,不知是何原因?我只能理解成这部分知识比较简单,没人愿意写吧。但记录一下原理和使用方法做为备忘,总归没有什么坏处。另外仍然需要提前声明的是,这里只提供官方手册推荐的配置方法,自由玩法不保证可行及稳定性。

一、概览

LDO和BUCK的概念:请参考《嵌入式电路中的BUCK VS LDO》。

S5M8767A有9路BUCK和28路LDO,暂且可以当成共有37路供电电路。这37路供电电路最低可以使用6.25mV的步进电压,多达60多个电压档位可以做到对输出电压的精确控制。另外S5M8767A还有一个硬件RTC,可以在有外部电池供电的情况下保存时钟信息。

二、PMIC与uboot的关系

        uboot按模块初始化硬件,有其自己的代码顺序,这就要求PMIC在特定的时间点给特定的硬件提前提供电源,以供uboot进行初始化配置。否则uboot的执行必然失败,例如PMIC需要在eMMC初始化前对其两路电源进行供电。

另外PMIC的初始化时间在uboot里有其默认的时间点,但是这个时间点还是与核心板与底板的实际电路密切相关的,需要根据实际需要提前或延后。

2.0 PMIC中BUCK与LDO的分类

PMIC中的BUCK和LDO都大概可以分成两种:

一种是PMIC上电即可直接输出电压的BUCK和LDO。

另一种是PMIC上电不输出电压,需要使用i2c对PMIC配置后才可输出电压的BUCK和LDO。

2.1 PMIC与DDR的关系

对于4412来讲,DDR的初始化是在BL2中进行的,这时如果使用汇编初始化硬件i2c来对PMIC进行配置个人感觉没有什么意义,所以DDR的电源需要连接到PMIC的默认ON的BUCK上,即PMIC上电即可直接输出电压的BUCK,不需代码配置。

S5M8767A推荐使用BUCK5做为DDR的电源,

但是,BUCK5这里的默认输出是1.2V,DDR需要的是标准1.5V,问题出在哪里?

三星早就替我们考虑好了这个问题,为了适配不同类型的DDR,BUCK5可以通过K9 K10两个引脚的电平搭配,输出四种默认电压:

 

 

NewImage

在这里,迅为的开发板是这样设置的:

 

NewImage

 

这样一来,B5S1:B5S2 = 1:0 即BUCK5输出1.5V电压,正好与DDR的需求相吻合。

 

2.2 PMIC与4412主芯片的关系

        给ARM核芯提供电压的是PMIC的BUCK2,BUCK2也是默认ON的,默认输出1.1V。经过查阅4412 spec后,需要注意的是,在1.1V电压下,给ARM核心提供时钟的APLL最大只能输出1000MHz,即刚上电时如果不设置PMIC,ARM核心只能工作在1000MHz,无法使用最高频率1.4GHz。

 

三、PMIC的设置方法

3.1 通信协议

        S5M8767A使用I2C协议与4412进行通信,从机地址分为两部分,PM(Power Manager)和RTC,也就是说PM和RTC的寄存器地址是分开的,可以看作两个单独芯片。

 

NewImage

3.2 举例

        以BUCK1举例说明寄存器设置方法,其它BUCK和LDO基本类似,需要时认真阅读手册即可:

BUCK1有两个8位控制寄存器,

 

NewImage

 

        CTRL1的低6位可以按照默认值设置即可,高两位需要解释一下,00和1x的意思就不需解释了,01的意思是 BUCK1的开关由PWREN外部引脚控制,而这个PWREN引脚一般与4412的XPWRRGTON引脚连接在一起,这个XPWRRGTON是由CPU自动控制的,CPU处于休眠状态此脚为低,工作状态此脚为高,就是说CPU一旦退出休眠状态,PMIC就会给所有受PWREN控制的BUCK & LDO上电。

 

NewImage

 

        CTRL2就是控制BUCK2输出电压的,6.25mV的步进值,需要多少电压自行计算然后写入即可。

四、引用高手的PMIC技术贴

----------------------引用开始--------------------------------

什么是PMU(PMIC)

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/d3bf7b726af015a66da956668fdfd20a.html