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:解析并使用 DF FS 文件更新参数

Guru**** 2448780 points
Other Parts Discussed in Thread: BQSTUDIO, BQ34Z100

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

https://e2e.ti.com/support/power-management-group/power-management/f/power-management-forum/665755/bq34z100-g1-parsing-and-using-the-df-fs-file-to-update-parameters

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

我有一个从 bqStudio 生成的 df.fs 文件。 我找到了解析器和内容说明。 我没有找到一种方法来验证我所做的实际上是正常工作、如果不是错误的。  我得到、进入 ROM 模式后、I2C 地址从 AA 更改为16、因此进出操作易于验证。 中间的东西不是很容易。 我正在使用类似的行执行的操作

W:16 00 03 00 00

在递增地址处将其分解为单独的 I2C 字节写入、如下所示

从器件地址16处

将数据03写入地址00

将数据写入地址01

将数据写入地址02

我使用每条 W 线执行该操作。 器件按预期以 ACK 进行响应

然后、当我获得 C 时、我会执行类似的操作

C:16 66 00

变为

从器件地址16处

读取地址66

将返回的字节与00进行比较

一切看起来都很棒、直到我看到如下所示的线条:

C:16 04 B5 44 6A D4

在这种情况下

从器件地址16处

我连续读取04、05、06、07的一个字节

我似乎总是从每个字节中获得全部00

您能解释一下我的方法的错误吗?

谢谢

 

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

    C 命令表示读取和比较一个或多个字节的数据。

    对于 C:16 04 B5 44 6A D4

    4字节 B5、44、6A 和 D4预计将从器件在0x16寻址的寄存器地址0x04中读回。 如果从寄存器0x04读回的内容不匹配、则应抛出错误。

    有关 DFFS 格式的更多信息、请参阅 :www.ti.com/.../slua541a.pdf

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

    好的。 我发现这是错误、但错误的根本原因是什么? 在我描述的导致错误的步骤中、我可能会做些什么? 我看到从0x04返回的所有零。  

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

    对于 I2C:

    读取和比较命令的格式与写入命令相同。 显示的数据
    此命令与读取的数据完全匹配、否则操作将停止并向用户指示错误。
    此序列的格式为:
    "C:i2cAddr RegAddr Byte0 Byte1 Byte2"。

    此命令的示例如下:
    C:AA 55 AB CD EF 00

    此示例要求主器件从寄存器地址0x55读回4个字节
    地址为0xAA、然后将数据与行命令中给出的值进行比较
    顺序为0xAB、0xCD、0xEF 和0x00。

    创建 DFFS 解析器的另一个好资源是本文档: www.ti.com/.../slua801.pdf

    假设器件之间的代码和通信良好、请向我发送您的 SREC 和 DFFS、以便我可以在内部进行测试。

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

    我有一个 df 解析器、我认为它运行正常。 我只加载 dff 而不是 srec、因为我在该板上发现了多个源、建议在正常器件中不需要加载 srec。 我想知道为什么66寄存器中的状态总是良好的、但04总是糟糕的。 这必须是一些提示

    如何向您发送 DFFS 文件

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

    请将 srec 和 dffs 文件压缩并将其附加到此主题中。

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

    我认为我找到了问题的根本原因

    (1)我从示例中抓取的 df 解析器代码具有静态定义为64字节的 df 行长度。 尽管这对于最初为其编写的任何器件而言可能已经足够了、但 BQ34Z100的线路长度很容易达到原来的两倍。 写入的代码会忽略额外的数据。 这导致器件只被部分编程、从而导致器件被欺骗。

    (2) X 记录中规定的延迟时间不足以完成之前的作业。 这导致状态检查和比较失败。 我发现有一些延迟被指定为2 (msec)、我必须将其增加到200或更多才能通过。 也许目的是每2毫秒轮询一次? 但是、似乎应该指定某个最大值

    我已附上我的 df.fs filee2e.ti.com/.../df.zip