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.

[参考译文] BQ76930:库仑计数"单个快照"问题

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

https://e2e.ti.com/support/power-management-group/power-management/f/power-management-forum/623654/bq76930-coulomb-counting-one-shot-question

器件型号:BQ76930

我想使用库仑计数作为简单的电流测量、即知道已经计算了250ms 的库仑值、我可以将其乘以4以获得电流指示。

如果我设置 CC_OneShot 位、那么每次清除 CC_READY 标志时、库仑计数器是否会复位为零?

(或者、我是否需要从新的库仑读数中减去旧的库仑读数?)

谢谢、

Mike

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 Mike:
    库仑计数器是一个积分转换器、而不是采样转换器、因此其值表示以该时间单位传递的电流。 您不知道结果是来自连续值还是具有一个或多个峰值的低值、因此通常只使用该值作为电流、而不是尝试计算时间。
    每个一次性值都是一个读数、因此不需要减去。 如果您具有1A 的连续电流、则读数应与通过感应电阻器的1A 电平相对应。 稍后对同一电流的另一个读数应显示相同的1A 值、您不想将其减去。
    要对库仑进行计数、您需要连续运行 CC、对值求和并考虑时间单位。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    谢谢、我认为这就是它的工作方式。

    我喜欢将 CC 寄存器值用作电流的想法、我可以将读数校准为已知电流、只需将其保持在已知电流。

    再次感谢。

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

    我正在努力使"一次性"功能发挥作用。

    我的代码执行此操作:

    将 SYS_CTRL1初始化为0x18 [设置 ADC_EN、设置 TEMP_SEL]
    将 SYS_CTRL2初始化为0x20 [设置 CC_OneShot、清除 CC_EN]
    读取 SYS_STAT [以获取 CC_READY 位]

    如果(CC_READY)

    在一次读取中读取 CC_HI 和 CC_LO。
    将0x80写入 SYS_STAT 以清除 CC_READY
    将0x2n 写入 SYS_CTRL2以设置 CC_OneShot (n= CHG&DSG 位的当前状态)

    我遇到的问题是从未设置 CC_READY、因此我不读取任何电流。

    数据表表示、在设置 CC_OneShot 之后、将自动设置250ms CC_READY、但我从未看到它被设置。

    有什么想法吗?

    提前感谢

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 Mike:
    单次触发函数意味着您需要单次读取、因此在设置 CC_OneShot 之前、CC_Ready 应从先前的读取中清除。 这可能已经完成、或者您在检查时会看到它。
    OneShot 读取需要250ms 的采集时间、从简单的数据表读取中、您似乎可以等待250ms 查看状态位和值、 但是、器件中的调度程序位于固定的时间轴上、因此 CC_OneShot 位写入必须与内部250ms 时间轴同步。 如果写入恰好在调度启动之前、CC_READY 应该在250ms 时变为高电平、如果写入刚刚错过了间隔、CC_READY 将在500ms 内不会变为高电平。 转换完成后、还应清除 CC_OneShot。
    警报应在 CC_READY 时变为高电平、如果需要指示正在发生的情况、您可以查看具有示波器的硬件信号。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    感谢您的回复、

    我应该说我的“if (CC_READY){}”测试在250ms 的循环中。 我预计延迟可能会达到500ms 左右、但我从未见过任何东西。

    我已经查看了 ALERT 引脚、它也从未变为高电平。 我想这告诉我一些  

    不过、CC_OneShot 位会清除、因此我的代码中的某个位置必须存在一个错误。 我将继续挖掘。

    感谢您的评论——这有助于您了解*应该*如何工作!

    Mike

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 Mike:
    您可能会在该过程完成之前查找 SYS_CTRL2的意外写入、该写入会清除 CC_OneShot。 然后、器件将中止采集、而不设置 CC_READY 或 ALERT。 当然、每个人都有自己的调试技术、但是通信信号上的示波器或总线分析器可能会显示意外的情况。 不会出现逻辑故障、功率损耗可能会导致这种情况、但应显示在其他位上、并且可能也会影响您的 MCU。