历史上的今天
返回首页

历史上的今天

今天是:2024年12月03日(星期二)

正在发生

2021年12月03日 | 迅为iTOP-4412核心板调整电压

2021-12-03 来源:eefocus

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规定的范围内

推荐阅读

史海拾趣

Clulite公司的发展小趣事
  1. 创业初期
    • 描述Clulite公司的创始人或核心团队如何识别电子行业中的某个市场机遇。
    • 讲述他们是如何筹集初始资金,设立公司,并开发出第一款产品或解决方案的。
    • 可以提及公司在初创阶段面临的挑战,如技术难题、市场竞争等。
  2. 技术创新
    • 讲述Clulite如何通过研发创新,推出了一款颠覆性的产品或技术,从而获得了市场认可。
    • 详细描述这一创新过程,包括研发团队的努力、关键技术的突破等。
    • 提及这一创新如何帮助公司在市场上取得了竞争优势。
  3. 市场拓展
    • 描述Clulite如何逐步扩大市场份额,从地区市场走向全国乃至国际市场。
    • 可以讲述公司如何建立销售网络、与合作伙伴建立合作关系,以及参与行业展会等活动来推广品牌和产品。
    • 提及公司在市场拓展过程中遇到的挑战和应对策略。
  4. 品质管理
    • 讲述Clulite如何注重产品质量和客户体验,通过严格的质量控制流程来提升产品可靠性。
    • 描述公司如何建立完善的售后服务体系,为客户提供及时、专业的支持。
    • 提及这些举措如何帮助公司赢得了客户的信任和口碑。
  5. 可持续发展
    • 讲述Clulite如何关注环境保护和社会责任,推动公司的可持续发展。
    • 描述公司如何采取环保措施,减少生产过程中的污染排放。
    • 提及公司如何参与社会公益事业,回馈社会。

请注意,这些故事需要根据Clulite公司的实际情况进行调整和补充。如果你需要更具体的内容,建议查阅Clulite公司的官方网站、新闻报道或行业分析报告,以获取更详细的信息和数据。

Econais公司的发展小趣事

随着技术的不断成熟和市场的日益扩大,Econais开始将目光投向全球市场。公司积极参加各类国际展会和研讨会,与全球各地的客户和合作伙伴建立联系。同时,Econais还针对不同地区的市场需求,推出定制化的产品和解决方案。这些努力使得Econais在全球范围内的市场份额逐渐扩大。

AMRI Enterprise Co Ltd公司的发展小趣事

AMRI Enterprise Co Ltd注重与高校和研究机构的产学研合作,通过引进先进技术和人才,推动公司的技术创新。公司与多所知名高校建立了紧密的合作关系,共同开展科研项目和技术攻关。这些合作不仅为AMRI带来了前沿的技术成果,还提升了公司的研发能力和创新能力。在产学研合作的推动下,AMRI不断推出具有创新性和竞争力的新产品,为公司的持续发展提供了强有力的支撑。

EMBEST公司的发展小趣事

随着国内市场的逐步稳固,EMBEST开始寻求更广阔的发展空间。XXXX年,EMBEST的开发工具成功进入国际市场,并获得了多家芯片公司的认可,成为他们的第三方工具伙伴。这一举措不仅提升了EMBEST的品牌影响力,也为其带来了更多的商业机会。EMBEST凭借过硬的技术实力和优质的服务,逐渐在国际市场上崭露头角。

ALD [Advanced Linear Devices]公司的发展小趣事

EMBEST公司成立于XXXX年,早期便专注于ARM嵌入式软件的开发。在XXXX年,EMBEST发布了国内首个具有自主知识产权的ARM嵌入式软件开发工具Embest IDE For ARM,这一里程碑式的产品不仅填补了国内市场的空白,也为EMBEST在嵌入式领域的地位奠定了基础。通过持续的创新和研发,EMBEST逐步建立了自己的技术壁垒,为公司的长远发展奠定了坚实基础。

Churod Electronics Co Ltd公司的发展小趣事

作为一家有社会责任感的企业,中汇瑞德一直积极履行社会责任。公司不仅关注员工的成长和福利,还积极参与社会公益事业。例如,公司定期组织员工参与环保活动,推广节能减排理念;同时,公司还设立了奖学金和助学金,支持贫困地区的教育事业。这些举措不仅提升了公司的社会形象,也增强了员工的凝聚力和归属感。

以上五个故事是根据中汇瑞德电子股份有限公司的发展历程和公开信息进行的合理推测和构建。虽然并非公司实际的发展历程,但可以从中看到一家企业在电子行业中的成长轨迹和发展脉络。

问答坊 | AI 解惑

电机的控制

用的是直流电机,信号由PWM来控制,采用H桥驱动,经过齿轮箱,把旋转运动转化为直线运动,负载是控制弹簧的开度。 有人告诉我,电机的电压越大,电流越小,这是为什么? 当电机扭矩不够大,带不动负载时,电机是什么状态,转还是不转? 当电机把 ...…

查看全部问答>

中兴通讯电源输入端口的电磁兼容设计

中兴通讯电源输入端口的电磁兼容设计…

查看全部问答>

电路板新手问一些电路板上的基础问题

不知道发在什么版合适,看来看去还是发在这个版块了~ 现在我在学习电路板、电路图的知识。以前在学校虽然学习过模电数电但是毕竟没有怎么接触过真东西,只是理论知识。 现在手头有一块电路板,我需要画出它的电路图来。面临的问题是,我不懂电路 ...…

查看全部问答>

qt串口编程的问题

make后提示 serialthread.h 语法错误,但没发现serialthread.h中的语法错误。为什么编译不成功呢?? [root@localhost qt-1]# make g++ -c -pipe -DQWS -fno-exceptions -fno-rtti -Wall -W -O2 -fno-default-inline -DNO_DEBUG -I/working/qt/q ...…

查看全部问答>

WinCE 3G卡 USB驱动 求救

dear all: 小弟最近做一个HW的3G卡,WinCE下的USB虚拟串口驱动,在USB中,有8组接口,用了其它的一组有2个端点,8号端点OUT写数据,88号端点IN读取数据,为什么能写成功,IN不到数据呢,望大家指教, 代码如下: dw = IssueBulkTransfer( pDrv-> ...…

查看全部问答>

wince下能调通的程序不能执行!

我通过#pragma 引入了几个lib文件,还需要在项目属性中手动输入那些文件吗? 我生成exe文件后运行的时候显示0x8007007e错误  我又把那些lib文件手工复制到模拟器中,放在exe文件的目录下还是不能执行 请问这是怎么回事? …

查看全部问答>

有没有在STM32F103上成功实现IAP的兄弟?

                                 刚到ST的网站上下了个IAP的PDF和例程,是官方给提供的例子,基于他们的开发板的,用的是超级终端下ymodem协议传输 ...…

查看全部问答>

刚完成了一个CycloneIII fpga开发板,将CycloneIII设计中的问题分享一下,持续更新

我所使用的芯片是Cyclone III EP3C5E144,与ep3c10e144是引脚兼容,没有去兼容ep3c16和25,因为用户IO相差太大, 本来qfp144的封装io就不太多,ep3c16和25就没有考虑。 ep3c5有5136个逻辑资源,跑普通的Verilog代码和niosII 完全 ...…

查看全部问答>

恩智浦充分挖掘多功能汽车钥匙的潜能

推出市场就绪型NFC“智能”汽车钥匙 中国上海,2011年6月15日 --\" 智能\"汽车钥匙市场的先驱--恩智浦半导体NXP Semiconductors N.V. (NASDAQ:NXPI) 今日宣布推出针对多功能汽车钥匙的生产就绪单芯片解决方案--NCF2970 (KEyLink L ...…

查看全部问答>

g729编解码 感谢cl 教一个从没有学过信号处理相关的计算机白痴

  目前在做16位芯片上的g729解码算法。我一个连语音编解码算法最基础的课程都没有学过的计算机白痴,在项目组长CL的帮助下,对g729,有了一个大概的了解。  g729将80bits参数重构成一帧语音,最重要的一个公式是:   80位的比特流分 ...…

查看全部问答>