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:从 uC 下载补丁程序在 PBM 上失败

Guru**** 2614265 points
Other Parts Discussed in Thread: TPS25750

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

https://e2e.ti.com/support/power-management-group/power-management/f/power-management-forum/1194735/tps25750-downloading-patch-from-uc-fails-on-pbms

器件型号:TPS25750

您好!

我正在尝试向 TPS25750写入补丁、但在将 PMM 写入状态为!CMD 的器件后、它将失败。
在!CMD 之前,Data1中的状态为 BMSD,我在文档中找不到有关该状态的任何信息。

我按照《主机接口技术参考手册》第53页的执行流程进行操作、并执行以下步骤:

1.检查 INT_Event1.ReadyForPatch (状态= True)
2. TPS25750的读取模式(状态= PTCH)
3.将数据写入 Data1寄存器。
如果我正确理解《主机接口技术参考手册》、数据缓冲区应如下所示:

data_buffer[0] = 0x00; // used for output data from chip
data_buffer[1] = bundle_size;
data_buffer[2] = bundle_size >> 8;
data_buffer[3] = bundle_size >> 16;
data_buffer[4] = bundle_size >> 24;
data_buffer[5] = m_patch_mode_address;  // according to datasheet, address set by ADC (and 0x00) is not valid addresses
                                    // Here address 0x10 is chosen for update
data_buffer[6] = 0x32; //Recommended from datasheet

然后、这些字节通过由 ADCIN1和 ADCIN2定义的唯一地址传输到 TPS25750。

4.将"PBM"写入寄存器 CMD1
5.读取 CMD1寄存器(状态= BMSD 恰好在写入 PMM 后、然后在10ms 后报告!CMD)

我还尝试仅传输6个字节(如表3-9中所列、忽略填充输出 DataX 的第一个空字节)。

编辑:
根据此帖子、 应省略接口文档中表3-9的输出部分、因此应发送代码

// Data structure:
// Byte 0: Byte 1 of bundle size
// Byte 1: Byte 2 of bundle size
// Byte 2: Byte 3 of bundle size
// Byte 3: Byte 4 of bundle size
// Byte 4: I2C slave address
// Byte 5: Burst Mode Timeout (recommended to be set to 0x32 (5 seconds))

static volatile uint32_t bundle_size = sizeof(tps25750x_lowRegion_i2c_array); 
data_buffer[0] = bundle_size;
data_buffer[1] = bundle_size >> 8;
data_buffer[2] = bundle_size >> 16;
data_buffer[3] = bundle_size >> 24;
data_buffer[4] = m_patch_mode_address >> 1;  // according to datasheet, address set by ADC (and 0x00) is not valid addresses
                                    // Here address 0x10 is chosen for update
data_buffer[5] = 0x32; //Recommended from datasheet

我在写数据1寄存 器后尝试读回它、它返回我读回的7个字节的所有零(第一个字节表示寄存器中40字节可用数据除外)。

对失败的事情有什么想法?

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

    您好、Vidar、

    我将在2023年2月13日(星期一)之前向 COB 介绍我的想法。  

    非常尊重、

    Brandon Beader

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

    您好、Brandon、
    对此进行了任何更新?

    此致

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

    您好、Vidar、

    我对这些问题有一个假设。

    是否可以附加要发送的原始(十六进制) 4CC 命令'PBM'? I2C 的字节序似乎是错误的。

    非常尊重、

    Brandon Beader

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

    您好、Brandon、
    发送的原始数据为0x50、0x42、0x4D、0x73

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

    您好、Vidar、  

    发送的数据应采用小端字节序、因此:

    0x73先发送、0x4D 第二发送、0x42第三发送、0x50最后发送。

    非常尊重、

    Brandon Beader

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

    您好、Brandon、
    我尝试交换4CC 命令以按照指示发送它。
    这给了我另一个错误:mbpd,我在手册中也找不到它。
    我是否还需要交换 Data1寄存器中的字节?
    当前我将发送0x00、0x39、0x00、0x00、0x10、 0x32。
    这对应于数据表中建议的14 592字节(0x00003900)、地址0x10和超时0x32的捆绑包大小。
    如果我了解《主机接口技术手册》表3-9、这应该是正确的吗?

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

    您好、Vidar、

    我正在查看固件以查看编写此文件的格式。 我将于周一在 COB 前回来。

    非常尊重、

    Brandon Beader

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

    您好、Brandon、
    我已下载并开始工作。 错误是我的、在填充了 Data1寄存器的"准备写入"部分中、缺少表示要发送字节的数字。 添加此项并恢复4CC 命令的顺序可解决此问题。
    感谢您的支持!

    此致、
    Vidar