本文转自: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规定的范围内

转载于:https://www.cnblogs.com/topeet/p/4619083.html

迅为iTOP-4412核心板调整电压相关推荐

  1. 嵌入式核心板研发之路_启动迅为4412核心板_稳定运行_超强扩展能力

    TOP-4412核心板配置全新的Cortex-A9架构1.4GHz四核处理器,三星exynos 4412处理器拥有32nm HKMG(高K金属栅极技术)制程,支持双通道LPDDR2 1066.整体效能 ...

  2. 4412开发板/4412核心板一次性通过FCC和CE等国际EMC认证

    北京迅为嵌入式开发板 iTOP-4412精英版搭载三星Exynos四核处理器,配备1GB内存,4GB固态硬盘EMMC存储,兼具快速读取与超大容量,纵使海量思考也能及时处理.独家配备三星S5M8767电 ...

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

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

  4. 迅为i.MX8M Mimi 核心板硬件介绍

    迅为I.MX8MM 核心板平台是基于恩智浦的 NXP i.MX 8M Mini 处理器设计开发的一款产品.NXP i.MX 8M Mini 处理器致力于提供出色的视频和音频体验,将媒体的特定功能与针对 ...

  5. OMAP-L138核心板

    为什么80%的码农都做不了架构师?>>>    Revision History Revision  No. Description Draft  Date Remark V1.0 ...

  6. 【学习/研发】嵌入式Linux/Android开发有它就够了——迅为4412开发板

    网站:http://www.topeetboard.com 光盘资料+网盘资料+配套视频+售后支持,助您加速学习研发的进程 产品介绍 iTOP-Exynos4412开发板采用 Exynos4412的主 ...

  7. 迅为龙芯2K1000核心板国产Linux工业板卡适用于工控电力能源行业方案

    龙芯 2k1000 采用 40nm 工艺,片内集成 2 个 GS264 处理器核,主频 1GHz,64 位 DDR3 控制器,以及各种系统 IO 接口. 商业级参数 CPU:龙芯2K1000双核商业级 ...

  8. 迅为嵌入式4412平台兼容3G/4G模块的安卓开发板

    安卓开发板特点说明: 1. 配备16G固态硬盘EMMC存储 2. 64位双通道2GB内存 三星S5M8767电源管理 板载高精度GPS模块 CAN,RS-485等工业接口 板载WIFI蓝牙模块,陀螺仪 ...

  9. 迅为4412开发板驱动-linux 开机 logo 的修改方法

    文档主要介绍 4412 开发板的内核启动 LOGO,请注意如果要修改的屏幕分辨率小于480x640,请参考另外的独立文档"iTOP-4412-内核-4.3 寸屏幕-logo 修改_V1.0& ...

  10. 迅为IMX6Q四核核心板商业级|工业级|IMX6Plus版本|IMX6D双核核心板

    迅为IMX6Q核心板工业级/Plus版本 IMX6Q处理器:兼容单核,双核,工业级,汽车级,IMX6Q最新Plus版本,共用同一底板,高端产品无忧. i.MX6系列针对消费电子.工业控制和汽车应用领域 ...

最新文章

  1. 【js】四种自定义对象的常见方法
  2. oracle在非归档模式下,Oracle在非归档模式下不能更改表空间为备份模式
  3. 科技论文的几种类型-如何写好科技论文之我见(二)
  4. php网站404页面302,404页面该怎么做?
  5. amd为什么还用针脚_为什么AMD不取消cpu上的针脚?
  6. 公众号滑动图代码_实用技巧:公众号封面图如何提取?
  7. nginx简单代理配置
  8. 目标检测的稀疏对抗攻击,代码已开源
  9. (85)FPGA约束有哪些-面试必问(九)(第17天)
  10. js a/a中this的使用
  11. 【安卓按键精灵】教你一个小时自己开发脚本,零基础1个小时上手
  12. Pandas学习——文本数据
  13. 计算机nas一般指用户,NAS网络存储器·什么是网络服务
  14. C#将指定时区中的时间转换为协调世界时 (UTC)。
  15. 腾讯派息式减持京东,“伯克希尔”的投资策略变的逻辑是?
  16. python基础数据类型3
  17. 360wifi linux ad hoc,Ad Hoc模式无线局域网搭建
  18. 我的手机游戏回忆-风云剑侠
  19. pmp考试题目常见套路
  20. 237. 删除链表中的节点【我亦无他唯手熟尔】

热门文章

  1. android实现下载的核心代码
  2. jdeveloper12.1.3的安装与卸载
  3. apache cxf 测试webservice接口
  4. Swoole 源码安装
  5. Java中的四种内部类
  6. 人性”的三张图,改变无数人!
  7. mac 下php运行bug
  8. datagridview 不显示行号的问题
  9. 多元一次方程组的求解
  10. Gbase相关学习总结