本文转自:http://www.topeetboard.com

iTOP-4412核心板使用的电源管理芯片是三星专门针对4412研发的S5M8767,8767提供9路BUCK和28路LDO输出,每路电压的大小可以通过软件进行设置。S5M8767的驱动位于内核drivers/regulator/s5m8767.c,CPU是通过I2C总线来控制它。S5M8767注册到内核里面的regulator模块。Regulator模块是内核中用于控制系统中某些设备的电压/电流供应,在嵌入式系统(尤其是手持设备)中,控制耗电量很重要,直接影响到电池的续航时间。所以。如果系统中某一个模块暂时不使用,就可以通过regulator关闭其电源;或者降低提供给该模块的电压、电流大小。

S5M8767驱动的主要作用就是调用regulator_register函数向内核注册regulator_dev设备,每个regulator_dev代表一个regulator设备,内核可以分别控制每个regulator。

为了实现S5m8767驱动我们还需要在平台相关的代码里定义regulator_init_data结构,regulator_init_data用来建立父子regulator、手电模块之间的树状结构,以及一些regulator的基本信息,比如电压大小,下面我们来看下regulator_init_data结构,代码在

arch/arm/mach-exynos/mach-itop4412.c里面,在这个文件里使用宏REGULATOR_INIT来定义28个LDO的regulator_init_data结构,

#define REGULATOR_INIT(_ldo, _name, _min_uV, _max_uV, _always_on, _ops_mask,\
  _disabled) \
 static struct regulator_init_data s5m8767_##_ldo##_init_data = {  \
  .constraints = {     \
   .name = _name,    \
   .min_uV = _min_uV,    \
   .max_uV = _max_uV,    \
   .always_on = _always_on,   \
   .boot_on = _always_on,   \
   .apply_uV = 1,    \
   .valid_ops_mask = _ops_mask,   \
   .state_mem = {    \
    .disabled = _disabled,  \
    .enabled = !(_disabled),  \
   }      \
  },       \
  .num_consumer_supplies = ARRAY_SIZE(s5m8767_##_ldo##_supply), \
  .consumer_supplies = &s5m8767_##_ldo##_supply[0],   \
 }

上面的宏定义中,第三个和第四个参数指定了LDO的电压最小值和最大值,第五个参数设置LDO在系统开始运行时是输出还是关闭的(1是输出,0是关闭),

第六个参数是LDO具有哪些功能,例如可以修改电压,电流,改变状态等等通过位掩码的方式设置,第七个参数是设置在休眠的时候是否由PWREN引脚控制它的开关(1是由PWREN控制,0是不受PWREN控制),休眠的时候PWREN为低电平,LDO会关闭,系统

唤醒,PWREN为高电平,LDO会输出。
 
例如LDO2的定义,如下:

REGULATOR_INIT(ldo2, "VDDQ_M12", 1500000, 1500000, 1,
  REGULATOR_CHANGE_STATUS, 1)
  
根据定义,可以知道LDO2输出的电压是1.5v,系统启动的时候会默认输出,系统休眠的时候会关闭。其他的LDO的设置原理与LDO2是一样的。

系统中BUCK的定义,例如BUCK1如下:

static struct regulator_init_data s5m8767_buck1_data = {
 .constraints = {
  .name  = "vdd_mif range",
  .min_uV  = 900000,
  .max_uV  = 1100000,
  .valid_ops_mask = REGULATOR_CHANGE_VOLTAGE |
      REGULATOR_CHANGE_STATUS,
  .state_mem = {
   .disabled = 1,
  },
 },
 .num_consumer_supplies = 1,
 .consumer_supplies = &s5m8767_buck1_consumer,
};

根据上面的定义,可以知道BUCK1的电压范围在0.9v到1.1v,他具有可以修改电压,修改状态的功能(变量valid_ops_mask)。可以使用函数

regulator_set_voltage修改BUCK1的电压。其他几个BUCK的定义原理和BUCK1是一样的

如果我们想要修改8767的某个LDO的输出电压,就可以通过修改对应的LDO的regulator_init_data结构体里面的电压值来实现,修改BUCK的电压可以使用函数regulator_set_voltage来实现。注意:在修改输出电压的时候,一定要参照8767的datasheet,确保修改的电压在datasheet规定的范围内

迅为iTOP-4412核心板调整电压的更多相关文章

  1. ARM核心板_迅为4412核心板_核心板中的小新潮

    iTOP-4412核心板是迅为电子推出的一款高端四核核心板,配备三星Exynos 4412四核处理器,主频为1.4GHz,内置8GB存储空间. 该板设计小巧.配备三星自家电源管理芯片,具有9路DC/D ...

  2. 迅为i.MX6UL核心板ARMCortex-A7单核NXP飞思卡尔工控行业Imx6核心板

    iMX6UL核心板小巧精致,尺寸仅38mm*42mm:CPU型号iMX6UL@ 528MHz ARM Cortex-A7架构 :内存:512M DDR :存储:8G EMMC,低功耗,性能强大,性价比 ...

  3. 迅为I.MX6DL开发板飞思卡尔Freescale Cortex A9 迅为-iMX6双核核心板

    核心板参数 尺寸: 51mm*61mm CPU: Freescale Cortex-A9 双核精简版 i.MX6DL,主频 1.2 GHz 内存: 1GB DDR3 存储: 8GB EMMC 存储 E ...

  4. 迅为-i.MX6Q核心板_四核工业级

    飞思卡尔Freescale Cortex A9 四核处理器处理器:CPU Freescale Cortex-A9 四核 i.MX6Q,主频 1.2 GHz 核心板工艺:十层设计,沉金工艺基本参数:内存 ...

  5. 迅为双核imx6DL核心板_ARM定制专家_Cortex SATA 千兆网 4G GPS

    核心板参数 尺寸:51mm*61mm CPU:Freescale Cortex-A9 双核精简版 i.MX6DL,主频 1.2 GHz 内存:1GB DDR3 存储:8GB EMMC 存储 EEPRO ...

  6. 迅为4412开发板支持AVIN视频输入/AV监控摄像头输入模块

    AVIN模块(iTOP-4412开发板专用) 产品介绍:视频输入/AV监控摄像头输入模块: 该模块及配套的软件为开发视频采集.监控.车载后视等产品提供了很好的参考. iTOP-4412 开发平台 开发 ...

  7. 迅为三星Exynos 4412开发板四核Cortex-A9ARM安卓linux开发板

    开发板光盘资料包含:原理图(PDF格式).底板PCB(Allegro格式).驱动程序源码.芯片和LCD数据手册.开发环境.产品使用手册. 4412开发板简介: iTOP-Exynos4412开发板采用 ...

  8. 开创学习的四核时代-迅为iTOP4412学习开发板

    产品特点: 处理器: Exynos 4412 处理器,Cortex-A9四核,功耗性能俱佳! 性能: 1GB(可选2GB) 双通道 64bit数据总线 DDR3: 4GB(可选16GB)固态硬盘EMM ...

  9. 迅为4412开发板QtE系统源码-屏幕横竖屏切换修改方法

    迅为4412开发板QtE系统源码-屏幕横竖屏切换修改方法 详情了解:http://topeetboard.com 更多了解:https://arm-board.taobao.com/ 用户在开发板上运 ...

随机推荐

  1. 从web页面启动winform程序的实现方法

    本文实现的需求是: A.通过web页面启动winform程序: B.将页面的参数传递给winform程序: C.winform程序已经启动并正在运行时,从web页面不能重新启动winform程序,只是 ...

  2. 别误用IsDigit与IsNumber函数

    1.起因 最近发现程序中有一段控制TextBox数字输入的代码,相信大家都不会太陌生,如下: void int_KeyPress(object sender, KeyPressEventArgs e) ...

  3. JPA学习(3)JPA API

    在我们的jpa的helloworld中,我们看到了简单的一个jpa保存操作,下面就来好好学习一下,JPA最主要的几个类 1.基本的几个类: ①:Persistence 类是用于获取 EntityMan ...

  4. php中的字符串常用函数(三) str_replace() 子字符串替换

    mixed str_replace ( mixed $search , mixed $replace , mixed $subject [, int &$count ] ); 该函数返回一个字 ...

  5. 【iOS】Quartz2D简单介绍

    一.什么是Quartz2D Quartz 2D是⼀个二维绘图引擎,同时支持iOS和Mac系统 Quartz 2D能完成的工作: 绘制图形 : 线条\三角形\矩形\圆\弧等 绘制文字 绘制\生成图片(图 ...

  6. tomcat filewatchdog but has failed to stop it原因以及解决方法

    停止tomcat,有些时候会报The web application [/XXX] appears to have started a thread named [FileWatchdog] but ...

  7. [模仿][JS]新浪财经7*24直播

    使用新浪财经7*24直播的数据 简单的做一个山寨品 在线地址:[痛苦啊,有GFW,却没有vpn,往heroku上传浪费了好多时间...] http://wangxinsheng.herokuapp.c ...

  8. Crash日志符号化

    1.符号化crash日志需要3样东西: 1).crash日志本身(如:example.crash),从Xcode的organizer导出或者来自Itunes Connect. 2).crash日志所对 ...

  9. ABAP:SAP报表性能的优化

    大部分ABAPer都是从SAP报表及打印开始学起的,大家也都认为写个SAP报表程序是最简单不过的事了. 但是实际情况真的如此吗?写报表时除了保证数据的准确性,您可曾考虑过报表的性能问题吗? 由于报表程 ...

  10. DAX 2009 for Retail's P job does not work after restoring AX database from another environment.

    This time, it's P job.  We already re-configured profiles, distribution locations, distribution grou ...