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.

[参考译文] TMS320F280025:在具有无响应主器件的 PMBus 通信中处理 CLK_LOW_TIMEOUT

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1504264/tms320f280025-handling-clk_low_timeout-in-pmbus-communication-with-unresponsive-master

器件型号:TMS320F280025

工具/软件:

尊敬的专家:  

我要找客户。  

他们遇到了我们的 F280025 PMBus 模块 将 SCL 线路保持在低电平约35ms 的问题 收到 NACK 、将触发CLK_LOW_TIMEOUT
但是、当CLK_LOW_TIMEOUT被触发时、它就会被触发 不进入PMBUS_STACK_ASSERT(0)块状态 亮起。

此图显示了他们遇到的问题。


其主器件没有发送 NACK、这导致 MCU 进入不受控制的状态。
如您所见、 C2000应该在用数据进行响应后完成了事务 0x01但是,它却被卡住了。

以下是一些问题和观察结果:

  1. 是否存在标准处理机制 CLK_LOW_TIMEOUTTI 的 PMBus 协议栈中所示的吗?

  2. 他们已经检查了示例代码、但想进行确认 PMBusStack_errorHandler()内部确切处理的内容

  3. 作为权变措施、他们CLK_LOW_TIMEOUT在每个pmbus_stack_handler_target()函数的开头添加了对的检查。
    如果设置了超时标志、则触发PMBus_errorHandler()重新初始化。

    • 此权变措施是否有效并推荐使用?

此外:

  1. 什么是 "PMBus over I2C"与常规 PMBus 用法之间的差异 兼容性方面有何限制?

  2. 由于 MCU 使用专用的 PMBus 模块、因此仍然可以实现 正确接收和处理标准 I2C 消息

此致、

Eric Chen

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

    Eric、

    我将需要更多时间来讨论问题1-3;只是为了确认在此系统中、C2000 PMBus 是从器件/外设、而一些其他器件是主器件/主机、对吗?

    对于问题4、PMBus 驱动程序是一个统一的库、可以支持客户正在使用的 PMBus IP 以及大多数 C2000器件中存在的 I2C 模块。  此#ifndef 查看是否使用 I2C 在 PMBus 上进行通信(在本例中不是)。

    对于问题5、客户是否询问该器件上的 I2C 模块是否也可自由使用?  因为它们在物理上是独立的块、所以可以进行此操作。

    此致、

    Matthew

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

    尊敬的 Matthew:  

    我将需要更多时间来解答问题1-3;只是要确认在此系统中、C2000 PMBus 是从器件/外设、某些其他器件是主器件/主机、对吗?

    是的、您是对的。  

    对于问题5、客户是否询问此器件上的 I2C 模块是否也可免费使用?  这是允许的、因为它们是物理上独立的块。

    这个问题与问题4有关、他们正在思考我们的模块是否会同时处理 I2C 和 PMBus。 但根据您的反馈、答案不是来自软件代码。  

    此致、

    Eric Chen

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

    Eric、

    如果是 a、这里提供了更多信息   CLK_LOW_TIMEOUT occurs, it will reset the PMBUS logic on the device.  I'm investigating how the driver will handle this, or how to detect this behavior.

    客户应看到所有与 PMBus 关联的寄存器都恢复到其默认状态、发生这种情况时需要重新初始化外设。

    我认为这与客户所看到的一致。

    由于目标模式下的 C2000 PMBus 从不接收到来自主器件的 NACK、因此它无法以1进行响应、因此总线需要复位。

    此致、
    Matthew

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

    尊敬的 MattewPate:  

    这意味着当发生 CLK_LOW_TIMEOUT 时、PMBus 外设由硬件复位、并且所有相关的寄存器都被清除。

    客户将需要在代码中实施检测和重新初始化机制。

    如果总线卡住(例如、目标器件不会收到 NACK)、还需要总线复位。

    但问题似乎来自目标没有收到 NACK?  

    如果 NACK 得到解决、可能 没有问题出现、我的理解是否正确?  

     

    此致、

    Eric Chen

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

    尊敬的 Mattew:  

    我可以获取您对此的更新吗?  

    此致、

    Eric Chen

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

    Eric、

    正确、根本原因是 C2000没有收到主机的响应(ACK 或 NACK)、因此总线超时。  我后续介绍了如何在 PMBus 协议栈中处理该问题。

    此致、
    Matthew

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

    Eric、

    我已经对此进行了深入研究、下面是驱动程序内部的链接:

    在 PMBus_STACK_HANDLER_TARGET_IDLE.c 文件中:位于 PMBusStack_targetIdleStateHandler (handle)函数内部

    输出如下:

    if((status & PMBUS_PMBSTS_UNIT_BUSY) == 0U)
        {
            //
            // Neither PMBUS hardware nor firmware are stuck,
            //
            // The user must use the clock low timeout feature to
            // fire an interrupt off to the CPU, query the comms
            // stack object, take remedial measures and reset
            // the state machine prior to returning from the interrupt
            //
        }

    目的是在 PMBus ISR 内、TIMEOUT 是为超时事件启用的 ISR 源。

    这可通过 PMBINTM 寄存器启用

    https://www.ti.com/document-viewer/lit/html/SPRUIN7C#GUID-20200916-SS0T-LVPX-HHSR-GRXWW3GKVM3M/PMBUS_PMBUS_REGS

    在 ISR 内、客户会寻找是否设置了超时标志、然后按上述方式在  PMBSTS 寄存器中继续。

    回到原始问题、就错误处理程序而言;如果设置了超时位、则可以从 PMBus ISR 调用错误处理程序、然后通过向 PMBCTRL 寄存器中的 RESET 位写入"1"对 PMBus 模块进行软复位。

    也可以轮询超时状态位、但检测超时可能不如使用 ISR 立即检测。  我查看了我们的示例、这些示例启用了来自 PMBus 的所有中断源、但 ISR 为空、以便用户定义所需的方式。  很可能是在超时时调用了 ISR、但由于处理程序为空、它只返回到主代码、假设客户使用了我们的通信示例来实现所有这些功能。

    让我知道这是否有助于客户解决此问题、或者他们需要我们进一步澄清。

    此致、

    Matthew