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.

[参考译文] TPS546D24SEVM-2PH:PMBus 读取/写入问题

Guru**** 2526700 points
Other Parts Discussed in Thread: TPS546D24SEVM-2PH, TPS546D24S

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

https://e2e.ti.com/support/power-management-group/power-management/f/power-management-forum/1437585/tps546d24sevm-2ph-pmbus-read-write-issue

器件型号:TPS546D24SEVM-2PH
主题中讨论的其他器件: TPS546D24S

工具与软件:

您好,我们将使用 FT2232的 IIC 和 TPS546D24SEVM-2PH 通过  PMBus 验证电压调节。 已根据手册将 TPS546D24SEVM-2PH 修改为单相模式。 验证过程中出现以下问题。

当 PMBus 读取时、我们发送 ADDR|W、CMD、然后发送 SR、ADDR|R 目前、TPS546D24S 没有 ACK。

2.当 PMBus 写入时、发送 CMD 后只能写入一个字节。 写入第二个字节时没有 ACK。 以0x21为例、写入1个字节后、输出电压不变。

并且某些 CMD 无法写入。

这可能是什么原因呢?

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

    您好、Fred:

    在修改 TPS546D24SEVM-2PH 上的 PMBus 以进行单相操作之前、您是否能够通过它进行写入和读取? 如果是、您是否更改了任何配置并将其存储在 NVM 中?

    谢谢!
    Tomoya

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

    您好、Fred:

    我想补充一点。 TPS546D24S 在 PMBus 通信期间使用时钟延展。 请确认 FT2232的 I2C 已设置为允许时钟延展。 否则、可能会导致 NACK 响应。 另外、您能否向我发送数据和 CLK 波形?

    谢谢!
    Tomoya

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

     我已根据 TPS546D24SEVM-2PH 用户指南4.5修改 TPS546D24SEVM-2PH 进行单相运行、且不更改任何其他配置。

    IIC 以100KHz 读取、在发送 addr|r、接收否定确认后。

    IIC 以100KHz 写入,发送第二个 数据后,时钟不能驱动到高电平,可能是由时钟 拉伸引起的 。 然后将 IIC 时钟设置为10kHz、时钟可以驱动为高电平、但仍会接收 NACK。

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

     

    我叫 Peter Miller、是 Tomoya IDE 的应用工程师。  他问我要帮助。

    您尝试写入什么值?

    这些波形看起来像是您尝试发送0xFF 0xFF 以命令地址0x24上的代码0x21

    电压为128V、远高于 TPS546D24S 的有效 VOUT_COMMAND 范围。  此部件为 NACK 命令、因为数据无效。

    尝试按该顺序发送字节0x00 0x02。  这将是字值0x0200和电压1V。

    TPS546D24S 对以地址+ Rd 开头的事务进行 Nacking 是其 PMBus 接口的已知错误、但这是无效的 PMBus 事务。

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

    我尝试将0x0200或0x0001写入0x21、但它仍然返回 NACK。

    那么、是否有其他方法可以实现读取操作?

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

     

    那么还有其他方法可以实施读取操作吗?

    PMBus 使用 SMBus 事务类型。  VOUT_COMMAND (命令代码0x21)使用构造如下的读取字事务:

    启动/器件地址+ WR /A/命令代码/A/重复启动/器件地址+ Rd /A/低字节/A/高字节/A/ PEC (可选)/A/停止

    在您的第一条消息中指出您使用的是正确的事务构造并从 Address + WR 而不是 Address + Rd 开始后、我再次回顾了您的读取尝试波形、我注意到事务中的最后一个字节是001 0010 0、即地址0x12 + WR 而非地址0x24 + Rd  与字节相关的时钟脉冲似乎也为10个、而不是9个(8位+ ACK/NACK)。  此外、第一个 CLK 看起来比其他 ACK 窄。

    传输中的第一个时钟脉冲可能不会被预期、导致接收到错误的地址字节、从而导致 NACK。

    我尝试将0x0200或0x0001写入0x21、但仍然返回 NACK。

    如果您可以修复读取事务、您是否可以使用 SMBus 事务类型读取字节(构造如上所示、但只有1个字节的数据)读取命令代码0x10 (WRITE_PROTECT)、并检查 WRITE_PROTECT 是否设置为0x00或是否设置为某个其他值?  如果设置了写保护、则会导致 VOUT_COMMAND 否定确认任何写尝试。

    如果您可以读取0x10并且它返回0x00以外的值、请将0x00写入命令代码0x10以清除写保护。

    否则、您能否将写入尝试的波形与数据0x00、0x02和0x00、0x01共享?

    您是否有 TI 的 USB-TO-GPIO 适配器和 Fusion Digital Power 设计器?  您是否尝试过通过融合和 USB-TO-GPIO 适配器与 EVM 通信?

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

    我无法读取0x10、在 addr+rd 时仍返回 NACK  我缩小最后一个块波形、第一个是 SR、继续使用 addr+rd、然后是 NACK。

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

     

    我将对此进行介绍。  同时:

    CLK 下降沿和 DAT 转换沿的时序是多少?  在上面的波形中、没有出现任何延迟、但这可能是图像分辨率问题。

    您是否有 USB-TO-GPIO 适配器和融合、以便我们可以确认 IC 本身是否正常工作?

    在哪里监控 CLK 和 DAT 线路?

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

     

    您提供的波形是不常见的、因为我们通常在第二个数据字节的位0和 TPS546D24S 的 ACK/NACK 决策之间看到20 30μs 的时钟延展。  在这种情况下、我们会看到在位0的 CLK 下降沿和 ACK 的 CLK 上升沿之间只有5μs。

    这会表明 TPS546D24S 没有遵循事务、因此我询问在何处监控信号以及 CLK 下降沿和 DAT 上升沿的时序。

    与 I2C 类似、SMBus 需要生成 CLK 和 DAT 的控制器、以确保 DAT 在 CLK 降至0.8V 以下之前不会超过转换阈值(上升至0.8V 以上或下降至1.35V 以下)。  如果允许 DAT 在 CLK 转换之前转换、则可以将其接收为开始或停止条件、并中断事务。   

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

    我在 TP7和 TP10处监控 CLK 和 DAT 线路。 我没有 USB-TO-GPIO 适配器、它在运送途中。

    我 同时放大波形、CLK 下降沿和 DAT 转换边沿。

    我在 I2C 以100KHz 写入时看到的时钟延展、当发送第二个数据字节时、时钟延展将驱动 CLK 至低电平、然后我将频率调整到10kHz 以避免 时钟延展、CLK 可以由控制器驱动、但仍会接收 NACK。  上面显示了波形。

    当频率为100KHz 时、I2C 读取不会出现时钟延展。

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

    当处于 SR 模式时、我首先将 SDA 拉至高电平、然后将 CLK 拉至高电平、以便我可以正确读取和写入。

    感谢您的帮助。

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

     

    太好了、我很高兴听到这个消息。

    I2C/SMBus 不允许 CLK 和 DAT 同时变化。  虽然两者都指定了0ns "数据设置时间"、但两种规格中都需要注意、驱动 DAT 的器件负责确保 DAT 在 CLK 降至 Vin_low 电压以下之前不会转换。

    这通常不是目标器件的问题、目标器件会响应 CLK 上的下降沿并且具有一些额外的启动延迟、但控制器需要在 CLK 和 DAT 之间提供足够的延迟、以确保在 DAT 上升到0.65V (0.8V - 150mV)以上或下降到1.5V (1.35 + 150mV)以下之前 CLK 下降到低于输入低值(SMBus 3x0中为0.65V)  

    如果此操作已解决您的问题、请单击"此操作已解决我的问题"