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:从 UC 配置器件

Guru**** 2867040 points

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

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

https://e2e.ti.com/support/power-management-group/power-management/f/power-management-forum/1638968/bq34z100-g1-configuring-the-device-from-a-uc

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

我在 BLE 中使用 bq34z100-G1 gg 来连接包含 3s2p 锂离子电池组的有线串行桥接器件。

我的产品名称是 MantaMobile Plus(现有产品的更新)

我的电路板上包含 gg IC、我想使用用户命令。  硬件架构为:

应用<-- BLE --> DA14531MOD <-- APP/Tx --> Rx <-- APP/Tx --> Rx 收发器<-- APL/Tx Rx (RS232/485)-->有线设备

 

UC 通过 I2C 连接到多个器件:

  • 大气压力传感器
  • 电量监测计 IC (bq34z100-G1)

 

我有一种终端模式(有线侧)、可以在其中配置设备。  其中一个配置步骤是配置电量监测计。

 

因此、我想配置 Design Captity 和其他设置。

bq34z100-G1 尝试更新 DF.pdf 

 

为什么写否定应答?

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

    现在我只是尝试配置一个子类 (48)。  我正在执行 2 次块读取、以检索所有 64 个字节。  现在、我不修改 RAM 中的字节、然后将块写回。  现在、尝试写入前 32 字节块被否定确认

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

    我的 SCLK 速率是 100kHz(在上面的捕获结果中  bq34z100-G1 尝试更新 DF.pdf )

    我将时钟速率降低到了 75kHz、得到了相同的结果。

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

    这可能与您的时钟速率无关。 我建议将 bqStudio 和 Advanced Comm 与 TI EV2400 和 bq34z100 EVM 以及 I2C 监听器配合使用、以检查 TI 工具链的功能有何不同。

    以下是使用 bqStudio 和 Advanced Comm 时的示例:

    将 32 个字节写回电量监测计时没有 NACK。

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

    Dominik、

    感谢您的答复。  我添加了逻辑分析仪捕获结果(点击本主题中我之前文章中的链接)。  我尝试安装 bqStudio、它缺少 OCx 文件。  我真的不打算使用 bqstudio 进行配置、也不打算使用许多其他事务处理。

    我注意到、您执行的交易与我尝试的交易不同。

    您的模式是:

    通过使用 subcmd 0x3E 将数据 0x30 0x00(两个字节)写入来设置读取

    通过写入子命令 0x40、然后读取 32 个字节来读取块

    然后、您要通过执行以下操作来写回块:

    ???? 通过将 subcmd 0x60 与数据 0xD8 写入  (这可能是问题)   <--我使用 subcmd 0x61、而我在读取之前使用它、而不是写入  

    然后、通过将 subcmd 0x3E 写入数据 0x30 0x00(两个字节)来设置写入  

    然后写入 32 字节块。

    我将更新我的固件并重试。

    谢谢!

    Wayne

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

    有趣的事实 我是 EV2300 硬件和固件的原始设计人员。  我曾与 Bill Clark、Fred Christwell、Dan Poole、Gary Elder、Ed Matthews Brian Lum Shue Chan 和其他人。   1998 年至 2006 年之间

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

    我重新设计了固件。  我认为我了解到、我必须为即将发送的块提供 CS。

    大局。  我想通过更新以下字段中的字段来设置电量监测计:
    DF_SUBCLASS_CONFIG_DATA (48)
    DF_SUBCLASS_CONFIG_CHG (34)

    DF_SUBCLASS_CONFIG_DSG (49)

    我会做其他子类。  现在、 我使用一对函数来读取 DF 和写入 DF:

    GG_DFRd ()

    GG_DFWr ()

    这些函数在函数 GG_DFUpdateAndWr () 中使用。

     GG_DFUpdateAndWr () 处理的进程是:

    读取该子类的 64 字节块(对  GG_DFRd () 的两个调用)

    根据需要修改字段(立即跳过)

    为该子类写入 64 字节块(对  GG_DFWr () 进行两次调用)

    GG_DFWr () 还计算 CS 并将其写入 subcmd 0x60

    我的 FW 按顺序一次对每个子类块执行 RMW 操作:

    1) DF_SUBCLASS_CONFIG_DATA (48)<---成功
    2) DF_SUBCLASS_CONFIG_CHG (34) <-- 在尝试写入 CS 时失败。  GG NACK  

    3) DF_SUBCLASS_CONFIG_DSG (49) <---成功

    以下文档详细说明了事务并显示了出现意外 NACK 的位置:

    e2e.ti.com/.../bq34z100_2D00_G1-Wr-FAIL-2.pdf

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

    0x60 是校验和寄存器。

    如果您写入 0x60 时的数据校验和正确、电量监测计将从您使用 0x40++访问的缓冲区触发内部数据传输。 因此、如果您没有编写校验和、这将失败。

    [编辑以删除对 0x61 的错误引用 — 这适用于另一个电量监测计,而不是 bq34z100]。

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

    感谢大家分享这个细节。 我只认识这个名单上的两个人。 我想我们不得不弃用 EV2300、因为主控制器已停产。 我曾经 在 20 世纪 80 年代的 LOL 中编写过 8052 汇编代码。  

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

    几年前、我撰写了一份文档、其中实现了 bq34z100 使用的访问方法(已针对其他电量监测计进行了验证,但该过程是相同的)。

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

    块大小仅为 32 个字节。

    该电量监测计通信协议的基本原理是:

    *电量监测计在 RAM 中有一个 32 字节的缓冲区,您可以使用命令 0x40..0x5F 进行访问
    *此缓冲区保存“子类“和“块“的配置数据。 您可在 bqStudio 中找到每个参数的子类和块。 参数的偏移量是此 32 字节缓冲区的偏移量。
    *您可以使用命令 0x3E 选择子类,使用命令 0x3F 选择块。

    在写入 0x3E 和 0x3F 后、电量监测计会将该子类和块的数据复制到其 32 字节缓冲区中、您可以从 0x40++中读取该数据

    如果您想要更改任何内容、则可以写入此缓冲区。 但是、它只是位于该缓冲区中、不会产生效果。 则必须触发将此缓冲区复制到闪存。 这是通过将校验和写入 0x60 来完成的。

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

    Dominik、

    我认为、一般而言、我了解这是如何工作的。  我被卡住的地方是,我看到了“随机“(至少对我来说)的 nacks。   

    在您撰写和分享的文档中:

    我正在尝试相同的操作(但我使用子类 48、0x30)。  在我的实施中、操作在列表的步骤 (4) 中失败。  失败的原因对我来说是未知的、因为症状是 bq34z100-G1 否定确认块的第二个字节(第 1 个字节为确认、第 2 个字节为否定确认)。

    我发送的内容是:
    S AA+WR A 3E A 30A 00 A P
    S AA+WR A 40 A 10 A 00 N P <--为什么 gg 否定第二个字节?

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

    我不能说为什么它否定这个。 然而、写入 0x3E/3F 将触发缓冲区复制过程、考虑到电量计 CPU 的速度有多慢、这可能是一个时序问题。 电量监测计应在未就绪时进行时钟延展(确保您的主机 UC 支持时钟延展)、但我无法确定它是否也不需要一些延迟。 由于 FS 文件中每一行的 USB 开销、bqStudio 相对较慢。 这与使用 UC 的情况不同。

    我建议在写入 0x3E/3F 之间增加几 ms 的延迟。

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

    我认为、设置子类和读取/写入数据之间的延时为 1ms 至 2ms 可以有所不同。