迅为iTOP-4412核心板调整电压
本文转自: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核心板调整电压的更多相关文章
- ARM核心板_迅为4412核心板_核心板中的小新潮
iTOP-4412核心板是迅为电子推出的一款高端四核核心板,配备三星Exynos 4412四核处理器,主频为1.4GHz,内置8GB存储空间. 该板设计小巧.配备三星自家电源管理芯片,具有9路DC/D ...
- 迅为i.MX6UL核心板ARMCortex-A7单核NXP飞思卡尔工控行业Imx6核心板
iMX6UL核心板小巧精致,尺寸仅38mm*42mm:CPU型号iMX6UL@ 528MHz ARM Cortex-A7架构 :内存:512M DDR :存储:8G EMMC,低功耗,性能强大,性价比 ...
- 迅为I.MX6DL开发板飞思卡尔Freescale Cortex A9 迅为-iMX6双核核心板
核心板参数 尺寸: 51mm*61mm CPU: Freescale Cortex-A9 双核精简版 i.MX6DL,主频 1.2 GHz 内存: 1GB DDR3 存储: 8GB EMMC 存储 E ...
- 迅为-i.MX6Q核心板_四核工业级
飞思卡尔Freescale Cortex A9 四核处理器处理器:CPU Freescale Cortex-A9 四核 i.MX6Q,主频 1.2 GHz 核心板工艺:十层设计,沉金工艺基本参数:内存 ...
- 迅为双核imx6DL核心板_ARM定制专家_Cortex SATA 千兆网 4G GPS
核心板参数 尺寸:51mm*61mm CPU:Freescale Cortex-A9 双核精简版 i.MX6DL,主频 1.2 GHz 内存:1GB DDR3 存储:8GB EMMC 存储 EEPRO ...
- 迅为4412开发板支持AVIN视频输入/AV监控摄像头输入模块
AVIN模块(iTOP-4412开发板专用) 产品介绍:视频输入/AV监控摄像头输入模块: 该模块及配套的软件为开发视频采集.监控.车载后视等产品提供了很好的参考. iTOP-4412 开发平台 开发 ...
- 迅为三星Exynos 4412开发板四核Cortex-A9ARM安卓linux开发板
开发板光盘资料包含:原理图(PDF格式).底板PCB(Allegro格式).驱动程序源码.芯片和LCD数据手册.开发环境.产品使用手册. 4412开发板简介: iTOP-Exynos4412开发板采用 ...
- 开创学习的四核时代-迅为iTOP4412学习开发板
产品特点: 处理器: Exynos 4412 处理器,Cortex-A9四核,功耗性能俱佳! 性能: 1GB(可选2GB) 双通道 64bit数据总线 DDR3: 4GB(可选16GB)固态硬盘EMM ...
- 迅为4412开发板QtE系统源码-屏幕横竖屏切换修改方法
迅为4412开发板QtE系统源码-屏幕横竖屏切换修改方法 详情了解:http://topeetboard.com 更多了解:https://arm-board.taobao.com/ 用户在开发板上运 ...
随机推荐
- 从web页面启动winform程序的实现方法
本文实现的需求是: A.通过web页面启动winform程序: B.将页面的参数传递给winform程序: C.winform程序已经启动并正在运行时,从web页面不能重新启动winform程序,只是 ...
- 别误用IsDigit与IsNumber函数
1.起因 最近发现程序中有一段控制TextBox数字输入的代码,相信大家都不会太陌生,如下: void int_KeyPress(object sender, KeyPressEventArgs e) ...
- JPA学习(3)JPA API
在我们的jpa的helloworld中,我们看到了简单的一个jpa保存操作,下面就来好好学习一下,JPA最主要的几个类 1.基本的几个类: ①:Persistence 类是用于获取 EntityMan ...
- php中的字符串常用函数(三) str_replace() 子字符串替换
mixed str_replace ( mixed $search , mixed $replace , mixed $subject [, int &$count ] ); 该函数返回一个字 ...
- 【iOS】Quartz2D简单介绍
一.什么是Quartz2D Quartz 2D是⼀个二维绘图引擎,同时支持iOS和Mac系统 Quartz 2D能完成的工作: 绘制图形 : 线条\三角形\矩形\圆\弧等 绘制文字 绘制\生成图片(图 ...
- tomcat filewatchdog but has failed to stop it原因以及解决方法
停止tomcat,有些时候会报The web application [/XXX] appears to have started a thread named [FileWatchdog] but ...
- [模仿][JS]新浪财经7*24直播
使用新浪财经7*24直播的数据 简单的做一个山寨品 在线地址:[痛苦啊,有GFW,却没有vpn,往heroku上传浪费了好多时间...] http://wangxinsheng.herokuapp.c ...
- Crash日志符号化
1.符号化crash日志需要3样东西: 1).crash日志本身(如:example.crash),从Xcode的organizer导出或者来自Itunes Connect. 2).crash日志所对 ...
- ABAP:SAP报表性能的优化
大部分ABAPer都是从SAP报表及打印开始学起的,大家也都认为写个SAP报表程序是最简单不过的事了. 但是实际情况真的如此吗?写报表时除了保证数据的准确性,您可曾考虑过报表的性能问题吗? 由于报表程 ...
- 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 ...