你好,
我是一个嵌入式系统工程师为我的公司开发BSP,我们使用对话框DA9063-3FHK1 PMIC。雷电竞下载app
在实现PMIC稳压器监控的Linux支持时,我发现了不同的版本
存在DA9063 PMIC。他们没有相同的寄存器地图。
因为我无法弄清楚什么注册地图我的PMIC版本属于,我在这里发布,以便知道
how to find out the exact register map that is implemented in the DA9063-3FHK1 version.
Best regards,
Pinkpr.
设备:
你好
检查寄存器值的最佳方法是使用DA9063 GUI,这将允许您检查每个寄存器及其功能。-3fhk1代码描述了包,3f是变体编号(OTP),HK1是物理包细节。
3F变体在由82变量所取代的过程中,然而这种变体仍然经历被释放的过程。我建议将来使用82个变体。
亲切的问候,
艾略特德克斯特
点击这里对于DA9063 GUI的链接。
嗨Elliott,谢谢你的回答。
从我理解的那样,DA9063 GUI被制作与DA9063 eVAL板一起使用。
我没有这个eval板,加上我无法在互联网上找到DA9063 GUI。
我实际上并不试图在OTP中找到什么,但我只是想检查我的PMIC版本上的寄存器地址是否符合Linux源文件中写的内容。
我特别喜欢检查ADC部分。Linux内核中没有为DA9063实现的ADC功能,这就是我正在研究的内容。
Pinkpr.
你好Pinkpr,
DA9063 GUI
GUI本身可以在没有性能或eval板的情况下使用,这将允许用户检查和编辑OTP寄存器设置,但不允许用户使用PMIC检查OTP。
点击这里对于DA9063支持页面。GUI被称为PowerCommander
芯片ID和变体
DA9063驱动程序中有两个寄存器映射。广告表和BB表,BB表用于DA9063驱动器。
The chip ID and variant register values are used to detect the chip type. These registers are:
#define DA9063_REG_CHIP_ID 0x181
#define da9063_reg_chip_variant 0x182
ADC映射
在下面
https://support.dialog-seminile.com/pmic-audio/device/da9063?qt-pmic_device=1#qt-pmic_device.
文件>飞思卡尔BSP>
有DA9063 Android集成。这些包含DA9063的HWMON驱动程序的示例,该示例集成到Freescale / NXP Android版本中。
最新版本,DA9063 I.MX 6 LOLLIPOP ANDROID L5.1.1 2.1.0 BSP有一个zip文件,这是DA9063 I.MX 6 LOLLIPOP ANDROID L5.1.1 2.1.0 BSP。zip,这包含了DA9063的HWMON示例。
亲切的问候,
艾略特德克斯特
嗨艾略特,
您是否知道为什么在HWMON驱动程序中未实施内部监管机构监控?这正是我正在寻找的功能。
我会尝试在您提供的基本驱动程序的顶部添加此功能。
Pinkpr.
嗨皮埃尔奥利维尔,
在过去,超过/欠电压中断处理程序太专用于通用Linux驱动程序,并且内核维护者不支持其添加。Android实现中的示例显示了如何在对话框Pebix参考平台上实现android版本以用于监视,但据信任何实现都包含平台特定组件。
亲切的问候,
艾略特德克斯特
嗨艾略特,
感谢您的回答。我仍然无法找到如何在内部调节器上执行ADC手动转换。
我真的跟着“监控输出电压 - >手动测量调节器输出电压”部分(第6.4页,第13页)AN-PM-024 DA9063电压监控文件,它似乎并没有工作。
另外,我注意到本文档内容与数据表内容之间存在一些差异。
例如,文档告诉设置
MON_A8_IDX = 0
选择BuckCore1监控。但根据数据表,您应该设置MON_A8_IDX = 1
。So what's true, and what's not ?
Pinkpr.
And by the way, what are the differences between the 3F and 82 versions ?
嗨皮埃尔奥利维尔,
数据表和应用程序注意:
DA9063数据表指出克克隆1的寄存器值为1,并且AN-PM-024大部分状态为BACKCORE1的寄存器值为1。然而,AN-PM-024,表12中的一个表中存在拼写,表12,它状态为0H,这也应该是1待正确且与其他表保持一致。谢谢您指出这一点,我们将更新文档。
变体3F和82:
变型3F和变型82非常相似;某些调节器电压,电流限制和启动插槽有一些微小的变化。对次要寄存器还有一些更改,但没有任何内容可以显着改变其操作或目的。客户和客户要求建议的更改。
ADC
当你说你跟随文件时,它根本不起作用,你的意思是什么?
亲切的问候,
艾略特德克斯特
我实际上试图为每个稳压器获得ADC测量的电压值。
1.根据测量调节器所属的组,通过写入ADC_MAN注册值ADC_MUX(8,9或10)来重置ADC。
2.我在mon_reg_5或mon_reg_6中写下与稳压器相关的索引。
3.我在ADC_MAN寄存器中写下ADC_MAN位(1 << 4)。
4.我等待要在Event_A寄存器中设置的e_adc_rdy bit(1 << 3)进行准备的值。
5.我获取ADC_RES_H和ADC_RES_L并合并它们以重建转换结果。
对于属于组A8或A10的每个调节器,问题是,我获得ADC_RES_H和ADC_RES_L充满高位(OXFF)。
在A9的情况下,我根据调节器获得不同的值,但它们根本不是逻辑。
例如,我有(实际上)LDO1电压> LDO2电压。但我的ADC转换讲述了相反的。
那些不合逻辑的行为让我认为我的算法有一个大问题,它可能来自我所拥有的数据表/应用笔记中的错误信息。
这就是为什么我来找你并要求帮助:-)
Pinkpr.
嗨皮埃尔奥利维尔,
I followed the instructions from the applications note and didn’t have any of the issues. I will list my steps, starting from variant 3F; I will use LD05 set to 2.8 V as an example:
注册细分:
我用GUI使用标准I2C接口进行读写命令,我没有使用其其他功能或改变任何其他寄存器值。我还通过不同的监管机构测试了所有三个ADC频道,并没有任何问题。
亲切的问候,
艾略特德克斯特
你好皮埃尔奥利维尔,
您可能获得ADC_RES_H和ADC_RES_L寄存器的潜在原因是您尝试测量的稳压器不会启用。我重新尝试使用调节器DIS启用的手动测量值并获得相同的结果,但当我启用稳压器时,ADC测量了稳压器的正确输出电压。
亲切的问候,
艾略特德克斯特
嗨艾略特
I finally found out what was the problem.
I probed the I2C lines with an oscilloscope and found out that no write action we done on MON_REG_5 and MON_REG_6.
我实际上是使用的
Regmap_write.
Linux内核的功能。此功能验证您尝试编写的寄存器实际存在。我不知道为什么,但是DA9063 Linux驱动程序寄存器范围不包括mon_reg_5和mon_reg_6。
我刚将寄存器范围扩展到mon_reg_6,一切都在工作。
一切都将干净,我可能会向Linux驱动程序提交修补程序。
非常感谢您拨出的时间帮助我:-)
Pinkpr.
你好皮埃尔奥利维尔,
没问题,很乐意帮忙..
亲切的问候,
艾略特德克斯特
Hi Pierre-Oliver,
我与驱动程序申请团队发言了关于您最后一个问题的关于您的最后一雷竞技安卓下载个问题,如下所示:
“由于Linux主线V3.16-RC1 DA9063 Linux设备驱动程序使用标准Linux Regmap Framework来访问PMIC的寄存器。
Regmap是寄存器I / O的常见方法,通常由Linux内核中的设备驱动程序使用以执行这些标准访问操作。但是,与其他操作系统I / O方法相比,Regmap不同。部分差异是由于使用寄存器访问权限表,该表可以使用该regmap用于创建芯片模型。
DA9063设备驱动程序定义寄存器访问permissions to list all possible I2C accesses to the DA9063 PMIC registers based upon pre-defined tables built into the device driver. These tables hold注册 - > {可读,可写的,易失性}映射并在文件中静态定义Drivers / MFD / DA9063-I2C.C。因此,Linux内核regmap核心I / O功能可以根据编码到这些表的权限来限制任何PMIC寄存器访问。
Care should be taken.在Linux设备驱动程序中添加新功能时,它将使用Linux核心regmap函数访问寄存器:应相应地更新相关的Regmap访问表。如果向已启用现有的Regmap的设备驱动程序添加新组件,则在制定寄存器的访问权限条目时,应仔细考虑每个新寄存器中的每个位。使用Regmap的原因不仅仅是为了实施寄存器访问限制;暂停和恢复操作的性能改进,默认值和简化也是Regmap设计的一部分。“
亲切的问候,
艾略特德克斯特