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.

[参考译文] TMS320F280039C:处理 I2C 协议的 PMBus 行为

Guru**** 2534260 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1557276/tms320f280039c-pmbus-behavior-to-handle-i2c-protocol

器件型号:TMS320F280039C


工具/软件:

我有 2 个问题:

1、CAN PMBus 处理 I2C 协议中的通用广播地址/START 字节/CBUS/10 位寻址?(如图所述)

我使用 I2C(主器件)通过使用 TI 启动板向 PMBus(从器件)发送通用广播 (addr:0000000+W)

I 配置 PMBSC.RX_BYTE_ACK_CNT=3 MAN_CMD=0 MAN_SLAVE_ACK=0。

我发现 PMBus 可以在每个确认位确认、但 PMBRXBUF 和 PMBSTS 剂量没有任何更新、因为 PMBus 不再匹配。

  PMBCTRL.i2cmode 设置为 0 和 1 期间、PMBus 的行为有什么区别? 如果要将 TI PMBus 用作从设备、何时应该配置该位。

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

    我的问题 1 的图如下:

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

    Liu Liu、

    1.如 TRM 中所述、PMBus 有地址和起始位。 我们有 7 位寻址(I2C 模块有 7/10 位寻址模式)。  

    2.启用此位可 在操作方面实现 I2C 兼容性(例如,PMBus 基于命令、而 I2C 模式下的 PMBus 可以基于数据帧,本质上更简单)、并适用于大多数器件的标准。 并非所有 I2C 特性(如 CBUS 功能)都可以在 PMBus 模块上找到。 该位仅与 I2C 模式相关。 对于控制器 和目标模式、您可以相应地设置 PMBCCR 和 PMBTCR。  

          根据 I2C 规范、BTW CBUS 仅在标准模式下兼容。

    此致、

    Aishwarya

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

    您是指 TRM 的 PMBus 部分中提到了起始字节? 您能告诉我这个器件在哪里吗?  

    2.我做了一般调用和起始字节的测试。   我使用 I2C(主器件)通过使用 TI 启动板将通用广播 (addr:0000000+W)/Start Byte (addr:0000000+R) 发送到 PMBus(从器件)

    I CONFIG PMBSC.RX_BYTE_ACK_CNT=3 MAN_CMD=0 MAN_SLAVE_ACK=0 SLAVE_ADDR=0x3C。

    A.通用呼叫  

    我发现 PMBus 可以在每个确认位进行确认、但 PMBRXBUF 和 PMBSTS 没有进行任何更新、因为 PMBus 不再匹配。

    这意味着什么? PMBus 是否可以处理通用广播?

    b.起始字节

    PMBus 不确认确认确认  位、并且 PMBSHA 不再更新。 就像从不匹配一样。

    --你说 PMBus 在上一次答复中有起始字节。  我的测试结果似乎与您的答案不一致?

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

    Liu Liu、

    让我来 看看这件事、明天再回来。

    此致、

    Aishwarya

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

    Liu Liu、

    1.您是指 TRM 中提到的 PMBus 部分起始字节? 您能告诉我这个器件在哪里吗?  [/报价]

    你是对的、我们有一个开始  不是字节。  

    [引述 userid=“515473" url="“ url="~“~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1557276/tms320f280039c-pmbus-behavior-to-handle-i2c-protocol/5994405

    2.我做了一般调用和起始字节的测试。   我使用 I2C(主器件)通过使用 TI 启动板将通用广播 (addr:0000000+W)/Start Byte (addr:0000000+R) 发送到 PMBus(从器件)

    I CONFIG PMBSC.RX_BYTE_ACK_CNT=3 MAN_CMD=0 MAN_SLAVE_ACK=0 SLAVE_ADDR=0x3C。

    A.通用呼叫  

    我发现 PMBus 可以在每个确认位进行确认、但 PMBRXBUF 和 PMBSTS 没有进行任何更新、因为 PMBus 不再匹配。

    这意味着什么? PMBus 是否可以处理通用广播?

    [/报价]

    您是否可以尝试将 MAN_SLAVE_ACK 设置为 1 并发送数据字节(而非通用广播)、看看是否有效?

    [引述 userid=“515473" url="“ url="~“~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1557276/tms320f280039c-pmbus-behavior-to-handle-i2c-protocol/5994405

    b.起始字节

    PMBus 不确认确认确认  位、并且 PMBSHA 不再更新。 就像从不匹配一样。

    --你说 PMBus 在上一次答复中有起始字节。  我的测试结果似乎与您的答案不一致?

    [/报价]

    我更新了上一个答案、这里没有起始字节、只是  。  

    此致、

    Aishwarya

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引述 userid=“573843" url="“ url="~“~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1557276/tms320f280039c-pmbus-behavior-to-handle-i2c-protocol/5998179

    A.通用呼叫  

    我发现 PMBus 可以在每个确认位进行确认、但 PMBRXBUF 和 PMBSTS 没有进行任何更新、因为 PMBus 不再匹配。

    这意味着什么? PMBus 是否可以处理通用广播?

    [/报价]

    我想知道 PMBus 响应一般调用的行为是 280039C 预期中的一个特性?  如果是、是否可以认为 PMBus 无法处理通用广播地址?

    ]您是否可以尝试将 MAN_SLAVE_ACK 设置为 1 并发送一个数据字节而不是常规调用、查看其是否有效?

    在寻址阶段、我使用 I2C 作为主器件发送 addr (0x3C) 和 WR (0)。 I2C SCL 频率为 100K。

    PMBus 作为从器件、具有 0x3C 从器件地址。

    我进行了两项测试:

    使用 自动地址确认模式 MAN_SLAVE_ACK =0。 如图所示:

    a. PMBus 可以在寻址阶段发送确认

    b. PMBHSA=0x78 (addr:0x3C、r/w:0x0)、这符合我的预期。

    使用 手动 地址确认模式 MAN_SLAVE_ACK =1。

    a. I2C 发送相同的 addr 和 r/w、带有 自动 地址确认模式测试 (addr:0x3C、r/w:0x0)

    b.当 PMBSTS.SLAVE_ADDR_READY =1 时。 PMBHA.SLAVE_ADDR  不等于 我的代码中的 PMBSC.SLAVE_ADDR、PMBus 不符合预期、PMBHSA= 0x3C (addr:0x1E、r/w:0x0)、这一点不符合预期、如果 PMBHSA.SLAVE_ADDR 不等于 PMBSC.SLAVE_ADDR。

    为什么 PMBHSA 在 手动 地址确认模式下不正确?

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

    是否有更新?

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

    Liu Liu、

    I2C 和 PMBus 应支持通用广播。

    按照最新的屏幕截图、您未在 I2C 模式下运行。 您能否确认是否要处于 I2C 模式或 PMBus 模式? 如果是、我前面提到的这些问题可以在 I2C 模式下尝试吗?  

    此致、

    Aishwarya  

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

    我已经尝试了 I2C 模式下的测试。  测试结果与使用 PMBus 模式没有区别。  

    a.通用广播 (MAN_SLAVE_ACK =0)

    我发现 PMBus 可以在每个确认位进行确认、但 PMBRXBUF 和 PMBSTS 没有进行任何更新、因为 PMBus 不再匹配。

    问题: 测试结果与您描述的 I2C 和 PMBus 应支持通用广播不匹配

    b.设置 MAN_SLAVE_ACK=0、MAN_SLAVE_ACK=1 和 I2C_MODE=1。  测试结果与 SET I2C_MODE=0 一致。

    问题:如何确定地址在手动地址确认模式下是否匹配?

    [引述 userid=“515473" url="“ url="~“~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1557276/tms320f280039c-pmbus-behavior-to-handle-i2c-protocol/5998746

    在寻址阶段、我使用 I2C 作为主器件发送 addr (0x3C) 和 WR (0)。 I2C SCL 频率为 100K。

    PMBus 作为从器件、具有 0x3C 从器件地址。

    我进行了两项测试:

    使用 自动地址确认模式 MAN_SLAVE_ACK =0。 如图所示:

    a. PMBus 可以在寻址阶段发送确认

    b. PMBHSA=0x78 (addr:0x3C、r/w:0x0)、这符合我的预期。

    使用 手动 地址确认模式 MAN_SLAVE_ACK =1。

    a. I2C 发送相同的 addr 和 r/w、带有 自动 地址确认模式测试 (addr:0x3C、r/w:0x0)

    b.当 PMBSTS.SLAVE_ADDR_READY =1 时。 PMBHA.SLAVE_ADDR  不等于 我的代码中的 PMBSC.SLAVE_ADDR、PMBus 不符合预期、PMBHSA= 0x3C (addr:0x1E、r/w:0x0)、这一点不符合预期、如果 PMBHSA.SLAVE_ADDR 不等于 PMBSC.SLAVE_ADDR。

    为什么 PMBHSA 在 手动 地址确认模式下不正确?

    [/报价]

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

    是否有更新?

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

    Liu Liu、

    由于我结束了假期、延误了我们的时间、对此深表歉意 感谢您提供这些详细信息。

    常规调用和其他调用是 I2C/PMBus 的保留地址。 写入该地址用于对连接到 I2C 总线的所有器件进行寻址。 您能否根据 https://www.ti.com/lit/an/sbaa565/sbaa565.pdf?中的屏幕截图确认发送了哪些数据(在开始位+通用呼叫+ ACK 之后) ts = 1756816759317&ref_url=https%253A%252F%252Fwww.google.com%252F?根据您对 ACK 过程的描述、确认工作正常。  

    我将与设计专家核实我们的 PMBus 模块是否可以支持通用呼叫、但我的理解是他们可以支持。 我还将检查 PMBRXBUF 和 PMBSTS 是否需要匹配、因为它们不一定是特定于 I2C 的寄存器。

    此外、 您能否分享 MAN ACK 代码/配置以供进一步分析?  
    此致、

    Aishwarya  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    常规调用和其他调用都是 I2C/PMBus 的保留地址。 写入该地址用于对连接到 I2C 总线的所有器件进行寻址。 您能否根据 https://www.ti.com/lit/an/sbaa565/sbaa565.pdf?中的屏幕截图确认发送了哪些数据(在开始位+通用呼叫+ ACK 之后) ts = 1756816759317&ref_url=https%253A%252F%252Fwww.google.com%252F?根据您对 ACK 过程的描述、确认工作正常。  [/报价]

    我可以合并常规调用的帧格式。

    此外、 您能否分享 man ACK 代码/配置以进行进一步分析?  [/报价]

    下面是我的代码。 PMBHSA 不是我的预期值。  

    [引述 userid=“515473" url="“ url="~“~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1557276/tms320f280039c-pmbus-behavior-to-handle-i2c-protocol/6003037

    使用 手动 地址确认模式 MAN_SLAVE_ACK =1。

    a. I2C 发送相同的 addr 和 r/w、带有 自动 地址确认模式测试 (addr:0x3C、r/w:0x0)

    b.当 PMBSTS.SLAVE_ADDR_READY =1 时。 PMBHA.SLAVE_ADDR  不等于 我的代码中的 PMBSC.SLAVE_ADDR、PMBus 不符合预期、PMBHSA= 0x3C (addr:0x1E、r/w:0x0)、这一点不符合预期、如果 PMBHSA.SLAVE_ADDR 不等于 PMBSC.SLAVE_ADDR。

    为什么 PMBHSA 在 手动 地址确认模式下不正确?

    [/报价]

        uint16_t iii;
        uint16_t hsa1;
        HWREG(PMBUSA_BASE + 0x10) =  0x5200000;//CLK_DIV=0xA,SLV_EN=1
        //HWREG(PMBUSA_BASE + 0x10) =  0x85200000;//I2CMODE=1,CLK_DIV=0xA,SLV_EN=1
        HWREG(PMBUSA_BASE + 0xc) =  0x617F3C;//SLVADDR=0x3C,tx_count=1
        while((HWREG(PMBUSA_BASE + 0x8)&0x400)!=0x400) //waiting SLAVE_ADDR_READY=1
                   {
                      h=0;
                   }
           h++;
           hsa1 = HWREG(PMBUSA_BASE + 0xe); //read PMBHSA after SLAVE_ADDR_READY=1
        uint16_t iii;
        uint16_t hsa1;

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

    Liu Liu、

    感谢您的分享。 我将与设计团队进一步讨论此问题、并尽快回复您。 这是我用于手动 ACK 的配置。

    此致、

    Aishwarya

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

    在手动确认地址的模式下,你得到了与我?同样的结果

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

    Liu Liu、

    我看到地址设置正确且匹配。 请给我一些时间与设计团队合作。 我们将在下周初为您提供最新信息。

    此致、

    Aishwarya

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我将与设计专家联系、了解我们的 PMBus 模块是否可以支持常规调用、但我的理解是他们可以支持。 我还将检查 PMBRXBUF 和 PMBSTS 是否需要匹配、因为它们不一定是特定于 I2C 的寄存器。

    在这个问题上是否有任何进展?

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

    Liu Liu、

    感谢您迅速办理入住手续。 不幸的是、我还没有听到他们的反馈。 可能需要一周的时间才能得到答复。 我还将在本周剩余时间内离职。  

    我还看到您已经两次提出了相同的问题(在本主题和这里) 。 请仅为每个问题创建一个主题、因为这与我们最后的工作重复 我请求您关闭其中一个线程、我们可以在其中一个线程上为您提供支持。  

    此致、

    Aishwarya

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

    好的、希望大家能继续跟进这个问题。 此外,如何关闭另一个帖子?

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

    Liu Liu、

    是的、可以。 我 将与我的同事合作、关闭另一个主题。 请预计我将在下周最早收到回复。 谢谢你。

    此致、

    Aishwarya

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

    是否有更新?

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

    Liu Liu、

    我再也没有听到团队的反馈。 此时、我 建议测试 配置场景并选择更适合您的应用的配置、因为 我们似乎 没有相关文档。

    此致、

    Aishwarya