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.

[参考译文] BQ34Z100-G1:BQ34Z100-G1

Guru**** 2618275 points

Other Parts Discussed in Thread: BQ34Z100, BQ34Z100-G1, BQSTUDIO

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

https://e2e.ti.com/support/power-management-group/power-management/f/power-management-forum/1564491/bq34z100-g1-bq34z100-g1

器件型号: BQ34Z100-G1
主题中讨论的其他器件: BQSTUDIO、BQ34Z100

工具/软件:

我们正在使用 BQ34Z100-G1 电量监测计、并当前通过黄金映像对其进行刷写。 作为我们 OTA 更新过程的一部分、我们想知道是否可以使用一个脚本、找到黄金映像并将其刷写到电量监测计中。 SoC 从 eMMC 检索存储的黄金映像并将其刷写到电量监测计。 请您确认这种方法是否可行;如果不可行、建议使用哪种方法?

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

    您好:

    此问题已指定、并将在可能的情况下进行审核、同时请附加相关的.gg/.log 文件。

    谢谢您、
    Alan

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

    您好、

    是的、您可以通过 i2c 刷写 bq.fs 文件。

    本文档介绍了如何读取该文件。  监测计通信

    此致、

    Diego

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

    您好、

    我正在尝试.df.fs通过 i.MX8M Plus 平台将黄金映像(格式)刷写到 BQ34Z100-G1。 我已经将黄金映像文件包含在工程编译中、因此在将完整的构建映像刷写到目标板后、我运行根据gauge.cgauge.h测量仪表通信文档中提供的伪代码(,适用于 LinuxRegisteredUser Space I²C /dev Interface 的 Gauge API 实现示例)生成的应用程序。

    但是、当我在 bqStudio 中检查时、似乎实际并未对黄金映像进行编程。 例如:

    • 首先、我将 bqStudio 中的制造商名称更改为 ZCS、并将其写入目标电路板上的电量计。

    • 然后、我尝试通过 Linux 用户空间刷写黄金映像。

    • 之后、当我在 bqStudio 中重新检查时、制造商名称仍然是旧的 ZCS。

    这表明未成功刷写黄金映像。 是否正确、或者我在流程中遗漏了一些内容?

    此外、我是否需要遵循任何特定的时序来刷写.df.fs映像?

    只是为了确认、我可以从 Linux 用户空间成功地读取和写入电量监测计寄存器。

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

    您好、

    此外、刷写.df.fs图像是否需要遵循任何特定的顺序?

    不可以、只能解封您的仪表。  

    这表明未成功刷写黄金映像。 是否正确、或者流程中缺少某些内容?

    是的、df.fs 包含所有 DataFlash 参数、因此制造商名称应已改写。 您可以使用任何参数运行该测试。

    此致、

    Diego

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

    您好、
    您能否证实我每次刷写黄金映像时是否应该明确解封该器件。

    此外、即使我能够从 Linux 用户空间读取和写入电量监测计寄存器、如果您能说明黄金映像可能无法正确刷写的原因、我将不胜感激。

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

    您好、
    在 Linux 用户空间中、我们能够成功读取和写入电量监测计寄存器(例如,控制状态,器件类型,固件版本,充电状态, 等)。 但是、黄金映像似乎未被编程。

    在测试中、我们将 bqStudio 中的制造商名称修改为“ZTLS"并“并确认其中的更新。 然后、我们尝试从 Linux 刷写黄金映像。 之后、当我们在 bqStudio 中重新检查时、制造商名称仍然是“ZCS “、这表明黄金映像不会覆盖它。

    此外、我们尝试按以下顺序从 Linux 读取制造商名称字段:

    #启用数据闪存访问
    i2cset -y 5 0x55 0x61 0x00

    #选择子类 (48→0x30)
    i2cset -y 5 0x55 0x3E 0x30

    #选择块 (43→0x2B)
    i2cset -y 5 0x55 0x3F 0x2B

    #读取 BlockData (0x40..0x5F)

    i2cdump -y 5 0x55 i  

    i2cdetect -y 5 //to see the driver
    
    //to read control register to check seal status
    root@imx8mp-tesseract:/lib/firmware# i2cset -y 5 0x55 0x00 0x00 0x00 i
    root@imx8mp-tesseract:/lib/firmware# i2cget -y 5 0x55 0x00 w
    0x000d
    
    
    //to read manufacturer name
    //Enable Data Flash access (BlockDataControl = 0x00)
    i2cset -y 5 0x55 0x61 0x00
    //Select subclass (DataFlashClass = 48 → 0x30)
    i2cset -y 5 0x55 0x3E 0x30
    //Select block/offset (DataFlashBlock = 43 → 0x2B)
    i2cset -y 5 0x55 0x3F 0x2B
    //Read the 32-byte BlockData window (addresses 0x40..0x5F)
    i2cdump -y 5 0x55 i
    
    //result
    root@imx8mp-tesseract:/lib/firmware# i2cdump -y 5 0x55 i
         0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f    0123456789abcdef
    00: 0d 00 0c 01 91 00 08 05 34 37 33 ff 25 09 05 08    ?.???.??473.%???
    10: 33 ff 00 06 ff ff ff ff ff ff ff ff ff ff ff ff    3..?............
    20: 01 02 46 ff ff ff ff ff ff ff ff ff ff ff ff ff    ??F.............
    30: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff    ................
    40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
    50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
    60: ff 00 08 06 c0 00 43 03 a0 00 27 05 48 16 44 01    ..???.C??.'?H?D?
    70: 60 24 00 00 19 00 ff ff ff ff ff ff ff ff ff ff    `$..?...........
    80: 0d 00 0c 01 91 00 08 05 34 37 33 ff 25 09 05 08    ?.???.??473.%???
    90: 33 ff 00 06 ff ff ff ff ff ff ff ff ff ff ff ff    3..?............
    a0: 01 02 46 ff ff ff ff ff ff ff ff ff ff ff ff ff    ??F.............
    b0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff    ................
    c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
    d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
    e0: ff 00 08 06 c0 00 43 03 a0 00 27 05 48 16 44 01    ..???.C??.'?H?D?
    f0: 60 24 00 00 19 00 ff ff ff ff ff ff ff ff ff ff    `$..?...........
    root@imx8mp-tesseract:/lib/firmware# ^C
    
    
    Manufacturer Name field is currently empty
    
    //firmware version
    root@imx8mp-tesseract:/lib/firmware# i2cset -y 5 0x55 0x00 0x02 0x00 i
    root@imx8mp-tesseract:/lib/firmware# i2cget -y 5 0x55 0x00 w
    0x0202
    
    
    //device type
    root@imx8mp-tesseract:/lib/firmware# i2cset -y 5 0x55 0x00 0x01 0x00 i
    root@imx8mp-tesseract:/lib/firmware# i2cget -y 5 0x55 0x00 w
    0x0100
    
    //hardware version
    root@imx8mp-tesseract:/lib/firmware# i2cset -y 5 0x55 0x00 0x03 0x00 i
    root@imx8mp-tesseract:/lib/firmware# i2cget -y 5 0x55 0x00 w
    0x0005
    
    //state of charge
    root@imx8mp-tesseract:/lib/firmware# i2cget -y 5 0x55 0x02 w
    0x010a
    
    //RemainingCapacity(): 0x04/0x05
    root@imx8mp-tesseract:/lib/firmware# i2cget -y 5 0x55 0x04 w
    0x0072
    
    //Voltage(): 0x08/0x09 
    root@imx8mp-tesseract:/lib/firmware# i2cget -y 5 0x55 0x08 w
    0x3710
    

    但结果显示了 “制造商名称“字段为空 尽管在 bqStudio 中我们可以看到制造商 ID 已正确填充。

    所以主要的疑问是:

    -为什么制造商名称出现在 bqStudio 中,但当我们尝试通过 Linux i2cget/i2cdump 命令直接读取时,却没有出现?
     -这是否表明我们访问数据闪存块的方式存在问题,或者是否需要额外的步骤(如校验和/解封/提交)才能从 Linux 正确读取或写入这些字段?
     -而且,是否有刷新 .df.fs黄金映像所需的顺序,以确保它除了解封以外的效果?

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

    您好、

    您能否确认每次刷写黄金映像时是否应明确解封设备。

    很难说、如果您之前已密封电量监测计、那么每次发生 POR 时、电量监测计都会自动密封。

    此外、如果您能说明黄金映像可能无法正确闪烁的原因、即使我能够从 Linux 用户空间读取和写入电量监测计寄存器、我也将不胜感激。

    如果无法刷写 df.fs 文件但可以读取/写入、则可以通过向您要更改的每个寄存器右键来对电量计进行编程、这实际上就是 df.fs 文件的功能。  

    为什么 bqStudio 中显示制造商名称、但在我们尝试通过 Linux i2cget/i2cdump 命令直接读取它时不显示?

    Linux 12cget/dump 中必须有错误、BQstudio 是正确的。

    -这是否表明我们访问数据闪存块的方式存在问题、或者是否需要额外的步骤(如校验和/解封/提交)才能从 Linux 正确读取或写入这些字段?

    我不知道。

    此外、刷写 .df.fs黄金映像是否有必要的序列、以确保其除解封之外生效?

    您可以先尝试将器件置于 ROM 模式、但这无关紧要、因为我们不会刷写仅固件数据闪存参数。

    此致、

    Diego

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

    您好、

    我们正在 尝试刷写 BQ34Z100-G1 的黄金映像。 同时我可以使用成功刷写它 BQStudio 、我们无法从 Linux 用户空间刷新它。

    为了进行调试、我们尝试通过两种方式读取制造商名称:

    1. 使用 I²C 命令直接从 Linux 用户空间执行 –这有效并返回正确的制造商名称。

      第 1 题。 选择子类 48(数据): i2cset -y 5 0x55 0x3E 0x30 b

      #2。 选择块 1(偏移 32–63):i2cset -y 5 0x55 0x3F 0x01 b

      #3 读取已满 32 字节块
      对于$(序列 0x40 0x5F)中的 I;请执行

          Val=$(i2cget -y 5 0x55 $i b)

          echo -n “${val#0x}“

      已完成

      回波

    2. 使用 TI 测量仪表通信文档 (SLUA801) 中的 C 代码 、其中包括gauge.cgauge.h和一个示例 I²C Linux 代码–这就是 不会 返回正确的制造商名称。

    同样、通过 Linux I²C 命令读取固件版本也适用:

    i2cset -y 5 0x55 0x00 0x0002 w
    i2cget -y 5 0x55 0x00 w

    返回0x0202、但使用 TI C 示例代码、则不返回。

    能否确认 SLUA801 中的读写函数 https://www.ti.com/lit/an/slua801/slua801.pdf 仅与兼容 BQ27421 家庭而不是家庭 BQ34Z100-G1 ? 如果它们不兼容、是否有 参考文档或示例代码 从 Linux 用户空间访问配置数据并刷写 BQ34Z100-G1 的黄金映像?

    另外、我之前说过、我们能够写入寄存器、但有一个更正、即我们是这样的 无法 从 Linux 用户空间写入各种寄存器、如制造商名称

    感谢您的支持。

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

    您好、

    该过程略有不同;本文档应该有所帮助。

    将 I2C 通信与 bq34110 bq35100 和 bq34z100-G1 系列气体进行通信

    此致、

    Diego

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

    您好、
    参考您分享的文档、我能够使用 I²C 命令成功地从 Linux 用户空间更改制造商名称。 然而、由于本文档未提供任何用于刷写黄金映像的伪代码、因此我想查看建议的方法。

    请说明以下几点:
    1.是否可以gauge.cgauge.h  按原样重复使用 SLUA801( www.ti.com/.../slua801.pdf ) 中的和进行 BQ34Z100-G1 黄金映像编程、或者是否需要修改/开发新的驱动程序?

    是否有专门用于 BQ34Z100-G1 黄金映像编程的示例?

    黄金映像应该是逐块写入、还是有比单独发送每个写入命令更好的方法(这会非常耗时)?

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

    您好、

    1) 此伪代码、需要进行更改以适应 BQ34z100 的具体情况。  

    2) 否

    3) 两者都是足够的。  

    此致、

    Diego

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

    [DEBUG] Line 29: Processing 'W:16643D38
    X:2
    C:166'
    [DEBUG] Line 29: WRITE command
    [DEBUG] Line 29: Parsing hex data: Address=0x16 [I2C_ADDRESS] Setting address: 0x16 (I2C: 0x0B)
    Register=0x64 Data=[0x3D,0x38]
    [DEBUG] Line 29: Data length: 2 bytes
    [DEBUG] Line 29: Executing WRITE to register 0x64
    [I2C_WRITE] Register: 0x64, Length: 2, Data: 0x3D 0x38
    [I2C_WRITE] Write result: -1
    [DEBUG] Line 29: Write result: -2 bytes written
    [DEBUG] Line 29: Seeking next line...
    [DEBUG] Line 29: Next line starts at offset 902
    
    [DEBUG] Line 30: Processing 'X:2
    C:166600
    W:16000'
    [DEBUG] Line 30: DELAY command
    [DEBUG] Line 30: Delaying for 2 milliseconds
    [DEBUG] Line 30: Delay completed
    [DEBUG] Line 30: Seeking next line...
    [DEBUG] Line 30: Next line starts at offset 906
    
    [DEBUG] Line 31: Processing 'C:166600
    W:160002010'
    [DEBUG] Line 31: COMPARE command
    [DEBUG] Line 31: Parsing hex data: Address=0x16 [I2C_ADDRESS] Setting address: 0x16 (I2C: 0x0B)
    Register=0x66 Data=[0x00]
    [DEBUG] Line 31: Data length: 1 bytes
    [DEBUG] Line 31: Executing COMPARE on register 0x66
    [I2C_READ] Register: 0x66, Length: 1
    [I2C_READ] Write register result: 1
    [I2C_READ] Read data result: 1
    [I2C_READ] Data: 0x02
    [DEBUG] Line 31: Read result: 1 bytes read
    [DEBUG] Line 31: Expected: 0x00
    [DEBUG] Line 31: Received: 0x02
    [ERROR] Line 31: COMPARE FAILED - data mismatch!
    FAILED: Flash stopped at offset 914/6748
    Context around failure:
    W:160002010000014F033F110CD9FF30E0FF352F100CE0FF35FFFF23E3AF04E2BF04D1FF36E2A004E3A10400C70201C602E

    在闪存过程中、编程在初始验证和解封阶段成功执行、但在到达数据闪存块编程阶段时始终失败。  此时、我们会遇到 I2C 写入命令返回–1、表明通信失败、这随后会导致比较操作失败、因为器件的状态寄存器显示错误状态而不是预期的成功代码。

    在这些闪存故障后、器件在 bqStudio 中完全无法检测到、并且基本 I2C 通信受到影响。

    此外、我们发现了一个显著的数据闪存偏移差异、其中数据表指定的制造商名称应位于子类 0x30、偏移量 43 处、实际上位于偏移量 46 处、这表示我们在多个数据闪存参数中观察到的一致的 3 字节差异。
    我所推荐的 文件可能存在问题:///D:/ZCS-Priya/002Projects/13Project_Tesseract /tes_documents/bq34z100-g1_datasheet.pdf  

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

    您好、

    您的设备一直处于 ROM 模式。  

    (+) BQ34Z100-G1:如何退出 ROM 模式 — 电源管理论坛-电源管理 — TI E2E 支持论坛

    此致、

    Diego

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

    您好、
    我们已经使用 Linux I2C 接口成功实现了一个过程来刷写 bq34z100 电量监测计的黄金映像。

    我们遇到了一种情况、即如果闪存操作中断、器件将进入 ROM 模式。 在这种状态下:

    • I2C 地址从标准 0x55 更改为 0x0B(在 bqStudio 中显示为 0x16)。

    • 在此 ROM 模式地址 (0x0B) 上仍然可以进行通信、但器件在其正常地址无响应。

    • 通过使用 bqStudio 对该器件进行重新编程、可以完全恢复该器件的正常运行、之后该器件会在地址 0x55 处恢复正常运行。

    要在我们的 Linux 环境中实现完全自动恢复解决方案、了解 bqStudio 用于复位器件和退出此 ROM 模式的特定命令序列会非常有帮助。

    您能否提供有关此恢复过程的详细信息、以便我们可以尝试直接通过我们的 Linux I2C 系统来实现?

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

    您好、

    本主题介绍了如何退出 ROM 模式。

    (+) BQ34Z100-G1:如何退出 ROM 模式 — 电源管理论坛-电源管理 — TI E2E 支持论坛

    此致、

    Diego