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.

[参考译文] TPS65988:通过 i2c 处理 FLem 4CC 更新 SPI 闪存固件

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

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

https://e2e.ti.com/support/power-management-group/power-management/f/power-management-forum/1184651/tps65988-spi-flash-firmware-update-over-i2c-process-flem-4cc

器件型号:TPS65988

您好、TI 专家、

我想确认以下信息。

1、参见第9页的 SLVAE21A。 代码快照。

   

在这里、我打印上述 代码以进行调试。 下面的输出。 希望与 TI 确认结果是否符合预期。

1:输出活动 区域和非活动区域的阵列输出。 那么、这里的 reg_addr 为0x70 (在位移位之后)。  和0x20。  

numof4ksector=0,我假设结果应为0x1000 (4096,十进制)。  

3.  

flemInData.numof4ksector = total_4kBSECTORS_for_patch;

关于宏#define TOTAL_4kBSECTORS_OR_TO_PATCH  是否  为0x1000?

谢谢、
Sofian

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

    尊敬的 Sofian:

    我们将在下周初对此进行研究、并提供反馈、感谢您的耐心等待!  

    谢谢、此致、

    林德华

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

    您好、Raymond、

    1.是否有方法从 TPS65988 SPI 闪存中只读取一个寄存器? 是否使用 FLTd?

    2.我在区域1上执行 flem、似乎区域0也被擦除。  

    3.您是否有机会提供先前的反馈?

    我们可以检查 USB-PD 状态的哪个寄存器提供电压限制?

    谢谢、
    Sofian

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

    尊敬的 Sofian:

    Raymond 最近调派了团队、对此表示歉意。 我将接管此案,并将与他保持一致,以了解该决议目前的情况。

    [引用 userid="533747" URL"~/support/power-management-group/power-management/f/power-management-forum/1184651/tps65988-spi-flash-firmware-update-over-i2c-process-flem-4cc/4478679 #4478679]1. 是否有方法从 TPS65988 SPI 闪存中只读取一个寄存器? 它是否使用 Frd?

    我可能无法正确理解这一点、但 SPI 闪存未格式化为寄存器。 FLTd 允许您从感兴趣的闪存中的特定位开始读取16个字节的闪存。

    例如、如果您想在区域标头0处读取一些信息、可以使用 FLTh 命令将闪存地址传递为0x0004。

    [引用 userid="533747" URL"~/support/power-management-group/power-management/f/power-management-forum/1184651/tps65988-spi-flash-firmware-update-over-i2c-process-flem-4cc/4478679 #4478679]2. 我在区域1上执行 flem、似乎区域0也被擦除。  [/报价]

    您如何确定正在擦除区域0?

    被擦除的存储器地址在 Input DataX 字段中确定、因此您应该检查这些输入值并确保它们不与区域0重叠。

    [引用 userid="533747" URL"~/support/power-management-group/power-management/f/power-management-forum/1184651/tps65988-spi-flash-firmware-update-over-i2c-process-flem-4cc/4478679 #4478679]3. 您是否有机会提供以前的反馈?

    我不是最熟悉此功能的人、我将看到 Raymond 在这方面的情况。

    [引用 userid="533747" URL"~/support/power-management-group/power-management/f/power-management-forum/1184651/tps65988-spi-flash-firmware-update-over-i2c-process-flem-4cc/4478679 #4478679]4. 我们可以检查 USB-PD 状态的哪个寄存器提供电压限制?

    谢谢、此致、

    Chris

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

    尊敬的 Sofian:

    有关应用手册的原始问题。

    代码主要供参考、 原始工程师不再与团队合作。 通常、我们建议遵循提供的流程图。

    [引用 userid="533747" URL"~/support/power-management-group/power-management/f/power-management-forum/1184651/tps65988-spi-flash-firmware-update-over-i2c-process-flem-4cc ]\n 关于宏#define TOTAL_4kBSECTORS_ORT_TO_PATCH修补  程序是  0x1000?[/QUERES]

    我看了代码、根据我的理解、"flemInData.numof4ksector"表示保持修补程序包所需的4KB 段数。 您引用的注释给出了最大值为"4"的示例、即0x4或0b100。 值0x1000表示4096 4KB 段、这似乎太多。 正如注释所述,修补程序的大小取决于您的应用程序以及您添加的修补程序的大小。  

    谢谢、此致、

    Chris

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

    尊敬的 Chris:

    1.按照前面的问题和您的答案、是否有办法只从 TPS65988 SPI 闪存中读取一个寄存器? 是否使用 FLTd?

       »我已经尝试访问 SPI 闪存地址(0x0004)这里的调试输出,我读取的是 outdata[1]=0x20,  

    flrd_data[0]= 0
    flrd_data[1]=0
    flrd_data[2]= 0
    flrd_data[3]=40
    FLRD 命令
    outdata[0]= 0
    outdata[1]=20
    outdata[2]= 0
    outdata[3]=0
    outdata[4]=0

       »在使用 FLTD 进行访问之前、我使用 FLR 设置 inacitve 区域(区域1)、以将所选区域的闪存存储器地址加载到输出 DataX 中。

    flr_data[0]= 1
    FLRR 命令
    outdata[0]= 0
    outdata[1]=70
    outdata[2]= 0
    outdata[3]=0
    outdata[4]=0
    outdata[5]= 0

       »我尝试访问 SPI 闪存地址(0x0004)和区域0x70,下面的打印输出数据为 FFFFFF。

    flrd_data[0]= 4
    flrd_data[1]=0
    flrd_data[2]= 0
    flrd_data[3]=70
    FLRD 命令
    outdata[0]= 3
    outdata[1]=ff
    outdata[2]=ff
    outdata[3]=ff
    outdata[4]=0

    »然后我尝试访问 下面的 SPI 闪存地址(0x0004)打印输出数据为0x20

    flrd_data[0]= 0
    flrd_data[1]=0
    flrd_data[2]= 0
    flrd_data[3]=40
    FLRD 命令
    outdata[0]= 0
    outdata[1]=20
    outdata[2]= 0
    outdata[3]=0
    outdata[4]=0
    (笑声)

    2、跟进上一个问题和您的答案、 我在区域1上执行 flem、似乎区域0也被擦除。  

    flem_data[0]= 0
    flem_data[1]=0
    flem_data[2]= 0
    flem_data[3]=70

    flem_data[4]=c
    FLEM 命令
    outdata[0]= 0
    outdata[1]=0
    outdata[2]= 0
    outdata[3]=70
    outdata[4]=0

    我附加了总相位 Beagle 交易 e2e.ti.com/.../usb_2D00_pd_2D00_4cc_2D00_flem_2D00_data.csv

    我以为我只擦除了区域1 (无效区域1)、但在重置 GAID 后、FW 版本看起来不正确。

    在我执行 FLEM 之前、版本为 f707.10.10、然后在该复位之后变为 f707.10.00。  

    3.关于您对#define TOTAL_4kBSECTORS_OR_BLOAD_PATCH 的响应  

      我的修补程序文件大小为 43968,因此下面我计算出了修补程序的4KB 扇区总数中的12个。  

      43968/1024 = 43 (42.9)+ 4KB = 47 /4KB = 12 (11.75) 4KB 扇区

     我们 可以检查 USB-PD 状态的哪个寄存器提供电压限制?

       我检查了 VBUS_OvpTripPoint 的当前值= 0x26 (38)

       38 * 0.32V + 3.84V = 16V 、对于 USB 3.0 PD 最大 5A @ 16V = 80W  

       我们希望将 VBUS 限制为27W。 软件是否可以进行此更改? 因为 TPS65988可以提供100W 的 VBUS

    谢谢、
    Sofian

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

    尊敬的 Sofian:

    [引用 userid="533747" URL"~/support/power-management-group/power-management/f/power-management-forum/1184651/tps65988-spi-flash-firmware-update-over-i2c-process-flem-4cc/4490096 #4490096]1. 按照前面的问题和您的答案、是否有方法只从 TPS65988 SPI 闪存读取一个寄存器? 它是否使用 Frd?

    使用 TPS65988读取闪存的唯一方法是通过"FLTD"命令。 该命令没有用于选择要读取的数据量的输入、这意味着您只能读取16字节输出 DataX。 从闪存读取时、我们不会读取"寄存器"。 我们选择一个位地址并从该位读取。

    [引用 userid="533747" URL"~/support/power-management-group/power-management/f/power-management-forum/1184651/tps65988-spi-flash-firmware-update-over-i2c-process-flem-4cc/4490096 #4490096"]2. 跟进上一个问题和您的答案、 我在区域1上执行 flem、似乎区域0也被擦除。  [/报价]

    根据我的理解、闪存的格式可以更改、并且在选择要擦除的4KB 扇区数量时、您需要确保它不会与其他区域重叠。 如果您选择太多区域、则可能会发生这种情况。 如果您的闪存的格式与下图类似、您可能会从错误的起始地址擦除。  

    [引用 userid="533747" URL"~/support/power-management-group/power-management/f/power-management-forum/1184651/tps65988-spi-flash-firmware-update-over-i2c-process-flem-4cc/4490096 #4490096"]

    3.关于您对#define TOTAL_4kBSECTORS_OR_BLOAD_PATCH 的响应  

      我的修补程序文件大小为 43968,因此下面我计算出了修补程序的4KB 扇区总数中的12个。  

      43968/1024 = 43 (42.9)+ 4KB = 47 /4KB = 12 (11.75) 4KB 扇区

    [/报价]

    我建议您使用您的设置尝试此操作、以验证它是否正常工作、但这看起来是正确的。

    [引用 userid="533747" URL"~/support/power-management-group/power-management/f/power-management-forum/1184651/tps65988-spi-flash-firmware-update-over-i2c-process-flem-4cc/4490096 #4490096"]我们可以检查 USB-PD 状态的哪个寄存器提供电压限制?

    在端口配置寄存器0x28中设置电压限制。

    谢谢、此致、

    Chris