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.

[参考译文] UCD3138064:有关 PMBus_idle_handler()的问题,什么意思是读取请求?

Guru**** 2465890 points
Other Parts Discussed in Thread: UCD3138

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

https://e2e.ti.com/support/power-management-group/power-management/f/power-management-forum/680024/ucd3138064-question-about-the-pmbus_idle_handler-whate-means-a-read-request

器件型号:UCD3138064
主题中讨论的其他器件:UCD3138

为什么程序注释说"一个字节、数据就绪、不是 EOM 和/或 PEC_VALID、出于某种原因、不使用数据请求、这意味着读取请求"?

如果主器件发送一个通信来读取 UCD3138 (从模式)、数据请求标志将不会被设置为1?  为什么 PMBus_read_block_handler 使用 if 语句来决定是否 要传输字节?

您能解释一下吗?  

此致

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

    在第一个代码片段中、尚未设置数据请求。  在本例中、我们知道这是读取、因为 RD_BYTE_COUNT 中有1个字节、但没有 EOM、这意味着没有停止位。

    唯一可能导致这种情况的是重复启动、这使得 PMBus 硬件设置 RD_BYTE_COUNT、但不设置 EOM 位。  因此、我们假设它是读取。  因此、我们在实际需要之前开始写入 TXBUF。  因此、在本例中、我们可能甚至不会看到 DATA_REQUEST。  这是一个快捷方式。  如果需要、您可以尝试首先查找数据就绪和重复开始、而不是 EOM、然后添加另一个检查数据请求的状态。  我们故意使 PMBus 代码保持简短而甜蜜、但这可能不是您的最佳方法、尤其是在您需要严格的故障检测和处理时。   

    第二个片段是不同的、因为它位于块读取函数中。  在这里、已完成读取的写入部分、因此不再有来自主器件的数据。  UCD 将所有数据发送到主器件。  因此、当来自 RX_BUF 的最后一个字节由主器件进行 ACK 处理时、UCD 上的 PMBus 硬件将设置数据请求位。  

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

    感谢您的帮助!

    您的意思是主器件会像下图那样生成一系列数据。但在写入命令之后不发送数据、并且在 UCD (从模式)上的硬件会自动完成"已采集"。 然后主器件直接发送 START 信号和 Device Addr Rd,等待? 对此我有一个问题:在轮询 PMBus 状态时,IF 条件只能是1+PMBST_BYTE0_DATA_READY,而不能  是1+PMBST_BYTE0_DATA_READY+PMBST_BYTE0_DATA_REQUEST? 由于 Device Addr Rd 将使 PMBST_BYTE0_DATA_REQUEST 位设置为1、因此在通信自动完成后被设置为1。  PMBST_BYTE0_DATA_READY 被置位。

    有什么问题吗?您能详细解释 一下吗? 期待您的回复 ,真诚!

    (PMBUS_STATUS_HALT_WORD_0_VALUE &(PMBST_HALF0_CHECK_BITS + PMBST_BYTE0_RD_BYTE_COUNT)=
    (1 + PMBST_BYTE0_DATA_READY)

    此致。

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

    我不确定您的问题是什么。  您询问主控方在写入命令后不发送数据、但您显示的是进程调用、其中主控方发送2个字节的数据、然后重复开始。  

    我们的标准旧 PMBus 代码不支持处理调用。  在正常情况 下、您将在 rd_byte_count 中获得数据就绪和2、而不是1。  

    一些新的 EVM 代码确实支持过程调用。  我知道 PFC 代码是这样。  您可以在此处找到它:

    我相信、它还支持您获取 DATA_REQUEST 以及数据就绪的情况。  这不会在正常运行中发生、但 PMBus 上的某些故障会使某些代码发生。  

    如果您的问题未得到解答、请提供您确切询问的更详细的顺序。  

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

    感谢您的回复!

    您的情况是否如下图所示? 我还想问、在主机发出写命令后、等待从机应答、从机(UCD)响应由硬件自动完成? 然后、主机发出读取请求并等待从机应答。 该应答由从器件自动应答。 (图片中的灰色 A 是否自动从机器上回答?)

        是 TI 官员使用上面显示的指令序列提供的 smbus 工具的读取数据指令吗?我想使用 STM32作为主机与从器件 UCD3138进行通信、因此我想了解这是如何实现的。 感谢您的指导。

    此致。

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

    是的、使用我们的程序的 UCD3138会响应标准 PMBus 消息、而我们的适配器使用标准 PMBus 格式。  我不会将响应描述为自动响应、因为它还涉及程序、而不仅仅涉及硬件。  但是、如果您也对程序进行计数、则可以自动调用它。