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.

[参考译文] TPS65987D:通过 I2C1向 I2C3发送数据

Guru**** 2386610 points
Other Parts Discussed in Thread: TPS65987D, TPS55288, BQ27220, LP55231, BQ51221, DRV2605L
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/interface-group/interface/f/interface-forum/1028695/tps65987d-send-data-to-i2c3-over-i2c1

器件型号:TPS65987D
主题中讨论的其他器件: TPS55288BQ27220LP55231BQ51221DRV2605L

尊敬的团队

主机 MCU 是否可以 通过 I2C1向 I2C3发送数据/命令? (例如通过 I2C1向 SPI 发送数据/命令)

此致、

Majid

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

    您好!

    您是否期望通过某种寄存器配置将 I2C1内部链接到 I2C3?  

    此致、

    Peter

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

    尊敬的 pdjuandi

    感谢您的回答。

    任何可能的方式。

    让我来解释一下。

    在 TPS65987D + TPS55288配置中、主机 MCU (作为主器   件)连接到 TPS65987D 的 I2C1 (作为从器件)、TPS55288 (作为从器件)连接到 TPS65987D 的 I2C3 (作为主器件)。 现在、要读取 TPS55288的"状态寄存器(0x7)"、在 I2C3物理线路上只有一个主器件 (即 TPS65987D)是合乎逻辑的。

    如果可以  通过 TPS65987D 读取 TPS55288的"状态寄存器(0x7)"并以任何方式将数据传递到 MCU、则会很好。

    我可以考虑4种方法:

     TPS65987D 通过 I2C1接收命令、通过  I2C3读取 TPS55288的"状态寄存器(0x7)"、然后通过 I2C1发回数据。

     TPS65987D 通过 I2C1接收命令、通过  I2C3读取 TPS55288的"状态寄存器(0x7)"、然后在内部存储数据、然后 MCU  通过 I2C1读取 TPS65987D 的内部存储数据。

      TPS65987D   通过 I2C3定期读取 TPS55288的"状态寄存器(0x7)"、并通过 I2C1定期向 MUC 发送数据。

      TPS65987D   通过 I2C3定期读取 TPS55288的"状态寄存器(0x7)"并将其内部存储、 MUC 通过 I2C1定期读取内部存储的数据。

    此致、

    Majid

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

    您好、Majid、

    您将需要使用4CC (4个字符代码) I2Cr 命令、如此处所述。

    基本而言 、MCU 通过 PD 控制器的 I2C1发送4CC"I2Cr"命令->此命令会使 PD 控制器通过 I2C3向 TPS55288发送 I2C 读取命令-> MCU 从数据寄存器中的 I2Cr 命令读回数据。

    要执行4CC 命令、首先需要将输入数据发送到数据寄存器(0x9表示 Data1)。 将输入数据发送到数据寄存器后、可将4CC 命令发送到 CMD 寄存器(0x8表示 CMD1)。 因此、在您的情况 下、数据是下表中所述的从器件地址、寄存器地址和字节数、该命令将是 ASCII 的十六进制"I2Cr"、有关详细信息、请参阅随附的 Excel 工作表。

    e2e.ti.com/.../2072.I2Cr_5F00_4CC_5F00_cmd_5F00_example_5F00_987.xlsx

    此致。

    Peter

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

    尊敬的 Peter

    它不工作。

    使用应用程序自定义工具、我 使用以下值从  I2C3地址为0x74 (3A << 1)的 TPS55288的寄存器0x05读取一个字节数据、我希望收到默认值0xE0、但它不起作用:

    字1 (最低有效)           字1 (最低有效)         4cc 命令               4cc 命令

     运行前的数据寄存器(0x9)        运行后的数据寄存器(0x9)         运行前的 CMD1 (0x8)       CMD1 (0x8) -运行后

    0x74050100                       0x74050103                        0x72433249                 0x0

    0x74050101                       0x74050103                     0x72433249                 0x0

    0x74050000                       0x74050003                     0x72433249                 0x0

    0x74050101                       0x74050003                     0x72433249                 0x0

    0x74010005                       0x74010003                     0x72433249                 0x0

    0x74010105                       0x74010103                     0x72433249                 0x0

    0x01000574                       0x01000574                     0x72433249                 0x72433249

    0x00010574                       *未初始化                     0x72433249                 *未初始化

    (*如果是以上行、我必须关闭/打开应用程序自定义工具软件并回收电路板的电源)

    问题1:我是否正确设置了 CMD1和 Data1的值?

    Q2:应用配置寄存器(0x6c)与此相关吗?

    第二种方法:

    I2Cr 命令也不起作用、会导致断开连接:

    所有这些事件发生时、"I2C 控制器事件"运行良好。

    Q3:是否有任何设置允许 I2Cr 命令工作?

    此致、

    Majid

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

    您好、Majid、

    这是 TPS65987DH 还是 TPS65987DJ、是否可以向我发送 pjt 文件?

    如果您使用的是 GUI 调试模式、则需要将其连接。

    您能否在单击"Sweep I2C address..."时读取 I2C 地址 从适配器菜单中选择 Aardvark?

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

    尊敬的 pdjuandi

    问题1:这是 TPS65987DH 还是 TPS65987DJ、您能否向我发送 pjt 文件?

    回答:这是一款 TPS65987DDH 器件。

    Q2:如果您使用的是 GUI 调试模式、则需要将其连接。

    回答:当然 、在调试模式下运行'[I2Cr]- I2C 主设备读取'命令以读取地址0x74处的 I2C3之前、已连接应用程序自定义工具。 按下"Execute I2Cr (执行 I2Cr)"按钮后、它会断开连接。 CMD1和 Data1也是如此。

    Q3:单击"Sweep I2C address..."时、您能读取 I2C 地址吗? 从适配器菜单中选择 Aardvark?

    它是0x23 (下图下文)

    我 的 I2C1上的 TPS65987D 地址为0x46 (0x23 << 1)、 I2C3上的 TPS55288地址为0x74 (0x3A << 1)。

    同样在下图中、我在  寄存器0x64中设置 TPS55288地址、工作正常。

    此致、

    Majid

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

    您好、Majid、

    我看不到您的 pjt 文件、 您能否确认您在寄存器0x27中选中了"I2C3启用为主模式"? 如果您能捕获 I2C 事务并确保收到事务的 ACK、您是否能?

    如果在从 GUI 调试模式中检查"I2C3作为主器件"后读数不正确、 请尝试 使用上述 Excel 工作表中的步骤。

    1. TPS55288地址和寄存器写入 Data1 (0x09)
    2. 将"I2Cr "写入命令寄存器(0x08)
    3. 读取命令寄存器以验证、确保它是0x00
    4. 读取 Data1寄存器以了解其内容。

    此致、

    Peter

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

    尊敬的 Peter

    在我之前的帖子中、我说 地址为0x74的 TPS55288正在工作、这意味着它已在寄存器0x27 (下图下文)中启用。

    为什么你重复 我已经做过的步骤,它不起作用。

    好的、这是我的项目:

    e2e.ti.com/.../TPS65987DDH_5F00_Source_5F00_UFP_5F00_Test_5F00_1.pjt

    首先、该项目正在工作、 TPS65987D 正在  通过 I2C3成功与 TPS55288通信、以对其进行初始化并按照 I2C 控制器事件中的定义将其输出电压设置为5V、9V、15V 和20V。

    我将一个 CRO 连接到定制板上 I2C3的 SDA/SCL 引脚、信号波形 符合预期且干净、因此硬件正常。

    然后我尝试了之前布置的所有步骤、奇怪的是、当我使用 I2Cr 命令时、I2C3引脚上没有信号。

    然后、我想让我们执行 I2Cw 命令(下图):

    它表示成功、但同样、当我使用 I2Cw 命令时、也不会通过 I2C3引脚发送任何内容。

    当然、 TPS65987D 器件的 I2Cr 和 I2Cw 命令并不正确

    (我没有来自总相位的 PD 分析仪)

    ----------------------------------------------------

    我做了另一个实验。

    我执行了以下 I2Cw 命令:

    (从机地址:0x0、长度:0、数据:0x1)

    然后、在 CRO 上的 I2C3引脚上、我可以看到一个字节、即0x00 (下图)

    更多实验:

    如果我发送  (从机地址:0x1、长度:0、数据:0x1)、我将在 CRO 上获得0x2 (位0写入为0)

    如果我发送  (从机地址:0x2、长度:0、数据:0x1)、我将在 CRO 上获得0x4 (位0写入为0)

    等等。

    在这些实验中、如果我将"数据"字段 值设置为0x0、则应用程序自定义隧道会断开连接、而 CRO 上没有数据。

    在这些实验中、'Data'字段应为0x1、否则我在 CRO 上看不到任何内容。

    在这些实验中、"长度"字段的值似乎可以是任何值、但它没有影响。

    发生什么事了?

    我只需要执行以下任务:

    此致、

    Majid

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

    您好、Majid、

    因此、当您首次为电路板加电时、您可以看到 I2C3与 TPS55288进行了交互、但在使用 I2Cx 命令时却没有看到。 这很奇怪。

    您的范围捕获仅显示最后一个交易、因此数据可能会误导您。 如果您可以从写入从器件地址的开始捕获、那么我们就可以看到它是否会使地址发生栈等。。。

    我建议 暂时搁置 GUI 中的 I2Cw 和 I2Cr 方法、并使用 Data1和 CMD 方法。

    如何从系统中执行 Data1和 CMD 命令?

    您是否可以按照 Excel 中的格式操作并捕获全部事务? 我不确定您是如何执行这些命令的、因此这里的顺序可能是错误的。 让我们尝试使用以下方法:

    Data1 (09):0x01057403

    CMD (0x08):0x7243324904

    读回 CMD、确保其为0x00、然后读取 Data1。

    此致、

    Peter

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

    当我将0x01057403放入 Data1时、写入成功:

    当我将0x7243324904放入 CMD1时、写入似乎成功、但我收到异常:

    当我关闭异常窗口时,应用程序自定义工具也会关闭。

    0x444d4321表示'MC!' 或者!CMD、我 在 CRO 的 I2C3引脚上看不到任何信号。

    我正在使用 Application Customization Tool 版本6.1.2、我不确定您正在使用什么!?

    对于这样一个简单的任务,我的时间太长了:((

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

    我做了另一个实验、但在解释之前、我应该提到 I2Cr 命令看起来好像是将从器件地址向左移动一位、但 I2C 主器件配置(寄存器0x64)没有。 因此、为了我的实验、我不使用0x74、而是使用0x3a。

    (重要提示:在您的 Data1 CRO 捕获中、您使用了0x74、而您的 CRO 恰好显示了0x74)

    如果我将0x0105003a 放入 Data1寄存器、则写入操作成功。 (我必须使用四个字节、否则、当我运行 I2Cr 命令时、应用程序自定义工具会断开连接)

    如果我将0x72433249放入 CMD1寄存器、我可以在 I2C3引脚的 CRO 上看到只有 ACK 为0x74的从地址:

    并且 CMD1的值保持为0x72433249。

    当我使用板载 MCU 运行 I2Cr 命令时、我也会获得相同的结果。

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

    您好、Majid、

    在设置中、数据被移位的原因令人奇怪、等等。

    您的最后一次捕捉在0x74上显示 NACK、您的从地址是7位还是8位寻址格式? 请检查。

    我没有可以连接到 I2C3的设置、因此我无法验证 I2C3上的事务、如果您也可以进行检查。

    我在这里附加了我使用的方法、让我们来尝试一下您的设置。

    e2e.ti.com/.../I2Cr_5F00_4CC_5F00_cmd_5F00_example_5F00_987_5F00_majid.xlsx

    此致、

    Peter

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

    你(们)好

    我已经完成了这个。 我 在 最近的项目中暂停使用 TI 的 TPS65987D 和 TPS55288。

    我还需要将此问题上报至下一级别。 我认为问题出在 TPS65987D 芯片内部(您发送给我的文档中的固件、设置或 I2Cr 命令语法错误)。

    我通过 MCU (不带应用程序自定义工具)进行的直接尝试会提供与使用应用程序自定义工具相同的结果。

    如果这个问题不能很快解决、我将取消在我的设计中使用您的芯片。

    P.S.

    我进行了大量的设计和开发来通过 I2C 进行通信;成功地使用 了 LP55231、 BQ51221、 BQ27220、 DRV2605L 等芯 片、甚至通过 I2C 进行的 TPS65987D 通信也可以正常工作。

    问题在于 、 如果我使用 I2Cr/I2Cw 命令、TPS65987D 无法从 I2C1向 I2C3传递数据、而 I2C 控制器事件(I2C3作为主器件启用)工作正常。

    我期待着听取你对这一问题的裁决。

    此致、

    Majid

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

    您好、Majid、

    我理解这种沮丧情绪、我会将其重新分配给经理(Ghouse)。

    我们需要获得完整的 I2C 事务、以便团队进行调试、而不仅仅是事务的一部分、 请使用我提供的数据和 CMD 方法和格式使用 Saleae 逻辑分析仪/数字示波器进行捕获。

    我们将确保我们将实现这一目标、并随时为您提供支持。

    此致、

    Peter

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

    尊敬的 Peter

    我对此表示赞赏。 我在这里捕获的图像:

    1.从 Application Customization Tool 版本6.1.2成功连接到 地址0x23处的定制板 TPS65987D 的 I2C1引脚

     TPS65987D 的器件信息

    3.成功协商电力输送

    I2C3被启用为主机

    I2C3的 I2C 从地址设置为 自定义电路板的 TPS55288的 I2C 引脚、地址0x74为0x3A << 1

    6.我在配置中使用了14个索引,所有这些索引都成功运行。

    7.按照'I2CR_4CC_cmd_example_987_Majid.xlsx'文档中的说明写入 Data1寄存器0x9

    8.此处确认 Data1已成功写入

    9. 按照'I2CR_4CC_cmd_example_987_Majid.xlsx'文档中的说明写入 CMD1寄存器0x8

      9.1、然后按下"Execute Write"按钮

      9.2 在按下"执行写入"按钮后

      9.3在前一步骤9.2之后没有通信

    注:

    一 我的示波器已在定制板 TPS65987D 芯片的 I2C3引脚上设置、用于监控 SDA 和 SCL 引脚。

    二 当写入 Data1寄存器0x9时、 TPS65987D 的 I2C3引脚上没有预期的信号、我的 CRO 上没有信号、这是正确的。

    三 按下'Execute Write'按钮将0x72433249写入 CMD1寄存    器0x8后、TPS65987D 的 I2C3引脚上会出现时钟和数据信号、但遗憾的是任一引脚上都没有信号、这就是问题所在。 此外 、应用程序自定义工具会从 地址0x23处的定制板 TPS65987D 的 I2C1引脚断开连接、并且我必须回收定制板上的电源以使其正常工作。

    四 在步骤1 ~ 9中、很明显、信号通过 I2C1引脚在应用程序自定义工具和 TPS65987D 之间传输、因此我没有提供 CRO 图像。

    V.在  您的'I2CR_4CC_cmd_example_987_Majid.xlsx'文档中、您捕获了 TPS65987D 的 I2C1引脚发出的 CRO 信号、这并不有用、因为问题出在 I2C3引脚而非 I2C1上。

    六 为了进行演 示、以下是我的 CRO 的捕获图像、当我从定制板上拔下 USB-C 电缆时、TPS65987D 通过 I2C3引脚向 TPS55288的寄存器0x00和0x01发送0x00d2、以将电压设置为5V、这是安全的。

       VII. A 记录索引13、 由 TPS65987D 在分离事件时调用:

      即我的 CRO 上的 I2C3信号(抱歉、我的 CRO 没有 USB、但软盘、屏幕宽高比不宽、因此出于可读性原因、我将其分解为两个)

    整个信号:

    开始:

    我对 起始信号的解释:

    结束:

    我对 结束信号的解释:

    七 您可以看到4个字节的数据;0x74 (从器件地址)、0x00 (寄存器地址)、0xD2 (地址0x0的数据)、0x00 (地址0x1的数据)已通过 I2C3引脚成功发送。

    八 我搜索了您的 e2e 论坛、找到了 I2Cw 命令语法。 它有一个位可以指定 I2C1 (零)或 I2C3 (一个);表4-44。 表4-37中的 I2Cr 格式是否是最新的?

    九 如果不使用应用程序自定义工具、而只使用定制板上的板载 MCU、我将面临完全相同 的问题。

    x.我认为 I2Cw 命令语法也是过时的。 没有、表4-44中提到了寄存器偏移的位置、以开始写入。

    结论:

    我对整个问题的理解是、如果 TPS65987D 的固件中既没有错误  、也没有特定设置要求、则 I2Cr 命令的格式(表4-37)不是 TPS65987D 所期望或理解的格式。

    此致、

    Majid

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

    您好、Majid、  

    我们将研究如何清除 I2Cw/I2Cr 文档。 在 Peter 的建议之后、您是否能够解决您的问题?

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

    如何解决此问题? 我跑了很长时间、很累了等这么长时间。

    等待了这么长时间之后、您没有找到芯片问题、而是问我是否解决了问题? 您在那里运行什么类型的客户服务?

    我正在考虑转储您的芯片。

    什么时候可以给我解答?

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

    Majid、

    Peter 复制了您可以写入的确切数据以及您可以预期的数据、他还向电子表格(I2CR_4CC_cmd_example_987_Majid.xlsx)提供了他如何使用该工具的信息。

    您是否可以按照 Excel 中的格式操作并捕获全部事务? 我不确定您是如何执行这些命令的、因此这里的顺序可能是错误的。 让我们尝试使用以下方法:

    Data1 (09):0x01057403

    CMD (0x08):0x7243324904

    读回 CMD、确保其为0x00、然后读取 Data1。

    我在下面看到您的消息、即您进行了 I2C3交易

    [引用 userid="493615" URL"~/support/interface-group/interface/f/interface-forum/1028695/tps65987d-send-data-to-i2c3-over-i2c1/3816847 #3816847]VII 您可以看到4个字节的数据;0x74 (从器件地址)、0x00 (寄存器地址)、0xD2 (数据到地址0x0)、0x00 (数据到地址0x1)已通过 I2C3引脚成功发送。[/QUERPILET]

    您的待处理问题是什么?

    如果我问您的应用是什么、 I2C3主器件的用途主要是 PD 控制器来控制 USB 多路复用器等器件、以便从 I2C 主表进行简单的 I2C 写入。 它不适用于从 I2C1到 I2C3的隧道。 可能会出现冲突、从而导致问题。

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

    您好!

    这一切都与 I2C1到 I2C3的隧道有关。 这个问题的标题是关于 I2C1到 I2C3的隧道、正如我问的:

    问题:"主机 MCU 是否可以 通过 I2C1向 I2C3发送数据/命令? (例如通过 I2C1向 SPI 发送数据/命令)"

    答案是肯定的。 根据下面以黄色突出显示的文本:

    同样、您没有完全阅读我的帖子、只需从上下文中挑选一些内容、然后重复并重复相同的答案。

    上次:通过 I2C1从 MCU 或应用程序自定义工具进行通信是可以的。  为什么要继续在 I2C1上捕获信号!?

    I2C1和 I2C3之间的隧道不起作用。

    I2Cr 和 I2Cw 命令的用途是什么?

    "您的待处理问题现在是什么?"  

    问题是 I2Cr 和 I2Cw 命令、这些命令不执行它们预期的操作。

    您说:"如果我问您的应用是什么。 I2C3主器件的用途主要是 PD 控制器来控制 USB 多路复用器等器件、以便从 I2C 主表进行简单的 I2C 写入。 它不适用于从 I2C1到 I2C3的隧道。 可能会出现冲突、从而导致问题。"

    但是、上图中突出显示的文本恰好相反。 它应该起作用。 我的问题是为什么不呢?

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

    Majid、

    我猜您已经看过这篇文章 (+) TPS65987D:"I2Cr"-接口论坛-接口- TI E2E 支持论坛的文档 ? 在这个示例中、您可以看到 I2Cw 命令工作正常、绅士的 I2Cr 命令有问题。  

    您是否有办法在 Saleae 等逻辑分析仪上捕获您的 I2C3流量? 这可能有助于我了解您面临的问题或是否存在格式错误。

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

    我不知道我们为什么要进入环路。

    在您提到的帖子中、Emma 提供了3个步骤。

    问题出在步骤1之后,即:“1。 您将首先写入 I2Cr CMD"、TPS65987D 变为无响应、我必须重置 TPS65987D (正如我在上一篇文章中所述;步骤9.2)。  步骤2没有意义,即:"2. 然后、您将读取 CMD 寄存器以验证 CMD"

    我相信那位绅士,“埃里克”,就像我那样放弃了。

    底线是 I2Cr 在 TPS65987D 上不起作用、TI 不希望也不感兴趣解决它。

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

    Majid、

    您的评论可能是正确的、这一特定功能未记录在公共 HI TRM 中、原因是它不受广泛支持。 这不是我们可以在 EVM 上验证的东西。 但是、我希望与一些设计专家进行联系、看看我是否可以在这方面找到更多信息。 一旦发现问题、我会随时向您发布。