This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] TMDSCNCD263-PMIC:TPS650332-Q1

Guru**** 1821780 points
Other Parts Discussed in Thread: TMDSCNCD263-PMIC, TPS650332-Q1
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/power-management-group/power-management/f/power-management-forum/1432299/tmdscncd263-pmic-tps650332-q1

器件型号:TMDSCNCD263-PMIC
主题中讨论的其他器件: TPS650332-Q1

工具与软件:

嗨、Phil Yi40、

我有一个问题要咨询。 为了减少内核调用的次数、我们希望能够一次读取多个连续寄存器的值。

但我们读取多个具有连续地址的寄存器、似乎只有从第一个寄存器读取的值是正确的。 是否因为无法在 TMDSCNCD263-PMIC 中一次读取多个寄存器?

例如:

我读取五组寄存器、每组寄存器的地址是连续的。 共有16个寄存器、读取的值为:

当我单独读取这16个寄存器的值时、读取的值为:

从上面的结果可以看出、通过连续读取和单个读取获取的寄存器值是不同的。 为什么会出现这种现象?

我们期待您的回复。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Jiafan:

      TPS650332-Q1是一款 GPN、不提供详细的 NVM 设置。 您能给我提供 OPN 吗、以便我检查器件 I2C 是否启用了 CRC 功能。  

     如果其 I2C 启用了 CRC、您可以参阅 此处链接的此常见问题解答 、以正确实现 I2C 读取。  

    谢谢!

    Phil

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Phil、您好!

       OPN "TPS65033200-Q1"启用了 I2C_CRC。 八个月前、我的同事就其他问题进行了协商、我们也在进行同样的项目。 问题详情如下: e2e.ti.com/.../tmdscncd263-pmic-tps650332q1-fault-development

       也许我的描述不够清楚:

       我们希望能够通过单个寄存器读取操作来读取多个连续寄存器地址的值。 是否支持此操作?

       由于这些值在通过执行多个寄存器操作读取多个寄存器值与通过执行一个寄存器操作读取多个寄存器之间存在差异。 我认为通过执行多个寄存器操作来读取多个寄存器的值是没有问题的、那么通过单个寄存器读取操作读取多个寄存器的值为什么是错误的呢?

    谢谢!

    Jiafan

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Jiafan:

     这是我第一次听到您面临的问题;我们有许多客户 读取多个寄存器值而没有发生问题。  

     请确保为每次读取的字节插入 CRC 字节;这是我现在可以看到的唯一原因。  

    谢谢!

    Phil

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Phil、您好!

       您能帮助确认此问题吗?
       我读取寄存器0x04的值时、该值为0x1E、其中 CONFIG_CRC_EN=1、这意味着默认启用 CRC。

       我可以通过 i2castercmd 直接读取单个寄存器的值、但当我读取多个连续的寄存器时、得到的值似乎有问题。 如下图所示:

           

       1.我不确定是否启用了 CRC。 如果启用了该功能、为什么我可以通过 i2cmastercmd 直接读取寄存器的值而无需 CRC 字节位。
       2.因为我可以读取单个寄存器的值。 我还想知道为什么读取多个连续值是错误的? 您能帮助验证这一点吗?
       3.我可以关闭 CRC? 如果是、您能否提供一种关闭它的方法

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Jiafan:

     根据您的读数0x00=0xDA;0x01=0x59;OPN 为 "TPS6503320A-Q1"、其 I2C_CRC_EN=1表示启用了 I2C_CRC。

      此外、 OPN "TPS6503320A-Q1"正在大规模生产、无法再重新编程、这意味着无法禁用其  I2C_CRC。

     您需要读取所有寄存器值的原因是什么? 您需要修复的任何真正问题?  

    谢谢!

    Phil

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Phil、您好!

       感谢您的答复。

       读取所有寄存器值的目的是减少内核调用的次数并尽可能减少 IPC 通信资源。
       由于我们当前需要读取大量的寄存器、因此如果我们打开 CRC 功能、则一次只能读取一个寄存器、无法批量读取。

    我还有一个问题、由于启用了 CRC、为什么在读取单个寄存器时似乎不需要添加 CRC 位。

    谢谢

    Jiafan

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Jiafan:

      在与我们的设计团队核实之后、现在很清楚:  

    1. 对单个寄存器进行读取时、数据在 CRC 之前发送回;这就是读取会获得正确值的原因。
    2.  启用 I2C CRC 后、寄存器地址的 PMIC 自动递增被禁用; 这就是  无法读取所有寄存器值一次的原因。  

      

    谢谢!

    Phil