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读取数据时、是否需要在每个块后停止、或者只需重新启动即可工作?

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

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

https://e2e.ti.com/support/power-management-group/power-management/f/power-management-forum/762327/bq34z100-g1-when-reading-data-from-bq34z100-do-i-need-a-stop-after-each-block-or-will-just-a-restart-work

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

我需要从 BQ34Z100读取4个数据块  

我有4个要读取的数据块。
1、从0x00到0x13的标准块或20字节
2、块1从0x18到0x1F 或8字节
3、块2从0x24到0x3D 或20字节
4、块5从0x62到0x6f 或14字节

通常、对于单个事务、我会这样做  

(笑声)

我可以执行该操作4次、每个块一次。

(笑声)
(笑声)
(笑声)
(笑声)

查看我使用的 I2C 驱动程序、如果我将所有4条命令加载到一个事务中、它将使用 而不是 和 之间的时间差。  

(笑声)
(笑声)
(笑声)
(笑声)


这是否起作用? 或者我是否需要弄清楚如何强制 和 每个交易?

谢谢、  

基普

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

    这取决于驱动程序中的实现重新启动。

    驱动程序可以执行重新启动(但并非总是!) 作为一个停止条件、之后是一个开始条件(足够快、以至于其他器件无法在总线上置为有效)。 如果是这种情况、只要命令之间有足够的时间、它就可以工作。 首先尝试至少60至120 us 的延迟。

    如果命令发送得太快、可能会导致看门狗复位。

    如果您尝试一次读取多个参数、则执行大批量读取、然后使用数据表和 bqStudio 中给出的偏移量来解析数据可能更有利。

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

    我仍在读取驱动程序的源代码以查看其工作原理。  

    但它是由中断驱动的、因此我可以构建一个命令队列、并执行它们。  

    如果队列不是空的、它会重新启动、而不是停止和启动。  

    如果队列为空、则执行 Stop (停止)。  

    我搜索了文档"bq34z100采用 Impedance Track 技术的宽量程电量监测计" SLUSBZ58以查看看门狗、发现它列在7.2功能方框图中、但在任何其他地方都没有提及。  

    它在6.14中说、停止和启动之间的时间为66us。 重启看门狗计时器所需的时间是多少? 什么导致看门狗计时器超时?  

    正如我在前面提到的、我正在读取4个块、其中包含20、8、20和14字节的数据。 (我必须每秒读取3次)。  我无法读取更多的数据、因为它们不是连续的块、当我尝试读取块之间未定义的存储器位置时、我不知道 bq34z100会执行什么操作、所以我没有尝试。  

    看门狗计时器是基于时间还是数据? 在100kHz 频率下、4个块应花费大约6.66ms 的时间。  或在400kHz 时约为1.66ms。  那么、您告诉我这些时间将导致看门狗计时器过期并重置 bq34z100?  这对我来说毫无意义。 它看起来太快了。  


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

    我想这篇文章已经脱离了雷达。  

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

    如果在短时间内发送了太多命令、则看门狗复位计时器是一个问题、这会阻止器件为看门狗复位计时器提供服务。

    您是否遇到过重置或难以读取数据块的问题? 如果问题仍然存在、请告知我。

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

    您说我必须注意数据读取的长块。 我在第一篇帖子中告诉了你我正在阅读的内容以及为什么。 我在文档中看不到任何看门狗计时器规格、无法知道我是否会接近。

    什么是短时间内命令太多? 我需要数字、值或规格!

    看门狗定时器信息是否为 TI 公司机密信息、这就是您不记录看门狗定时器信息或告诉我它是什么原因?

    我不想遇到麻烦。 我确实希望确保我符合规格。 我不想在我们构建100、000个这样的寄存器时发现有些复位有问题、因为我们离看门狗计时器的超时太近了。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Kipton、

    有关成功进行 I2C 编程所需的时序信息、请参阅器件数据表或此视频 :training.ti.com/.../gauge-programming-fundamentals 、网址为39:55。

    每个停止和启动条件之间的最小间隔为66us
    仅当 SCL <= 100kHz 时、才允许增量写入(字节之间没有停止/启动条件)
    每秒不超过两个标准命令。 这是一个非常保守的规则、可以在使用闪存流文件(包括所需的延迟)时将其分解。

    此 FlashStream 文件是从 bqStudio 导出的 BQFS 和/或 DFFS 文件。


    看门狗计时器通常用于确保器件不会长时间停留在循环中或为请求或一系列请求提供服务。 通信具有优先级、频繁发送过多命令会阻止其他器件功能。

    看门狗计时器是需要注意的一点、但在本讨论中目前是一个红色的错误。

    如果您认为您正在触发看门狗复位、请在测试之前和测试之后使用 bqStudio 中的 RESET_DATA 命令来确定测试期间发生的复位数。


    请编写并测试您的代码、如果您遇到问题、请告知我们。

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

    谢谢。  

    问题不是写入。 问题是我在第一页中讨论的4个块读取、如果我希望它们有问题。  

    我之所以如此担心、是因为我们的团队在使用内置 I2C 硬件时遇到 bq34z100 "挂起"问题、并且在使用 MSP430F5329时没有响应。 在我到达项目之前、他们的解决方案是手动对 I2C 接口进行位通信、问题就解决了。 现在、我为另一个处理器重新编写代码、并打算在中断模式下使用内置 I2C 接口。 我正在尝试通过了解导致代码挂起的原因来防止代码出现相同的问题。 (没有人知道原因。) 如果它有一个看门狗复位、它将不会在 I2C 通信的中间对 I2C 做出响应、并且通信将挂起。 不幸的是、这是随机发生的。  在系统每秒读取3次数据时、每天会发生一次这种情况。  

    我知道看门狗计时器是什么、它有两个重要的方面。 看门狗计时器复位时间、器件将在一段时间后复位、计时器复位会从开始再次开始计时器计数。  我听到的是、在通信期间 、bq34z100中的处理器变得繁忙、无法复位看门狗计时器。  停止和启动之间的间隔时间为66us、这足以让计时器复位。 我不知道在看门狗超时之前可以进行通信(读取)的时间。 我本来以为我之前估计的6.66ms 会比看门狗定时器短得多。  

    如果情况不是这样、我必须想出一种方法、在我处于中断中时、在3个停止和启动对之间放置一个66us 的延迟。  我不喜欢中断中的延迟。 这是错误编码。 如果这是我必须跳过的圈、那么这就是我要做的。 我会弄清楚一些东西。  


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

    请测试此实现- 6.66ms 时间远小于看门狗复位计时器。 66us 只是停止和启动之间的最低要求。

    看门狗复位只是需要注意的一点-我不希望它会给您带来正确延迟和每秒发送的命令数量的问题。

    块读取是从器件读取大量数据的最有效方式。 如果在编写代码后问题仍然存在、请告诉我!

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

    我的 I2C 突然开始工作。 令我感到困扰的部分是,我不知道为什么它不起作用,为什么现在它起作用。 但这是另一个问题。  

    因此、我能够让驱动程序在命令结束时发出 Stop 命令。 遗憾的是、由于它都是由中断驱动的、因此在 STOP 和新 START 之间只有11.5us。  

    虽然我不愿意这样做、但我在时间上已经在一个中断中等待、所以现在停止和启动之间的延迟正好是67 us (比良好测量的最小延迟多1 us)。  

    每333ms 读取一次我需要的所有数据、现在在100kHz 时花费14.66ms。在停止和启动之间、读取4个块、读取间隔为67us。  

    我接下来要做的是查看该处理器是否具有我可以用于67 us 延迟的额外计时器、以及该计时器将如何工作。  

    感谢你的帮助。