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.

[参考译文] BQ34Z651:未记录的数据闪存元件

Guru**** 2496645 points


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

https://e2e.ti.com/support/power-management-group/power-management/f/power-management-forum/721877/bq34z651-undocumented-data-flash-elements

器件型号:BQ34Z651

大家好、

我正在编写我自己的脚本以更新 BQ34Z651器件上的数据闪存、我注意到数据闪存的许多区域都没有记录。  

到目前为止、我发现了以下内容:

子类 ID 偏移范围 说明
未知 未知 加热器控制
36. 4-5 未知
59. 24-25. 未知
59. 32-39. 寿命 OT/OV 信息
60 4-6 未知
64 12-13. 未知
65 0 未知
80 2-59. 未知
80 62-76. 未知
80 85-87 未知
80 90 未知
80 91-92 是指"测量温度差"、但不存在

我目前还没有看过80分班、但考虑到我到目前为止的调查结果、我认为也会有更多的问题。

 当我从数据闪存读取数据时、这些未记录的区域(其位置已知)肯定充满了数据。 我不知道该数据是什么、也不知道擦除它是否安全。

有人能帮我吗?

谢谢、

David

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 David:
    我们的大多数电池专家今天都不在办公室。 我们将在星期一讨论您的问题。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    大家好、

    我只是想知道有人是否有机会查看这一点吗?

    谢谢、

    David
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 David:
    DataFlash 有许多重要的段、但它们是静态的和专有的、因此是隐藏的/私有的。 您不应擦除它们、但应将它们编程为黄金闪存映像的一部分。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    大家好、

    这是可以预料的,我当然可以做到这一点。

    但是、我在原始问题中提到的加热器控制和寿命元素被定义为我可以编辑/读取的内容(我可以通过 bq 评估软件读取)、但这些元素的定义不足以让我实际使用它们。 您是否可以为我优化这些元素?

    此外、鉴于数据闪存文档中缺少这些内容、我担心其他一些缺少的元素可能不是保留的/专有的、实际上可能有用/重要。 您能否确认我上面提到的所有扇区实际上都是保留/专有的?

    谢谢、

    David

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 David:
    加热器控制的子类为39、而我可以在 TRM 附录中看到它标记为待定。
    保留/专有项目很重要、如果您尝试对监测计进行编程、应向它们写入数据。 许多将保留为默认值、但有些可能是自定义的。 您可以对默认的.senc 进行编程并读取这些值、然后与黄金的.senc 值进行比较、并且只写入不同的值。
    您缺少有关哪些其他参数的信息?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    大家好、

    感谢您提供加热器控制信息!

    我还想具体了解"寿命过热持续时间"、"寿命过压计数"和"寿命过压持续时间"。 它们存在于评估软件中、但不存在于文档中。 您能否给我指出一个涵盖其偏移、类型和长度的参考?

    此外、考虑到化学成分信息不包含在记录的子类中、如果我只对记录的子类进行编程、我将丢失.ROM 文件中包含的其他信息。 是这样吗?

    如果是、您能否为我提供一系列子类、以便我从器件 A 读取这些子类、然后对器件 B 进行编程以捕获所有信息?

    谢谢、

    David

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    这些位于子类59 (寿命数据)中、可能有助于您:
    整个温度范围内的寿命事件计数、30、寿命 OT 计数、U2
    整个温度范围内的寿命事件持续时间、32、寿命 OT 持续时间、U2
    整个温度范围内的寿命活动事件、34、生命周期 OT 活动、U1
    寿命过压事件计数、35、寿命过压计数、U2
    寿命过压事件持续时间、37、寿命 OV 持续时间、U2
    使用寿命过压事件激活、39、使用寿命 OV 激活、U1、
    您还可以在 EVSW 中修改它们、然后读出原始数据并查看更改了哪些内容以确认位置。

    要查找您所需的其他子类、请使用 EVSW 对化学 ID 进行编程、并读出原始数据以查看哪些子类发生了变化。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    大家好、

    这是很好的信息、谢谢!

    读取完整闪存基本上就是我计划要做的事情。 您能告诉我最大子类 ID 是什么、ID 是一个16位的数字、因此它会花费很长的时间来读取所有可能的数字吗?

    谢谢、

    David

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

    您好!

    我还刚刚注意到、存储在数据闪存中的 CC 增益和 CC 偏移值与我所期望的值不匹配。

    CC 增益在评估软件中列为5.334。 首先、这超出了 TRM 中列出的0.1-4.0范围、其次、我从数据闪存中读取的值为0x81619BD4。 我似乎无法将其解码为甚至远距离类似于5.334的数字或0.1-4.0范围内的数字。

    CC Delta 在评估软件中也列为5.334。 这也在 TRM 中列出的29、826至1、193、046范围之外、而且我也无法将闪存值0x940058A7 (尽管评估软件显示、但与上述值不同)解码为类似于5.334的数字或指定范围内的任何数字。

    这是唯一定义为浮点数的两个数字、因此我猜这里会发生一些非标准浮点数转换。 并且评估软件实际上不会反映数据闪存值...

    您能就此提供任何指导吗?

    谢谢、

    David

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

    CC 增益和 CC Delta 为 F4类型、不是 IEEE 类型。 在 SLUUAX0C 中搜索 F4、有关转换为 F4的示例、另请参阅 A.11部分。

    我认为这是所有子类的列表。 有些是多个块(32字节)。
    0
    1
    2.
    4.
    16.
    17.
    18
    19.
    20.
    21.
    32
    33.
    34两个街区
    36.
    37.
    38.
    39.
    48个三个块
    49
    56.
    57.
    58.
    59两个块
    60
    64
    65
    66
    67
    68
    80个三个块、但可能只有第一个块发生变化
    81.
    82个块、但可能只有第一个块发生变化
    83三个区块
    84三个区块
    85.
    86
    88
    89
    90
    91.
    92
    93
    94
    95
    96两个块
    97
    104.
    105.
    106.
    107.
    112
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    大家好、

    感谢您提供这两部分信息。

    如果 要转换的值等于零、所提供的算法将通过第二个"tmpVal < 0.5"循环无限循环。 是否有特定的零编码方式?

    您是否能够为我提供正确编码的浮点数示例、以便我可以检查我编写的编码代码?

    谢谢、

    David

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    整个应用手册不适用于此监测计、但本文档第12页上的浮点转换示例可能有助于:
    www.ti.com/.../slua640b.pdf

    我还找到了以下信息:
    双精度型不符合 IEEE 标准;它采用大端序、先是指数。  接下来的3个字节是尾数、其中隐含的第一位为1、因此会在数字的精度中挤压一个额外的位。  但是、请注意尾数第一个字节的 MSB 是符号位。
     
    以下是‘C’代码,用于获取4个字节,并在典型的基于英特尔的计算机(小端字节序)上将测量仪表的大端字节序转换为双字节序。
     
               uchar p[]={82、20、21、22};      //带有起始浮点的假设字节
    int s、e;
               双 x;
               union int_Byte{
                           UINT I;
                           UCHAR c[4];
               } d;
     
               e=*p++;                       //指数
               S=(*p)&0x80;                //编号符号
               D.c[3]=0;                      //因为尾数只有3个字节
               D.c[2]=(*p++)|0x80;       //翻转字节
               D.c[1]=(*p++);
               D.c[0]=(*p++);
     
               x=d.i * pow (2、e-128-24); // 128是指数的隐含符号、而24是尾数中隐含1作为高电平位
               如果
                           X=-x;               //将正确签名的值作为双精度型,采用 Intel (IEEE-)格式

    以下是一些示例对:
    六角           浮动
    00000000 1.46936793853e-39
    81800000-1.0
    81000000 1.0
    8b1a522b 1234.56774902
    8e88f5ba -8765.43164062
    94452578 807511.5
    7f5e9624 0.434739232063
    977b2169 8229044.5
    7d063fa8 0.0655511021614
    9b2b2e2a 89747792.0
    7f3efd94 0.37302839756
    962f2f49 2870226.25
    9b2f7784 91995168.0
    906c32dc 60466.859375
    963b28db 3066422.75
    7e703f1e 0.234615772963
    873a005e 93.0007171631
    841683fb 9.40722179413
    8225884f 2.58644461632
    8b22d71e 1302.72241211
    93270dbd 342125.90625
    9c158969 156800656.0
    8847c72f 199.778060913.
    893d0bbf 378.091766357
    9c72e870 254707456.0
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    大家好、

    谢谢、我的代码正常工作!

    您是否有机会查看零的表示以避免无限循环?

    谢谢、

    David
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 David:
    我不认为零点是浮点校准值的有效值、但您可以添加一个例外、使其略为非零。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    感谢您的所有帮助、我想这就是一切!