DA9063版本和注册地图

15个帖子/ 0新
最后一篇
Pinkpr.
离线
最后一次露面:2年4个月前
加入:2017-11-14 08:34
DA9063版本和注册地图

你好,

我是一个嵌入式系统工程师为我的公司开发BSP,我们使用对话框DA9063-3FHK1 PMIC。雷电竞下载app

在实现PMIC稳压器监控的Linux支持时,我发现了不同的版本
存在DA9063 PMIC。他们没有相同的寄存器地图。

因为我无法弄清楚什么注册地图我的PMIC版本属于,我在这里发布,以便知道
如何查找在DA9063-3FHK1版本中实现的确切寄存器映射。

最好的祝福,

Pinkpr.

设备:
ed_dialog.
离线
最后一次露面:1天22小时前
职员
加入:2017-09-18 11:54

你好

检查寄存器值的最佳方法是使用DA9063 GUI,这将允许您检查每个寄存器及其功能。-3fhk1代码描述了包,3f是变体编号(OTP),HK1是物理包细节。

3F变体在由82变量所取代的过程中,然而这种变体仍然经历被释放的过程。我建议将来使用82个变体。

亲切的问候,

艾略特德克斯特

点击这里对于DA9063 GUI的链接。

Pinkpr.
离线
最后一次露面:2年4个月前
加入:2017-11-14 08:34
嗨艾略特,谢谢

嗨Elliott,谢谢你的回答。

从我理解的那样,DA9063 GUI被制作与DA9063 eVAL板一起使用。
我没有这个eval板,加上我无法在互联网上找到DA9063 GUI。

我实际上并不试图在OTP中找到什么,但我只是想检查我的PMIC版本上的寄存器地址是否符合Linux源文件中写的内容。
我特别喜欢检查ADC部分。Linux内核中没有为DA9063实现的ADC功能,这就是我正在研究的内容。

Pinkpr.

ed_dialog.
离线
最后一次露面:1天22小时前
职员
加入:2017-09-18 11:54

你好Pinkpr,

DA9063 GUI

GUI本身可以在没有性能或eval板的情况下使用,这将允许用户检查和编辑OTP寄存器设置,但不允许用户使用PMIC检查OTP。

点击这里对于DA9063支持页面。GUI被称为PowerCommander

芯片ID和变体

DA9063驱动程序中有两个寄存器映射。广告表和BB表,BB表用于DA9063驱动器。

芯片ID和变体寄存器值用于检测芯片类型。这些寄存器是:

#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示例。

亲切的问候,
艾略特德克斯特

Pinkpr.
离线
最后一次露面:2年4个月前
加入:2017-11-14 08:34
嗨艾略特,

嗨艾略特,

您是否知道为什么在HWMON驱动程序中未实施内部监管机构监控?这正是我正在寻找的功能。
我会尝试在您提供的基本驱动程序的顶部添加此功能。

Pinkpr.

ed_dialog.
离线
最后一次露面:1天22小时前
职员
加入:2017-09-18 11:54

嗨皮埃尔奥利维尔,

在过去,超过/欠电压中断处理程序太专用于通用Linux驱动程序,并且内核维护者不支持其添加。Android实现中的示例显示了如何在对话框Pebix参考平台上实现android版本以用于监视,但据信任何实现都包含平台特定组件。

亲切的问候,
艾略特德克斯特

Pinkpr.
离线
最后一次露面:2年4个月前
加入:2017-11-14 08:34
嗨艾略特,

嗨艾略特,

感谢您的回答。我仍然无法找到如何在内部调节器上执行ADC手动转换。

我真的跟着“监控输出电压 - >手动测量调节器输出电压”部分(第6.4页,第13页)AN-PM-024 DA9063电压监控文件,它似乎并没有工作。
另外,我注意到本文档内容与数据表内容之间存在一些差异。

例如,文档告诉设置mon_a8_idx = 0.选择BuckCore1监控。但根据数据表,您应该设置mon_a8_idx = 1

那是真的,什么是不是?

Pinkpr.

Pinkpr.
离线
最后一次露面:2年4个月前
加入:2017-11-14 08:34
顺便说一句,是什么

顺便问一下,3F和82版本之间的差异是什么?

ed_dialog.
离线
最后一次露面:1天22小时前
职员
加入:2017-09-18 11:54

嗨皮埃尔奥利维尔,

数据表和应用程序注意:

DA9063数据表指出克克隆1的寄存器值为1,并且AN-PM-024大部分状态为BACKCORE1的寄存器值为1。然而,AN-PM-024,表12中的一个表中存在拼写,表12,它状态为0H,这也应该是1待正确且与其他表保持一致。谢谢您指出这一点,我们将更新文档。

变体3F和82:

变型3F和变型82非常相似;某些调节器电压,电流限制和启动插槽有一些微小的变化。对次要寄存器还有一些更改,但没有任何内容可以显着改变其操作或目的。客户和客户要求建议的更改。

ADC

当你说你跟随文件时,它根本不起作用,你的意思是什么?

亲切的问候,
艾略特德克斯特

Pinkpr.
离线
最后一次露面:2年4个月前
加入:2017-11-14 08:34
我实际上试图得到一个

我实际上试图为每个稳压器获得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.

ed_dialog.
离线
最后一次露面:1天22小时前
职员
加入:2017-09-18 11:54

嗨皮埃尔奥利维尔,

我按照应用程序注意的说明,并没有任何问题。雷竞技安卓下载从Variant 3F开始,我将列出我的步骤;我将使用LD05设置为2.8 V作为示例:

  1. 将ADC_MUX设置为所需的频道。对于LDO 5,ADC_MUX设置为0x1001。
  2. 将mon_a9_dx设置为所需的索引。对于LDO5,MON_A9_IDX设置为索引6。
  3. 现在需要触发手动转换。对于BEC_MAN = 1的手动转换,当转换完成时,该寄存器将重置为0。
  4. 此操作的结果现在应在ADC_RES_H和ADC_RES_L中,从此操作中获得的结果是2.8 V

注册细分:

  1. 寄存器034H = 09,这将设置0x1001的ADC_MUX。
  2. 寄存器11eh = 60,这将设置具有索引6的mon_a9_idx。
  3. 寄存器034H = 19,这将触发手动测量。
  4. ADC_RES_H寄存器将包含10位结果的占八位;寄存器38将读取8F,即10001111。
  5. ADC_RES_L寄存器将包含2 LSB(最低有效位),寄存器37将读取0。
  6. 合并ADC_RES_H和ADC_RES_L,这将给出1000111100,转换为DECIMAL以获得572,以及时间4.883 mV。

我用GUI使用标准I2C接口进行读写命令,我没有使用其其他功能或改变任何其他寄存器值。我还通过不同的监管机构测试了所有三个ADC频道,并没有任何问题。

亲切的问候,

艾略特德克斯特

ed_dialog.
离线
最后一次露面:1天22小时前
职员
加入:2017-09-18 11:54

你好皮埃尔奥利维尔,

您可能获得ADC_RES_H和ADC_RES_L寄存器的潜在原因是您尝试测量的稳压器不会启用。我重新尝试使用调节器DIS启用的手动测量值并获得相同的结果,但当我启用稳压器时,ADC测量了稳压器的正确输出电压。

亲切的问候,

艾略特德克斯特

Pinkpr.
离线
最后一次露面:2年4个月前
加入:2017-11-14 08:34
嗨艾略特

嗨艾略特

我终于发现了什么问题。
我用示波器探测了I2C行,发现我们在mon_reg_5和mon_reg_6上完成了我们完成的写操作。
我实际上是使用的Regmap_write.Linux内核的功能。此功能验证您尝试编写的寄存器实际存在。
我不知道为什么,但是DA9063 Linux驱动程序寄存器范围不包括mon_reg_5和mon_reg_6
我刚将寄存器范围扩展到mon_reg_6,一切都在工作。

一切都将干净,我可能会向Linux驱动程序提交修补程序。

非常感谢您拨出的时间帮助我:-)

Pinkpr.

ed_dialog.
离线
最后一次露面:1天22小时前
职员
加入:2017-09-18 11:54
你好皮埃尔奥利维尔,

你好皮埃尔奥利维尔,

没问题,很乐意帮忙..

亲切的问候,

艾略特德克斯特

ed_dialog.
离线
最后一次露面:1天22小时前
职员
加入:2017-09-18 11:54
嗨皮埃尔奥利弗,

嗨皮埃尔奥利弗,

我与驱动程序申请团队发言了关于您最后一个问题的关于您的最后一雷竞技安卓下载个问题,如下所示:

“由于Linux主线V3.16-RC1 DA9063 Linux设备驱动程序使用标准Linux Regmap Framework来访问PMIC的寄存器。

Regmap是寄存器I / O的常见方法,通常由Linux内核中的设备驱动程序使用以执行这些标准访问操作。但是,与其他操作系统I / O方法相比,Regmap不同。部分差异是由于使用寄存器访问权限表,该表可以使用该regmap用于创建芯片模型。

DA9063设备驱动程序定义寄存器访问权限,以基于设备驱动程序内置的预定义表格列出所有可能的I2C访问DA9063 PMIC寄存器的访问权限。这些表格持有注册 - > {可读,可写的,易失性}映射并在文件中静态定义Drivers / MFD / DA9063-I2C.C。因此,Linux内核regmap核心I / O功能可以根据编码到这些表的权限来限制任何PMIC寄存器访问。

应注意。在Linux设备驱动程序中添加新功能时,它将使用Linux核心regmap函数访问寄存器:应相应地更新相关的Regmap访问表。如果向已启用现有的Regmap的设备驱动程序添加新组件,则在制定寄存器的访问权限条目时,应仔细考虑每个新寄存器中的每个位。使用Regmap的原因不仅仅是为了实施寄存器访问限制;暂停和恢复操作的性能改进,默认值和简化也是Regmap设计的一部分。“

亲切的问候,

艾略特德克斯特