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.

[参考译文] TPS65988DJEVM:TPS65988的 I2C 通信

Guru**** 2581345 points
Other Parts Discussed in Thread: TPS65988

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

https://e2e.ti.com/support/power-management-group/power-management/f/power-management-forum/1460678/tps65988djevm-i2c-communication-for-tps65988

器件型号:TPS65988DJEVM
主题中讨论的其他器件:TPS65988TPS65987

工具与软件:

您好、TI 论坛。

我一直在努力解决这个问题一段时间,但没有成功。

我想使用通过 I2C 引脚连接到 TPS65988评估板的 Arduino Uno、用于两个目的:

  • 其中 Arduino 将作为外部存储器并等待 TPS 在启动时请求数据的一个场景
  • Arduino 会主动尝试将配置数据写入 TPS65988寄存器的一个场景

很遗憾、我遇到了几个问题:

  • 尝试写入寄存器不会导致寄存器数据在回读时发生变化
  • 我已尝试了解4CC 的使用、但在这方面没有取得任何重大成果
  • 使用自定义工具时、我似乎无法将我的配置导出到器件 RAM、请参阅下图以了解如何与 Tiva 配合使用。 请注意、这是在从系统中删除 Arduino 的情况下尝试的、以避免任何可能的干扰。

这是尽管当我使用适配器设置,一切似乎都好. 下面是适配器设置的图片和我在 Arduino Uno 上运行的当前代码所读出的内容的图片。

希望您能帮我解决这个问题。

提前感谢、

此致
胜利

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

    对此进行了更新、似乎我用于通过 I2C 写入寄存器值的 Arduino 代码运行更好、但我写入 TPS65988的数据与 TPS65988设置的配置不匹配、当我通过 GUI 读取器件设置时(我仍无法在 GUI 中导出设置、但似乎可以提取数据)。
    我在此附上我的代码供参考。

    e2e.ti.com/.../main.cppe2e.ti.com/.../TPS_5F00_config.h

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

    您好、Victor:

    我看不到您如何使用补丁捆绑包更新任务来更新内存。  请参阅以下文档:

    /cfs-file/__key/communityserver-discussions-components-files/196/SPI_5F00_Less_5F00_EC_5F00_Based_5F00_Host_5F00_Programming_5F00_Over_5F00_I2C_5F00_slva972a.pdf

    https://www.ti.com/lit/ug/slvubh2b/slvubh2b.pdf

    https://www.ti.com/lit/an/slvae21a/slvae21a.pdf

    此致、

    Chris

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

    非常感谢、我不了解"TPS65987和 TPS65988减少 I2C 上的 SPI 主机编程"文档、这对我有很大帮助。 不过、我想知道主命令/数据接口与辅助命令/数据接口之间的区别是什么? 它们是可以互换使用还是专用于某些命令和数据?

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

    您好!

    I2C1和 I2C2可以互换使用。  I2C1可配置为控制器。

    https://www.ti.com/lit/ds/symlink/tps65988.pdf#page=38

    此致、

    Chris

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

    你好、Chris。

    如果你有时间审查我的代码,看看是否有什么我遗漏我将非常感谢,因为它是我的最终大师项目的一部分:)。 在我看来、我尝试将代码加载到数据寄存器时出现了问题、但我不知道出现了什么问题。 如何将寄存器视为小端字节序是有问题吗?

    提前感谢。

    此致、
    胜利

    e2e.ti.com/.../config_5F00_image.he2e.ti.com/.../7534.TPS_5F00_config.he2e.ti.com/.../7534.main.cpp

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

    现在、我们多看一段上下文、以了解无法运行代码的位置。
    首先、内存问题导致了数据寄存器问题、该问题现在应该得到解决。 但是、在我看来、我的代码似乎没有预期的效果。

    根据我对4CC 流程的理解、如果评估板处于"APP"模式(在我上电时)、我无法通过 I2C 发送新的配置文件、因为它需要处于"PTCH"模式才能执行此操作。
    我首先发送 PTCr 命令来重置补丁固件、我在此处写入数据寄存器

    然后、我尝试读取寄存器0x03、该寄存器返回"APP"、我应该在其中预期"PTCH"。

    然后该代码继续并尝试启动 PTC、尝试执行100次、中间延迟5ms。 由于 IC 似乎没有处于正确的模式、因此这自然会失败。

    我是否有办法进行进一步的调试检查、或者这是否与在发送命令之前将数据上传到 DataX 寄存器有关?
    已修改代码、并随附已解决的内存问题。
    e2e.ti.com/.../6663.main.cppe2e.ti.com/.../0486.config_5F00_image.h

    提前感谢。

    此致、
    胜利

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

    您好!

    我需要一些时间来回顾代码、但会在一周结束前尝试结束。  这会及时实现吗?

    Chris

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

    您好、Chris、听起来很棒、我非常感谢您的帮助。

    胜利

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    克里斯、您好、听起来很棒、我非常感谢您的帮助。

    好的。  使用。

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

    您好!

    [报价 userid="631357" url="~/support/power-management-group/power-management/f/power-management-forum/1460678/tps65988djevm-i2c-communication-for-tps65988/5607831 #5607831"]首先、我要发送 PTCr 命令来重置补丁固件、并在此处写入数据寄存器

    我认为是正确的: AppConfigReset (1)、 DevicePatchReset (1)、DevicePatchResetKe  (0xBE)和  AppConfigResetKey (0xEF) 。  请参阅器件 TRM 以及此示例:

    https://e2e.ti.com/support/power-management-group/power-management/f/power-management-forum/1177970/tps65988-problems-with-applying-patch-bundle-i2c-spi-less

    然后尝试读取寄存器0x03、该寄存器返回"app"、其中我应该得到"PTCH"。

    使用相应的输出确认4CC 命令的操作。   

    请查看随附的:

    /cfs-file/__key/communityserver-discussions-components-files/196/main_5F00_comments.cpp

    [报价 userid="631357" url="~/support/power-management-group/power-management/f/power-management-forum/1460678/tps65988djevm-i2c-communication-for-tps65988/5606728 #5606728"]"TPS65987和 TPS65988减少了通过 I2C 进行主机编程"文档、

    请参阅第3.1.3节示例代码以及如何使用补丁就绪中断以及4CC 命令输出数据来确认操作。

    此致、
    Chris

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

    你好、Chris

    感谢您的支持。
    不幸的是,我仍然面临着问题。 我不知道此问题是否与我的原始问题有关、但这仍然是一个问题、但在我看来、当我检查串行显示器时、回读时的第一个字节不正确、请参阅随附的图片。 由于我一直读回不正确的数据、是否缺少时序要求(在许多情况下似乎是04)?

    我已更改的内容:
    重复的行来自等待 ReadyForPatch 的 while 循环。
    我在数据寄存器写入中添加了复位密钥
    根据另一主题的建议、我使用了最小的标头。

    我已附上经过编辑的代码。

    提前感谢。

    此致、
    胜利

    e2e.ti.com/.../3113.main.cppe2e.ti.com/.../min_5F00_header.h

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

    您好!  

    TI 美国今天就在假日。 请预计会有一些回复延迟。  

    此致、  

    Aya Khedr  

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

    您好、Victor:

    第一个字节通常是寄存器的大小、读回5个字节、字节0是大小、字节1-4是有效载荷。   

    此致、
    Chris