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.

[参考译文] BQ25892:偶尔停止 ADC 转换

Guru**** 2390975 points
Other Parts Discussed in Thread: BQ25892

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

https://e2e.ti.com/support/power-management-group/power-management/f/power-management-forum/1486453/bq25892-stops-adc-conversions-on-occasion

器件型号:BQ25892

工具/软件:

您好!  

我希望有人能帮我解决我在 BQ25892中看到的问题。BMIC 通过 I2C 连接到主机 MCU、并且主机 MCU 在上电时写入配置。  
 如果新的 ADC 转换已完成、主机 MCU 会继续轮询 CONV_START 标志 ro 检查、然后主机 MCU 会读取所有分配的 ADC 寄存器以获取电源状态
然后、主机将此记录到控制台、此处显示了一个示例状态:  

Status
--------------
State     : Not charging
Mains     : Fault (0)
VBus      : 2600mV
VSys      : 3704mV
VSys(min) : 3000mV
Batt      : Connected (0)
Capacity  : 50%
VBatt     : 3684mV Avg=3704mV
IBatt     : 0000mA Avg=0000mA
Temp      : 22.6°C

Faults
--------------
Watchdog  : Ok (0)
Battery   : Ok (0)
Boost     : Ok (0)
Thermal   : Ok (0)
Charge    : Ok 
   Input  : 0 
   Timer  : 0 
   Therm  : 0 
NTC       : Ok 
   Cold   : 0 
   Cool   : 0 
   Warm   : 0 
   Hot    : 0 

我有时注意到、我测试了一些电池、表明 ADC 在不引起任何故障或以任何方式指示其不进行转换的情况下停止转换。
唯一的表示是 ADC 转换标志(CONV_START)不清除它以指示 ADC 转换已完成。
可以通过 I2C 精细命令来检查(读取和写入)芯片寄存器。 该芯片也可以进行软复位、但这没什么区别。
让它按预期开始运行的唯一方法是取出电池 移除 VBUS。




以下是 突出显示了电池和 PSU 连接的 BMIC 电路原理图。



与默认设置不同的唯一设置如下:

// BQ25892 Register settings
#define BQ25892_REG03_SETTING 			0x5A		// Reset the watchdog, Min system voltage (Vsys min) set to 3.5V (default)
#define BQ25892_REG07_SETTING 			0x8D		// Disable the watchdog
#define BQ25892_REG00_SETTING 			0x3A		// Disable the ILIM pin which is used to set the current limit to 829mA (390/470R). Set max input current limit to 3A 
#define BQ25892_REG04_SETTING 			0x0B		// Fast charge current limit set to 704mA
#define BQ25892_REG05_SETTING 			0x02		// Precharge current limit set to 64mA, Termination charge current limit set to 192mA
#define BQ25892_REG02_SETTING 			0x5D		// Start a continous ADC conversion



所有寄存器的寄存器转储可在此处找到:

Registers 
--------------
Address 0x00: 3A
Address 0x01: 06
Address 0x02: DD
Address 0x03: 1A
Address 0x04: 0B
Address 0x05: 02
Address 0x06: 5E
Address 0x07: 8D
Address 0x08: 03
Address 0x09: 44
Address 0x0A: 73
Address 0x0B: 56
Address 0x0C: 00
Address 0x0D: 12
Address 0x0E: 47
Address 0x0F: 47
Address 0x10: 5B
Address 0x11: 98
Address 0x12: 00
Address 0x13: 3A
Address 0x14: 05


任何帮助或指导都将非常感谢

此致
Trevor

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

    您好、Trevor、

    感谢您的联系。 我将于明天2013年3月3日回顾并跟进。

    此致、

    Alec

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

    您好、Trevor、

    感谢您分享原理图和寄存器转储。

    正确的是、当 ADC 处于连续转换模式时、CONV_START 位会更新以指示何时正在进行转换。 听起来在大多数情况下、您都能够使用此行为记录器件的 ADC 读数、但有时 CONV_START 位保持为1、这意味着您无法记录 ADC 读数。 我对问题的理解是否正确? 这种行为似乎出人意料。

    您还注意到、不同的电池会出现此问题。 虽然我不认为电池本身是根本原因、但电池电压当然会影响其行为。 如数据表的第8.2.8节所述、仅当 VBAT > SYS_MIN 时、ADC 测量才会激活。 根据提供的寄存器转储、您的 SYS_MIN 设置似乎为3.5V、并且电池电压读数约为3.7V、但这种情况是否总是如此?

    您轮询 CONV_START 的频率如何? 我想知道这是否与软件相关。 CONV_START 可能按预期更新、但您在轮询的时间可能导致它看起来卡在1。

    您还提到、移除输入源或电池可解决问题。 您能否澄清一下、该问题是否仅在同时连接输入源和电池时才发生? 或者、在移除并重新连接输入源之前、问题是否一直存在? 发生此问题时、输入电压和电池电压是多少?

    此致、

    Alec

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

    您好、Trevor、

    我想检查您是否仍需要有关此问题的帮助。 如果您有任何更新或其他问题、请告诉我。

    此致、

    Alec

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

    尊敬的 Alec:

    感谢您发送编修。我们会重新检视您的建议。 并为延迟的答复道歉..

    我将尝试按顺序回答您的问题。

    1.是的、您的理解是正确的、我们记录了 BQ25892的 ADC 读数;是的、有时 CONV_START 位保持为"1"、这意味着我们无法再记录读数。 在移除 VBUS 或电池之前、这不会恢复。

    2.我看到这个问题时的电池电压在~3.7-4.0v 之间变化。

    我们的应用要求电池在3.5V 至4.2V 的电压范围内工作。

    我还应该补充一点、当存在 VBUS 时、我们将 SYSMIN 设置为3.5V、而移除 VBUS 后、我们将其设置为3.0V。

    3.我们每秒轮询 CONV_START。您对轮询提出了一个有趣的问题、如果我理解您正确、您会说 CONV_START 将在每个 ADC 对话周期中设置并自行清除、无论该位是否被读取。如果这种情况下、我们的逻辑中肯定有一个空洞。  

    因此、在任何情况下、我都需要解决此问题、即使这不是根本原因问题。  

    我会重新测试、让您知道我的调查结果  

    4.只有在连接了 VBUS 和电池的情况下才会出现问题,如果其中一个断开,问题就会消失。

    发生这种情况时、VBUS 为4.8V、电池电压为3.7V 至4.0V

    我在接下来的10天里不在办公室、但一回来、我就会重新测试第3点的修复方法、并告知您我的发现。

    此致

    Trevor

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

    尊敬的 Trevor:

    感谢您提供的信息。 我们可以在您回来的时候继续。

    此致、

    Alec

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

    尊敬的 Alec:

    我又回到了这个问题、我对上面的第3点实施了修复。

    我更改了代码以执行一次性 ADC 转换(如下面的 DS 片段中所述)、即 CONV_RATE 保持清除状态、该代码设置 CONV_START 位以开始转换、然后 每秒轮询 CONV_START 位、直到它清除以指示转换已完成。
    读取并解析寄存器、然后重新开始该过程。

    很遗憾、这无法解决我看到的问题。  





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

    尊敬的 Trevor:

    感谢您的联系。

    转换时间(tconv)为8ms (典型值)、 但我看到数据表说明提到了最大1s。

     如果再次设置 CONV_START 位、则每秒轮询很可能太慢、无法捕获到 CONV_START 位的清除。

    此致、

    Alec

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

    尊敬的 Alec:  

    感谢您的答复  

    我更改了代码以执行单次 ADC 转换。我的理解是、在使用此方法时、当我设置 CONV_START 位来开始转换时、在转换完成后不会执行任何其他转换、直到我再次明确设置该位为止。在这种情况下、我轮询我只需要等待该位太清零的频率都无关紧要?  

    此致  

    Trevor  

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

    尊敬的 Trevor:

    是的、您的理解是正确的。 当 ADC 处于单次触发模式时、您可以设置 CONV_START 以启动转换、并且在转换完成后该位将自动清除。

    这似乎是一种 比在连续模式下轮询 CONV_START 更简单的方法。

    此致、

    Alec

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

    感谢您的确认、Alec。

    遗憾的是、这似乎对我遇到的问题没有任何影响。

    扼要重述:

    我当前将电池与 VBUS 一起连接到系统、在该设置中、ADC 转换似乎会停止、并且 CONV_START 位保持设置。 但是、如果我取出电池、ADC 转换会恢复。 同样、如果断开 VBUS、转换将再次开始工作。 但两者都连接后、问题仍然存在。

    您是否知道在这些情况下设置 CONV_START 保持时间后 ADC 转换可能会停止的任何其他可能原因?

    再次感谢您到目前为止的帮助

    此致

    Trevor





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

    尊敬的 Trevor:

    CONV_START 位在输入源检测期间保持高电平、 因此 您可能看到的行为与此相关。

    了解此问题仅在连接 VBUS 和 BAT 时发生、会有所帮助。 我 仔细检查了您的寄存器转储和原理图、但我没有看到任何明显的问题。

    我将进一步研究这一点、并尝试在 EVM 上重新创建此行为。

    如果有任何其他重要信息需要知道、请告诉我。 我感谢您迄今为止分享的所有内容。

    此致、

    Alec

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

    尊敬的 Alec:

    在  CONV_START 位卡住的情况下、我对 VBUS、VSYS 和 VBAT 进行了一些布线。


    这是设置 CONV_START 并保持设置状态的布线。  
    VSYS 和 VBAT 每~43ms 有一个骤降。 我确定这是否有帮助、甚至是相关的  

    在这里进行比较时、情况通常是这样



    再次感谢你的帮助到目前为止。 周末愉快!

    此致

    Trevor

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

    尊敬的 Trevor:

    感谢您分享这些波形。  它们非常有用、与您看到的 ADC 行为相关。

    BQ25892中的 ADC 通过在一段时间内对输入信号进行采样并对这些样本求平均值来生成稳定的读数。 为了使该过程正常工作、输入(例如 VBAT)需要在采样窗口期间保持相对稳定。

    如果 VBAT 纹波过大或正在快速变化、则 ADC 无法根据有效结果稳定下来。 由于输入在 ADC 尝试测量时变化过大、因此最终读数可能无法准确反映真实电压、或者根本无法生成有效读数。

    您知道问题发生时波形中振荡的原因是什么吗? 例如、是否启用了脉冲负载? 如果我们可以使这些波形更清晰、 则可以解决 ADC 问题。

    还有一个美好的周末!

    此致、

    Alec

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

    尊敬的 Alec:

    似乎出现问题的电池与板载连接器接触不良。 一旦连接得到正确保护、它就会再次开始工作。

    根据我之前对 ADC 测量的经验、采样应该只捕获采样时的输入电压、输入信号的形状应该无关紧要。 您描述的行为是意料之外的、有点令人担忧、因为它表明电池可以连接但无法正确接触、无法轻松检测这种情况。

    监测此情况的一种可能方法是在代码中实施保护计时器。 可以在每个 ADC 间隔复位计时器、如果 ADC 长时间停止转换、则可能会引发故障。

    我对您对此的想法感兴趣

    此致

    Trevor

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

    尊敬的 Trevor:

    BQ25892中的 ADC 专为对缓慢变化的直流信号(常见于电池充电器应用)进行高精度测量而设计。 因此、当输入信号快速变化或不稳定时、需要权衡内在因素。

    本文更详细地对此进行了介绍: Δ-Σ ADC 的工作原理、第1部分

    您的想法听起来像是一个合理的软件解决方案 、用于标记潜在的电池松动连接。   您的应用程序中是否会出现您期望的松动连接? 只是为了确认、您是否只看到 ADC 停止使用这个特定的电池进行转换?

    此致、

    Alec

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

    谢谢、Alec。

    通常不会出现松动的连接器、因为将电池连接到主 PCB 的连接器通常非常适合、在我们的应用中也不会频繁拔出。 但是、由于我使用这款电池进行测试、并且反复插入和拔下、因此可能是端子稍微松动了。 因此、连接可能不会像往常一样稳定。

    到目前为止、我只观察到这个特定电池存在这个问题。

    此致
    Trevor

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

    尊敬的 Trevor:

    明白了、 这是有道理的。 听起来电池连接松动是导致此问题的根本原因。

    如果您有任何其他问题或遇到任何其他问题、请告诉我。

    此致、

    Alec

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

    谢谢 Alec。  

    此致