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.

[参考译文] TPS25751EVM:在固件刷写之后从寄存器读取到意外数据

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

https://e2e.ti.com/support/power-management-group/power-management/f/power-management-forum/1388837/tps25751evm-unexpected-data-read-from-registers-after-firmware-flash

器件型号:TPS25751EVM
主题中讨论的其他器件:TPS25751

工具与软件:

您好!

我正在尝试 在刷写固件后立即从 TPS25751中的一些寄存器中读取数据、但我没有看到预期的数据、或者它以 奇怪的方式出现。
我有一个通过 I2C 从 TPS25751 (目标/从器件)获取的 Raspberry Pi Pico H (控制器/主器件)读数。

例如、当我尝试读取时 0x33 (发送受电能力)、即使我在应用程序自定义工具 GUI 中设置了3个 PDO、也没有 PDO。 我根据数据表解析了如下所示的各个位。

我认为这可能是刷写器件时出现的问题、但我能够读取我设置的字 0x6 (客户使用寄存器)。 下面的十六进制值转换为 ASCII " 功率 "。  


奇怪的是,字符似乎是反向顺序。  


(注意:readReg (0x6、9) 存储从寄存器地址0x6发出的通过总线的9个字节)

为了正确刷写固件配置、我需要执行什么具体操作吗? 或者、我是否还缺少其他问题?
如果有任何建议、我将不胜感激。

谢谢  

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

    您好、Abigail:

    刷写器件是什么意思? 您要遵循什么流程? 您能描述您遵循的流程吗?

    您是使用 I2C 闪存还是通过 I2C 加载配置?

    请共享用于 GUI 的.json 文件。  

    您能否检查 Boot Flags 寄存器(0x2D)并报告:

    • 补丁标头错误
    • I2C EEPROM 存在
    • 补丁配置源

    谢谢。此致、

    Chris

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

    此外、您是否正在使用 EVM 或它是否与定制硬件配合使用?

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

    克里斯托弗、您好!

    感谢您的答复。
    我使用的是 TPS25751EVM。

    至于 将固件刷写到器件上、我将使用本地安装的应用程序自定义工具(并非 浏览器中运行的版本)进行配置。 我使用接入 J4数据端口的 USB-A 转 C 电缆、按照数据表中所述的过程进行操作。 下面是我参考的图。  

    这是 JSON 代码。 我不知道如何附加实际文件,对不起。 我希望这种格式 可以接受。

    {
      "questionnaire": {
        "device": "TPS25751",
        "answers": [
          null,
          5,
          4,
          4,
          1,
          3,
          1,
          0,
          1,
          1,
          1,
          null,
          0,
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "vendorId": "0000",
        "productId": "0000",
        "version": "1.0.0.2"
      },
      "configuration": {
        "data": {
          "selected_ace": [
            {
              "register": 6,
              "data": [
                114,
                119,
                111,
                112,
                0,
                0,
                0,
                0
              ]
            },
            {
              "register": 22,
              "data": [
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                3
              ]
            },
            {
              "register": 40,
              "data": [
                0,
                72,
                47,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0
              ]
            },
            {
              "register": 41,
              "data": [
                50,
                192,
                145,
                3
              ]
            },
            {
              "register": 50,
              "data": [
                0,
                168,
                42,
                44,
                145,
                1,
                36,
                44,
                209,
                2,
                0,
                44,
                177,
                4,
                0,
                244,
                65,
                6,
                0,
                244,
                65,
                6,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0
              ]
            },
            {
              "register": 51,
              "data": [
                3,
                44,
                145,
                1,
                16,
                100,
                33,
                220,
                192,
                44,
                177,
                4,
                0,
                244,
                65,
                6,
                0,
                69,
                65,
                6,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0
              ]
            },
            {
              "register": 55,
              "data": [
                62,
                64,
                31,
                65,
                144,
                145,
                1,
                0,
                1,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0
              ]
            },
            {
              "register": 92,
              "data": [
                13,
                12,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                4,
                0,
                0,
                0,
                4,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                4,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0
              ]
            },
            {
              "register": 112,
              "data": [
                3
              ]
            },
            {
              "register": 152,
              "data": [
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0
              ]
            }
          ]
        }
      }
    }

    这些是通过 I2C 读取并转换为各个位的0x2D 内容。

    • 补丁标头错误= 1
    • I2C EEPROM 存在= 0  
    • 补丁配置源= 0

    如果您需要更多信息、请告诉我。

    谢谢!
    ABI

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

    我意识到0x2D 内容的表中不包括前导零。 对错误道歉。 我编辑了我的最后一个回复、以包含带前导零的表格。

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

    您好、Abigail:

    当您说"刷写固件"时、您是指"Flash to device from current configuration"选项? GUI 中是否看到任何错误消息?

    如果您使用 I2C EEPROM、您能否仔细检查 J16跳线是否已填充、以及在电路板通电时 I2Cm 线是否拉至3.3? 启动时、您能否检查 I2Cm 线路以查看这些线路上是否有任何活动? 0x50 (EEPROM)地址处应该有一个器件。

    根据您共享的信息、未加载任何配置(补丁配置源)、PD 控制器甚至看不到 I2C EEPROM。

    还应注意、一旦刷写 EEPROM、您将需要对 PD 控制器进行下电上电、因为它仅在启动时加载 EEPROM 映像。

    谢谢。此致、

    Chris

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

    我正在使用"从当前配置闪存到器件"。 我在 GUI 中没有看到任何错误消息、它告诉我刷写已完成。 我不使用 I2C EEPROM。

    谢谢

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

    您好、Abigail:

    "从当前配置刷写到器件"实际上是直接通过 I2C 对 I2C EEPROM 进行编程。 不会直接将映像编程到 PD 控制器。 该 EVM 主要仅与 I2C EEPROM 配合使用、默认情况下无法从 I2C EC/主机加载固件。 预期行为是、您使用"Flash to device from current configuration"更新 EEPROM、然后您需要对 EVM 下电上电、以便 PD 控制器可以从新更新的 EEPROM 重新加载其配置。

    对于初始测试、我强烈建议您保留 EEPROM。 如上所述、应组装 J16跳线、初始上电时、您应该会看到 I2C 流量寻址到 I2Cc 总线上的0x50地址中。

    谢谢。此致、

    Chris

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

    Christopher、您好!

    我明白了。 应如何对 EVM 进行下电上电? 刷写设备几秒钟后、我已断开并重新连接电源。 我还尝试向命令发出'GAID'命令、但未看到任何更改。 此外、J16跳线仍安装在电路板上。

    谢谢!
    ABI

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

    您好、Abigail:

    刷写器件后、应该足以断开并重新连接电源。

    您的评论是什么意思? EEPROM 是否已移除、或者您是否意识到正在进行开发?

    我没有使用 I2C EEPROM。

    如果您正在使用 EVM、则可以仅使用默认 EVM 工程重试、并且仅添加和删除  修复了受电方 PDO? 我建议使用默认工程进行测试、并添加和删除单个固定 PDO、您的问题可能与接收端 PDO 格式相关。

    您在高级配置中对 json 进行了哪些更改? 我看到增加了缴费灵合约、缴费灵合约应该是受助人能力的最后一个合约、登记册、固定合约应该放在较早的缴费灵。

    谢谢。此致、

    Chris

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

    Christopher、您好!

    我没意识到自己在使用 EEPROM。 我错误地认为 使用外部 EEPROM 是另一种方法。 另外、感谢您介绍 PDO 订单。 我不知道 PPS 合约应该是最后的。 这些信息的来源是什么?

    另外、我 发现我 只是 错误地从器件读取了数据。  我没有意识到 TPS25751首先通过 I2C 发送数据字节1 (包含位0)、最后发送字节 n。 按数据的正确顺序排列字节后、数据符合预期。

    感谢您在此问题上提供的所有帮助!

    谢谢!

    ABI
     

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

    您好、Abigail:

    是的、不用担心! PD 控制器需要在启动时从外部存储器位置加载固件映像。 它将(1)检查 EEPROM 并从此处加载映像、或(2)等待 I2C 主机发送固件映像。 此固件映像包含补丁(错误修复、新功能)以及 App Config (GUI 中的自定义配置、考虑设置电源角色和支持的 PDO)。 加载内容非常重要。

    实施和使用 EEPROM 选项通常要容易得多、因为选项2需要一些 MCU 代码开发、而只需连接 EEPROM 并使用 GUI 生成的固件映像进行刷写。

    我不知道 PPS 合同应该是最后一个合同。 此信息的来源是什么?

    该屏幕截图来自 USB-C PD 规范(可在 USB-IF 网页的"文档"部分中找到)。

    此外、我 发现我 只是 从设备错误地读取了数据。  我没有意识到 TPS25751首先通过 I2C 发送数据字节1 (包含位0)、最后发送字节 n。 按正确的顺序排列字节后、数据将符合预期。

    是的、是这样。 对于那里的任何混淆深表歉意。 您可能已经找到了它、但该图来自 TPS25751 TRM。

    如果您有任何新问题、请随时打开另一个主题帖。

    谢谢。此致、

    Chris

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

    Christopher、您好!

    是的、这个数字帮助我理解了我的问题。  感谢您回答我的所有问题!

    此致、
    ABI