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.

[参考译文] BQ40Z80:写入闪存时锁定

Guru**** 2548090 points
Other Parts Discussed in Thread: BQ40Z80, EV2400, BQSTUDIO

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

https://e2e.ti.com/support/power-management-group/power-management/f/power-management-forum/1348577/bq40z80-locked-out-of-writing-to-flash

器件型号:BQ40Z80
主题中讨论的其他器件: EV2400BQSTUDIO

我无法对几个电路板上的闪存进行写入。  我尝试了所有通常的事情,建议像解封等。  这一切都不起作用、因为我在尝试访问闪存的所有内容上都获得了 NACK。  请参阅下面的波形。

是否有建议、说明哪些因素会导致芯片拒绝对闪存的访问?  它不是密封的、都是出厂默认设置。  

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

    尊敬的 Chet:

    这对于定制设计来说还是使用 bq40z80 EVM?

    监测计是否尝试使用 EV2400或定制 MCU 进行通信?

    如果使用定制 MCU、您能否告诉我正在写入测量仪表的内容?

    此致、

    安东尼·巴尔迪诺

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

    这是定制设计。  它是定制 MCU。  我正在尝试写入闪存的一个32字节块。  我尝试写入的确切数据包如下所示:

    0x440x22、0xC00x480x87、 0x510x5E0x100x25、0x10、 0xFD0x0F0xF40x0F0xEC、 0x0F0xE80x0F、 
    0xE20x0F0xCA0x0F0xBB、 0x0F0x8C0x0F、0x750x0F、 0x580x0F0x420x0F0x30、 0x0F0x100x0F、0xE5

    关键是我在0x44之后的第一个字节上获得一个 NACK。 我甚至没有到达
    因为我有一个 NACK。 那么、哪些因素会导致 BQ40Z80始终 NACK? ITS 响应
    (Aacking) SMBus 地址和0x44。 它拒绝了我、拒绝了我访问任何制造信息。

    器件从未被密封。 我可以将其连接到 BQStudio 并读取一些寄存器。 但一旦 BQStudio
    尝试执行制造访问读取。 它会永久 NACK。 在我看来、这会把我锁定在
    制造访问隔离开来。

    以下是成功读取的示例。 使用 BQStudio 和 EV2400



    但下面是使用 BQStudio 读取制造访问失败的情况。 我把它分解成了三张图片、这样您就可以看到
    细节时钟延展结束后、您可以看到它一直 NACK。 BQStudio 永不放弃
    我必须关闭 BQStudio、然后拔下 EV2400、这样才能停止无限制地等待0xFF NACK。







    无论它是我的定制 MCU 还是带 EV2400的 BQStudio、都没有关系。 所有制造访问都失败。

    我使用的是 BQStudio 1.3.124


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

    尊敬的 Chet:

    感谢您提供的细节、我认为如果我们可以 在 bqStudio 上对其进行调试、那么调试 MCU 的问题将会更清晰。

    关于 bqStudio 中如何传达此信息、您能否告诉我编写过程? 下面是我写入0x4000的示例。

    使用了命令44、同时将数据开头的寄存器寻址为00 40、然后是要写入的其余数据。

    执行此操作时、请确保 bqStudio 中的"Auto-Refresh"已关闭。

    您还能告诉我您在以上示例中尝试写入哪个寄存器吗?

    此致、

    安东尼·巴尔迪诺

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

    好的、使用 bqStudio 避免故障排除。  请参阅下面使用状态良好的芯片成功编写的内容。

    以下是我在读取事务处于不良状态的芯片上得到的结果

    那么、回到我最初的问题、当我们启动该主题时、"有什么建议会导致芯片拒绝任何对闪存的访问?"  什么会导致 bq40z80拒绝任何制造访问的读取或写入?

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

    尊敬的 Chet:

    我看到在处于不良状态的单元上存在"与器件通信的超时或意外响应"错误。 下面是另一个 E2E 主题、在这个主题中、使用 bq40z80的人能够减轻同样的错误。

    https://e2e.ti.com/support/power-management-group/power-management/f/power-management-forum/836311/bq40z80evm-020-timeout-or-unexpected-response-communicating-with-device 

    如果这个解决方案不起作用、请告诉我、我们可以进一步研究。

    此致、

    安东尼·巴尔迪诺

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

    我现在可以使用 bqstudio 并对砖型电路板中的固件进行重新编程。  这是有点古怪的,我怎么做。  如果我尝试只是对它进行编程、它总是会被拒绝并出现 CRC 错误。  如果我尝试在0x44执行读取块、它将进入 NACK 的永恒循环、但当它位于 NACK 的永恒循环中时、我可以点击程序按钮、它将找出内容并对固件进行编程。  我通过试错找到了这个解决方案。  

    有什么想法,这是神奇的组合,让这个东西重新编程?

    您是否有关于如何对 BQ40Z80进行编程、使其独立于 bqStudio 和 EV2400进行编程的文档?  大规模生产中使用 bqstudio 和 EV2400并不现实。

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

    尊敬的 Chet:

    我以前没有看到这个解决方案,让砖板编程,我会看看这.

    关于在不使用 bqStudio 或 EV2400的情况下对 bq40z80单元进行编程、可以使用闪存流文件。 这将允许通过.bq.fs 文件对监测计固件和配置文件进行编程。 可以在下面的监测计通信文档中找到更多信息:

    https://www.ti.com/lit/pdf/slua801

    此致、

    安东尼·巴尔迪诺

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

    slua801文档有一页、其中没有详细介绍闪存流文件格式。  您是否有介绍.bq.fs 文件中所有命令的文档?  我发现类似的东西 这里 和 这里 .  这些链接提供了更多有用信息、但似乎没有最新信息。  我有一个 golden .bq.fs 文件、下面是一个片段:

    ;--------------------------------------------------------
    ;Go To ROM Mode
    ;--------------------------------------------------------
    SWB: 16 44 00 0F
    X: 1000
    ;Clear Tokens by poking 00 to both locations
    ;Set Address to 0x0000
    SWW: 16 09 00 00
    ;Read Value at address 0x0000
    ;SCW: 16 0B
    ;Clear bit 3 and write value to address 0
    ;dataUpdate = (dataRead & 0xff) | 0x8;Instead setting hardcoded value that works
    SWW: 16 0A 02 00
    ;Set Address to 0x0002
    SWW: 16 09 02 00
    ;Write Value 00 to 0x0002 
    SWW: 16 0A 00 00
    SWW: 16 00 00 00
    SWW: 16 1A DE 83
    SWW: 16 06 00 00
    X: 250
    SWW: 16 00 80 00
    SWW: 16 1A DE 83
    SWW: 16 06 80 00
    X: 250
    ;Set Field Updater tokens by poking 08 to 0000 and B8 to 0002
    ;Set Address to 0x0000
    SWW: 16 09 00 00
    ;Read Value at address 0x0000
    ;SCW: 16 0B
    ;Set bit 3 and write value to address 0
    ;dataUpdate = (dataRead & 0xff) | 0x8; Instead setting hardcoded value that works
    SWW: 16 0A 0A 00
    ;Set Address to 0x0002
    SWW: 16 09 02 00
    ;Write Value B8 to 0x0002 
    SWW: 16 0A B8 00
    SWW: 16 00 80 01
    SWW: 16 1A DE 83
    SWW: 16 06 80 01
    X: 250
    ;Clear Tokens by poking 00 to both locations
    ;Set Address to 0x0000
    SWW: 16 09 00 00
    ;Read Value at address 0x0000
    ;SCW: 16 0B
    ;Clear bit 3 and write value to address 0
    ;dataUpdate = (dataRead & 0xff) | 0x8;Instead setting hardcoded value that works
    SWW: 16 0A 02 00
    ;Set Address to 0x0002
    SWW: 16 09 02 00
    ;Write Value 00 to 0x0002 
    SWW: 16 0A 00 00
    SWW: 16 11 DE 83
    X: 400
    SWW: 16 07 DE 83
    X: 250
    SWB: 16 0F 00 40 76 2F 76 A9 C8 90 0B 7E ED 3F 53 1B 07 49 00 00 40 00 00 00 00 00 00 00 00 BC A2 FF FF FF FF FF
    X: 3
    SWB: 16 0F 20 40 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
    X: 3
    SWB: 16 0F 40 40 20 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 7A 78 79 30 31 32 33 34
    X: 3
    SWB: 16 0F 60 40 35 20 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 7A 78 79 30 31 32 33
    X: 3

    我正在为可以读取此文件并进行固件更新的生产测试装置编写一个解析器。  您能否找到有关闪存流文件格式的确定性文档?  我已经用我的逻辑分析仪捕获了这个被写入 BQ40Z80的文件。  您能否为我提供最终文档、以便我不必对逻辑分析仪捕获和.bq.fs 文件执行逆向工程、知道每个命令的含义?  谢谢。

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

    尊敬的 Chet:

    我认为该邮件中发送的两个文档和主题适用于使用 I2C/HDQ 的电量监测计。 下面是使用 SMBus 的电量监测计的.bq.fs 命令细目表、它应该与上面的.bq.fs 更正确地匹配。

    https://e2e.ti.com/support/power-management-group/power-management/f/power-management-forum/1107256/faq-bqstudio-how-do-i-interpret-the-lines-in-a-bq-fs-file-for-use-with-my-smbus-gauge 

    我不认为我们有针对闪存流格式的每一个命令的指定文件,但我将继续站在我们一边,能够回答出现的任何问题。

    此致、

    安东尼·巴尔迪诺

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

    我还在尝试弄清楚闪存为什么会随机损坏、我需要刷新固件来恢复芯片。  我正在对器件进行校准。  当我执行校准时、我写入从地址0x4000开始的校准数据闪存区域。  一次写入该区域的一个寄存器是否会出现问题?  例如、我向从0x4000开始的电池增益寄存器写入2个字节的有效载荷。  如果我在电流校准的情况下一次写入两个寄存器、情况会怎样?  从地址0x4006开始写入8个字节的有效载荷、然后在同一次写入中写入 ccgain 和 Capacity Gain。  这会引发危险信号吗?  

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

    尊敬的 Chet:

    该器件在写入单个寄存器或多个寄存器时应该不会出现任何问题、只要它适合以下格式:

    我可以看到的唯一问题是、如果您尝试写入的寄存器顺序不正确、例如0x4000到0x4002等。

    此致、

    安东尼·巴尔迪诺