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.

[参考译文] INA228:我们是否需要手动清除诊断标志和警报(DIAG_ALRT)寄存器中的转换完成标志?

Guru**** 2553450 points
Other Parts Discussed in Thread: INA228, INA226

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

https://e2e.ti.com/support/amplifiers-group/amplifiers/f/amplifiers-forum/1391284/ina228-do-we-need-to-manually-clear-the-conversion-complete-flag-in-diagnostic-flags-and-alert-diag_alrt-register

器件型号:INA228
Thread 中讨论的其他器件: INA226

工具与软件:

大家好、我想了解 INA228中的转换完成标志行为。

我们已将 INA228配置为连续模式、并启用了转换完成事件。 因此、只要 ADC 完成、ALERT 引脚就会向我们提供数据已就绪的触发信号以及 DIAG_ALRT 寄存器中的 CNVRF 标志。 我们是否需要清除 DIAG_ALRT 寄存器中的 CNVRF 标志、或者它会通过读取电流/电压寄存器自动清除? 我假设它可以通过读取电流/电压寄存器来清楚。 如果我遗漏了任何内容、请更正我。 提前感谢您的支持和帮助。

此致、

Ankit

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

    Ankit 您好、

    因此、ALERT 引脚的行为实际上将根据 您是否启用了 DIAG_ALRT 中的 ALATCH 位而变化。

    如果未启用 ALATCH、则转换就绪标志将在发送后自动清除:

    在这种情况下、可以清除您是否读取了任何内容。

    如果您确实启用了 ALATCH、则转换就绪将使 ALERT 引脚保持在下降状态、直到被清除:

    因此、在这种情况下、您需要读取执行额外步骤来清除标志。 由于您处于连续转换模式、因此您不想写入 ADC_CONFIG 寄存器、因为这会重新启动转换。 在这种情况下、读取结果寄存器不会清除标志。

    此致、

    Mitch

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

    尊敬的 Mitch:
    感谢您的答复和详细的解释。

    在我们的场景中、我们使用连续模式、而在 DIAG_ALRT 寄存器中、我们仅启用 CNVR 位、所有其他位均处于复位状态、包括 ALATCH=0。 从 INA228接收到第一个警报后、当我读取 DIAG_ALRT 寄存器以了解不同标志的状态时、我发现"MATHOF"位设置为"1"。 因此、DIAG_ALRT 寄存器的值为0x100。 我想了解为什么设置该 MATHOF。 提前感谢您的帮助和支持。

    此致、

    Ankit

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

    嗨 Ankit、

    当 MATHOF 位被触发时、 它表示电流和功率数据也许无效。 最可能的原因是 SHUNT_CAL 值未与您的最大电流正确设置。 例如、如果您读取的电流高于 SHUNT_CAL 的值、则已针对计算该值。 (或类似情况)。  

    此致、

    Mitch

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

    您好、Mitch、

    感谢您的答复。 使用有效的分流值、我现在不会得到错误。

    我正在评估 INA228的 ALERT 引脚、观察到该引脚在不读回 DIAG_ALRT 寄存器之前没有被拉高。 我在读取 DIAG_ALRT 寄存器时、它会向我提供0x4003值。 我正在编写用于 INA228的配置、请在下面找到它们:

    CONFIG (0x00):TEMPCOMP = 1、RSTACC = 1、全部清零

    ADC_CONFIG (0x01):MODE = 0x0A、全部清零

    SHUNT_CAL (0x02):0x1000

    SHUNT_TEMPCO (0x03):0x000F

    DIAG_ALRT (0x0B):CNVR=1、APOL=0、ALATCH=0、全部复位为零

    我已将 INA228引脚配置为 MCU 的外部中断。 因此、我将收到一次中断。 在接收到第一个中断后、我还在逻辑分析仪上观察到在收到中断后保持低电平的警报线路。

    请告诉我如何解决我的问题。 提前感谢您的帮助和支持。

    此致、

    Ankit

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

    尊敬的 Mitch:

    还有一个后续问题与 INA228的 ALERT 功能有关。 目前、我们在 I2C 接口上使用带有 MCU 的 INA228。 我想向您确认一点、我们是否能够从具有 I2C 接口的 INA228获得警报? 正如我在上面的主题中提到的、ALERT 引脚只能接收一次警报、然后仅保持低电平、不会拉高、直到移除 Vin。 从数据表的角度来看、我怀疑 ALERT 不能与 I2C 配合使用、因为它应该设计为与 SMBus 配合使用。 为了进行参考、我安装了卡扣。

    您能确认吗? 提前感谢您的帮助和支持。

    此致、

    Ankit

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

    Ankit、

    感谢您的耐心。 Mitch 今天不在办公室、但他将在周二返岗时回复。

    Louis

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

    Ankit 您好、

    该功能适用于 I2C 或 SMBus。 它在设计中与 SMBus 协议兼容、但 INA228不知道您使用的是 SMBus 还是 I2C、因此如果您发送警报响应代码、那么我们的器件会相应地做出响应。

    此致、

    Mitch

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

    尊敬的 Mitch:

    感谢您的答复并为我们提供了可能的解决方案。 我尝试将 I2C 作为 OUT MCU (NXP K32L2A41)在主模式下不支持 SMBus、但在从模式下仅支持 SMBus。 根据警报响应地址的 SMBus 帧序列、我曾尝试发送它、但使用 I2C、但在发送警报响应辅助器件地址(0001 100)并进行读取但设置为高电平后、我收到 NACK。

    我想问、我们是否需要将主器件用于正常 I2C 事务、并在从模式下发送警报响应地址。 请告诉我您对如何通过 I2C 正确发送警报响应地址的意见。

    我还了解到、ALERT 线路会保持低电平、直到它不会对警报响应地址做出响应。 这是否意味着我们需要通过 ALERT 引脚共享警报响应?

    如果您发现我的理解有误、请更正我吗? 提前感谢您的支持和帮助。

    此致、

    Ankit

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

    Ankit、

    感谢您的耐心。 Mitch 目前不在办公室、但他将在周五返回后立即回复。

    谢谢!

    Louis

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

    嗨 Ankit、

    下面是可能对您有用的 SMBus 警报时序图。 我是从 INA226数据表中取出的、但它对于此器件也应该具有相同的功能:

    我建议使用示波器来确认您的 MCU 是否在 按预期发送内容。 您应该能够在 MCU 中以正常的主模式发送此消息。

    这就是 INA228数据表关于 ALERT 线路的内容:

    希望这对您有所帮助、如果您有任何其他问题、请告诉我。

    此致、

    Mitch