主题中讨论的其他器件:UCD3138
为什么程序注释说"一个字节、数据就绪、不是 EOM 和/或 PEC_VALID、出于某种原因、不使用数据请求、这意味着读取请求"?
如果主器件发送一个通信来读取 UCD3138 (从模式)、数据请求标志将不会被设置为1? 为什么 PMBus_read_block_handler 使用 if 语句来决定是否 要传输字节?
您能解释一下吗?
此致
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.
为什么程序注释说"一个字节、数据就绪、不是 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 上的某些故障会使某些代码发生。
如果您的问题未得到解答、请提供您确切询问的更详细的顺序。