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.

[参考译文] TPS25750:器件不#39;t 切换到 APP 模式、补丁地址为 naked

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

https://e2e.ti.com/support/power-management-group/power-management/f/power-management-forum/1424661/tps25750-device-doesn-t-switch-to-app-mode-patch-address-is-naked

器件型号:TPS25750
主题中讨论的其他器件:TPS25751-01、USB-PD-CHG-EVM

工具与软件:

尊敬的所有人:

我在使用定制充电器板时遇到了一个问题、在该板中、器件未切换到"app"模式。

下面是原理图以及处理该器件的代码片段。 下面的软件片段适用于 USB-PD-CHG-EVM 01 (当然具有不同的从器件地址)。

软件:

[...]

#define I2C_SLAVE_ADDR 0x44
#define I2C_SLAVE_ADDR_PATCH 0x46

static void tps_StartPatching(void)
{
    uint8_t data_frame[6];
    char cmd_frame[5];

    data_frame[0] = (uint8_t)gSizeFullFlashArray;
    data_frame[1] = (uint8_t)(gSizeFullFlashArray >> 8);
    data_frame[2] = (uint8_t)(gSizeFullFlashArray >> 16);
    data_frame[3] = (uint8_t)(gSizeFullFlashArray >> 24);
    data_frame[4] = I2C_SLAVE_ADDR_PATCH;
    data_frame[5] = 0x32;

    cmd_frame[0]  = 4;
    cmd_frame[1]  = 'P';
    cmd_frame[2]  = 'B';
    cmd_frame[3]  = 'M';
    cmd_frame[4]  = 's';

    if (tps_WriteCommand(&cmd_frame[0], &data_frame[0], sizeof(data_frame))) {
        HAL_Delay(10);  // Allow TPS to process the task command

        uint8_t *patch  = (uint8_t *)(uint32_t)&tps25750x_fullFlash_i2c_array[0];
        uint32_t chunks = (uint32_t)(gSizeFullFlashArray / PATCH_CHUNK_SIZE);
        HAL_StatusTypeDef result = HAL_ERROR;
        for (int i = 0; i < chunks; i++) {
            result = HAL_I2C_Mem_Write(g_PowerM.i2c, I2C_SLAVE_ADDR_PATCH, TPS_DATA_REG, sizeof(uint8_t),
                                       &patch[i * PATCH_CHUNK_SIZE], PATCH_CHUNK_SIZE, 30000);
            if (result != HAL_OK) {
                return;
            }
        }

        if (result == HAL_OK) {
            g_PowerM.i2c_address = I2C_SLAVE_ADDR_PATCH;
            HAL_Delay(10);

            tps_ResetDataPointer();

            g_PowerM.patched = true;
            g_PowerM.offset  = 0;
        }
    }
}

[...]

器件接受"TPS_WriteCommand"、但当发送实际补丁时、先前在"PBMs"中设置的从器件地址为裸地址。

HW:该电路板仅在灌入模式下使用。

期待收到您的消息。

此致
Cosmin、

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

    尊敬的 Cosmin:

    感谢您联系我们!

    似乎您正在写入 I2C 地址0x44。 I2C 默认从器件地址分别为0x20、0x21、0x22、0x23 (需要向右移1位)

    如果您有其他问题/疑虑、敬请告知。  

    此致、  

    Aya Khedr  

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

    尊敬的 Aya:

    地址(0x44 = 0x22 << 1)不存在问题。 我的 HAL 函数需要移位的从器件地址、这就是放置0x44的原因。 在执行上述功能之前、与器件发生大量通信(例如检测器件模式等)。

    我将尝试另一个' 从器件补丁 地址"。

    谢谢!
    此致、
    Cosmin

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

    尊敬的 Cosmin:  

    感谢您的澄清,在这种情况下使用的地址应该没有问题。  

    我仔细看了一下原理图、发现 VBUS 引脚悬空。 如果这些引脚未连接到 Type-C 连接器 VBUS、则电池电量耗尽的情况将不会正常工作。  

    • 引脚32和33 (VBUS)需要连接到 VBUS_IN。  
    • 由于这是一个纯受电应用、因此未使用 PP5V。 请连接到 GND。  
    • 有关仅受电方原理图、请参阅以下常见问题解答。  

    我还想重点介绍我们的后续器件 TPS25751、推荐用于所有新设计。 请参阅以下 常见问题解答。 

    此致、  

    Aya Khedr  

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

    您好、Aya、

    非常感谢您宝贵的意见。 我们已经将这些修改应用于下一个 PCB 修订版、希望这可以解决这个问题。 现在、我们可以关闭此主题、直到有机会重新进行测试为止。

    谢谢!
    此致、
    Cosmin

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

    尊敬的 Cosmin:  

    没问题! 如果您还有其他问题、请随时打开新主题帖。  

    此致、  

    Aya Khedr