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.

[参考译文] 只需启用 CHG 和 DSG FET?

Guru**** 2559250 points
Other Parts Discussed in Thread: BQ27Z746, BQSTUDIO

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

https://e2e.ti.com/support/power-management-group/power-management/f/power-management-forum/1122472/simply-enable-both-chg-and-dsg-fets

器件型号:BQ27Z746
主题中讨论的其他器件: BQSTUDIO

当我们推出新电路板时、我们需要 基本上禁用 BQ27Z746 (但将电池保持连接到 PACKP)。  哪些 命令/设置可 确保启用 CHG 和 DSG FET 驱动器线路?

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

    我意识到我应该稍微细化我的问题:是否有办法确保在启动时启用 CHG 和 DSG FET 驱动器?

    除非连接了电池、否则我们的处理器将无法启动。  启动后 、处理器 将能够向 BQ27Z746发送 I2C 命令 、以根据需要进行配置。  但它需要连接电池才能启动。

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

    您好、Robert、

    我仍对您在这里的问题有一些疑问。 您说过要在启动时禁用 BQ27Z746、但需要启用 FET。 发送 FET 使能命令将确保 FET 导通。 让电池连接到 PACK+将打开电量监测计、这样可能会使您在启动时禁用电量监测计的要求变得更加复杂。 您能不能更清楚地说明您在这里需要执行的操作以及您为什么需要在启动时禁用 BQ27Z746?

    谢谢、

    杰克逊

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

    杰克逊:

    感谢您的回复。  当我说我想要禁用  BQ27Z746时、我讲错了。  

    正如我已经阅读(并重新阅读)该规范、似乎我确实希望 在 BQ27Z746 首次加电时启用它。  换言之、如果电池中有足够的电量、将为 PACK+项启用 CHG 和 DSG FET、以从电池获取电源。 (凭经验、似乎我现在使用的芯片未配置为在启动时启用。)

    我还没有想到的一点是:配置 要在启动时启用的 BQ27Z746必须是一种"粘滞"配置、即写入非易失性存储器而不是 RAM 中、因为处理器直到 启用 BQ27Z746才能唤醒。

    您能否将我指向将配置 BQ27Z746以在启动时启用的寄存器和位?   

    非常感谢。

    -RDP

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

    您好、Robert、

    不用担心、我只是想确保我理解您在这里的意图。 为了在启动时启用 FET 以便为 PACK+供电、请使用位4中0x0057 ManufacturingStatus(ManufacturingStatus)(0x0057 ManufacturingStatus())中的 FET_EN 命令。 如果您在 BQStudio 中更改此位、然后单击  Write All、则应将此值保存到非易失性存储器中。

    谢谢、此致、

    杰克逊

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

    如果 BQStudio 只能访问该芯片!  :) 它安装在定制 PC 板上,其 I2C 总线由 Raspberry Pi 控制,通过 WiFi 和 ssh 访问。  我将找出等效的 python / smbus 命令来写入和保存 FET_EN 位。  (如果我不在这个过程中混合芯片的状态!)

    我将接受这一答案作为正确答案。  如果我在尝试将该位保存到非易失性存储器时遇到困难、这将是一个单独的问题。

    谢谢!

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

    接下来的问题(尽管我说我不会!):我已经设置了 FET_EN;我按预期读回寄存器0x0057上的0b1111。

    但很明显、两个 FET 中的一个未打开:我测量的是电池上的3.2V 电压和 PACK+上的4.4V 电压、因此很明显、它们不会同时打开。  在这种情况下、要连接它们、必须满足哪些条件?

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

    您好、Robert、

    这种行为的一个可能原因是保护功能可能处于激活状态、从而防止任一 FET 打开。 如果您读取 xchg 和 XDSG 位的状态、这将告诉您监测计是否有意关闭其中一个 FET。 即使电池充满电、CHG FET 也可能被特意禁用。 当您尝试同时打开两个电源时、电池的状态是什么?

    谢谢、

    杰克逊

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

    再说一次,你是对的--谢谢你!  下面是 OperationStatus 寄存器的转储。  器件似乎处于睡眠模式、这一点(AFANIT)解释了为什么 xchg 和 XDSG 为真。  

    要回答您的问题、电池电压为~3.6V。

    显然、我现在需要学习如何唤醒野兽...

    Operation Status:
      SLEEP: SLEEP mode conditions met: 1
      XCHG: Charging disabled: 1
      XDSG: Discharging disabled: 1
      SS: SAFETY status: 0
      SDV: SHUTDOWN mode triggered from a low cell voltage: 0
      SEC1: Security bit 1: 0
      SEC0: Security bit 0: 1
      Battery Trip Point Interrupt: 1
      SHELF mode: 0
      SHIP mode: 0
      Zero Volt Charging Status: 0
      CHG FET Status: 0
      DSG FET Status: 0
      SHIP mode triggered low cell voltage: 0
      SHELFV: SHELF mode triggered through low voltage: 0
      SHIPM: SHIP mode triggered through command: 0
      SLPAD: ADC measurement in SLEEP, SHIP or SHELF mode: 0
      INIT: Initialization after full reset: 0
      SHELFM: SHELF mode triggered through command: 0
      XL: 400 KHz mode: 1
      CAL: Calibration output (raw ADC and CC data): 0
      AUTH: Authorization in progress: 0
      SDM: SHUTDOWN mode trigger4ed through command: 0
    

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

    我意识到、我没有充分解释系统设置、这可能很重要。

    • 该电池是18650锂离子电池、主要用作 RPi4的备用电池。
    • PACK+连接到 USB 电池控制器芯片的"电池"端子
    • RPI4连接到 USB 电池控制器芯片的"负载"端子(通过升压稳压器)
    • USB 电池控制器芯片的"USB"端子连接到电源(在这种情况下、POE 稳压低至5V)

    如果发生电源故障、RPi4需要依靠电池运行、则 BQ27Z746必须启用其 FET。   

    当 PACK+电压为4.2V (即电源可用时)时、我观察 到 BQ27Z746已禁用 FET。

    当 PACK+电压降至(实质上)零时、我无法观察 到 BQ27Z746的状态(因为 RPi4已断电)。

    我想我需要的是 让 BQ27Z746启用其 FET、至少在 PACK+< VBAT 的情况下启用 FET、以便 Rpi 能够运行。  只要 RPI 正在运行、如果 VBAT 下降得太低、我就可以安全地将其关闭。

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

    您好、Robert、

    再次感谢您的详细回答。 我刚刚在实验室中使用基于 BAT 和 PACK 的源电表测试了此设置、以模拟您之前描述的3.6V BAT 和4.2V 电池组连接。 我注意到我的终端上的一切都按预期正常工作。我怀疑这里的问题是、我的源电流限制在1A、我假设您的设置中不存在该限制。 可能会发生的情况是、PACK 和 BAT 之间的电压差消耗的电流太大、以至于它会使监测计上的过流保护跳闸并关闭 FET。

    至少根据您到目前为止向我介绍的内容、我希望 FET 导通、器件正常工作。 我会查看这种过流保护或其他任何保护是否是导致 FET 被监测计强制关闭的原因。

    谢谢、

    杰克逊

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

    感谢您的深度挖掘。  我没有提到(而且应该提到) PACK+线路上有1.5F 超级电容器、旨在消除对电池的任何重大冲击。  当系统通电时、它们的电压为4.2V。  移除电源 POE 电源后、它们将降至~1.2V。

      如果不深入了解、BQ27Z746 会在两种情况下(充电或放电)产生较大的电流、并决定使 FET 跳闸、这会让我感到非常震惊。   

    如果您同意这可能是问题、是否有方法(a)确认这就是 FET 关断的原因、(b)覆盖保护的这一部分?

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

    一些附加信息(现在我可以打印状态位)。  我注意到温度报告为328.2K、也称为55.05C、这可能说明 HT 位被置位。 我们的系统具有一个外部10K 热敏电阻、该热敏电阻与电池物理接触。  虽然电池感觉很热、但这不是问题所在。  相反、PCB 背面的一些组件会发热、这可能会使热敏电阻升温。   

    有什么想法?

      0x0000 Control/Status: 0x0208 (0b0000001000001000) (520)
      0x0006 Temperature: 0x0cd2 (0b0000110011010010) (3282)
      0x0008 Voltage: 0x0de8 (0b0000110111101000) (3560)
      0x000a Battery Status: 0x00c0 (0b0000000011000000) (192)
      0x0028 Internal Temperature: 0x0c77 (0b0000110001110111) (3191)
      0x0030 Charging Voltage: 0x0000 (0b0000000000000000) (0)
      0x0032 Charging Current: 0x0000 (0b0000000000000000) (0)
      0x0034 Terminate Voltage: 0x0bb8 (0b0000101110111000) (3000)
      0x0057 Manufacturing Status: 0x0000 (0b0000000000000000) (0)
    

    Charging Status:
      OT: Overtemperature range: 0
      HT: High temperature range: 1
      STH: Standard temperature high range: 0
      RT: Recommended temperature range: 0
      STL: Standard temperature low range: 0
      LT:  Low temperature range: 0
      UT: Undertemperature range: 0
      NCT: NCT: 0
      CV_DGRD: Charge degradation 1: 0
      CV_DGRD: Charge degradation 0: 0
      VCT: Charge termination: 0
      SU: Charge suspend: 0
      IN: Charge inhibit: 1
      HV: High voltage region: 0
      MV: Mid voltage region: 0
      LV: Low voltage region: 1
      PV: Precharge voltage region: 0
    

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

    很棒的地方! 在尝试充电时、过热保护的默认值为55C、在低于50C 时不会恢复。 您可以将数据闪存中的此值更改为更高、以避免此问题。 我认为您应该首先检查该问题、看看它是否是问题的根源、因为它是一个简单的快速解决方案。 如果温度不是唯一的原因、我们可以坚持下去、并尝试解决可能使 FET 保持禁用状态的任何其他情况。

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

    实际电池温度由电池控制器芯片进行监控(和保护)、因此外部热敏电阻实际上是冗余的。  鉴于电路板背面的热组件、我认为更简单的解决方案可能是将温度使能闪存配置寄存器设置为"00"(禁用)。   

    请告诉我、您是否看到了这方面的任何问题。  同时、我将尝试不进行闪存设置的 clobber!  

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

    [对上面的一个修正:我从未更新过状态:温度使能闪存寄存器的默认值、因此我怀疑它实际上读取的是内部芯片温度、而不是我们的外部热敏电阻。  这对我们读取高温的原因更有意义: BQ27Z746安装在 PCB 上、靠近这些热芯片。]

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

    您好、Robert、

    这也是很好的听声。很高兴热敏电阻没有自然地读出这么高的温度。 我认为、如果在内部进行测量、这肯定更有意义。

    由于电池控制器芯片正在处理此问题、因此禁用任何温度监测是可以的、但最好保持内部温度监测处于启用状态并简单地增大阈值。 这样、如果芯片因其在应用中的物理位置而变得比热敏电阻测量的温度高得多、则可以为监测计提供额外的保护层。

    谢谢、

    杰克逊

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

    谢谢。  项目管理团队说、他们希望启用外部热敏电阻、我将这么做。  我认为 PC 板具有足够的物理隔离、不会报告太热:我的粗略测量技术显示外部热敏电阻处于40°C、因此我们可能不需要调整阈值。

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

    请原谅我这个天真的问题、但我在技术参考手册中没有看到它:如何读取(和写入)闪存设置、尤其是在地址 0x46b1 (温度启用)?  我注意到文档中的这一陈述:

    由于数据闪存的组织结构、更新需要写入由多个数据字节组成的数据块中。

    ...这表明我需要读取数据块、擦除数据块、更新所需的字节、然后将数据块写出来。  但我看不到有关如何执行该操作的信息。  我缺少什么?

    更新:我已验证我可以使用以下代码读取闪存:

    def cc_print_flash_test(bus):
        block = cc_read_manufacturers_access(0x4020, 6, bus)
        b1 = block[0] + (block[1] << 8)
        b2 = block[2] + (block[3] << 8)
        b3 = block[4] + (block[5] << 8)
        print("flash test: {}, {}, {}".format(b1, b2, b3))
    
    def cc_read_manufacturers_access(addr, nbytes, bus):
        bus.write_i2c_block_data(BQ27Z746, 0x3e, [addr & 0xff, addr >> 8])
        # returned value is [addr_lo, addr_hi, data_0, data_1 ...]
        block = bus.read_i2c_block_data(BQ27Z746, 0x3e, nbytes + 2)
        return block[2:]  # strip addr_lo addr_hi from response
    

    该代码显示"FLASH test:4525、2300、140"、这是 OVP、UVP 和 OCC 的默认值、因此看起来很稳定。  鉴于"更新需要写入包含多个数据字节的数据块"的要求、我犹豫是否尝试写入、因为我看不到任何有关块大小的已发布信息、 因此、我不知道我需要读取/修改/写入多少字节。

    更新2:这远远超出了最初的问题。  我在以下位置开始了新的主题:

      e2e.ti.com/.../bq27z746-how-to-write-to-flash-in-the-bq27z746

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

    嗯、嗯、  我认为这可以解决所有问题、但我无法更新闪存。  我已经尝试更改温度启用(从其默认值2开始)以及 T3和 T4 (高温和过热)、但它们仍保持其默认值。

    如  需更多信息、请参阅 e2e.ti.com/.../bq27z746-how-to-write-to-flash-in-the-bq27z746。

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

    您好、Robert、

    由于原始问题已得到解决、我将关闭此主题。 我将跳过您创建的新主题、我们可以单独解决该问题。

    谢谢、

    杰克逊

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

    严格地说、最初的问题(虽然措辞不好)仍然是:"启用 FET 必须是什么"、因此我不确定新线程中会有什么不同。  但无论如何、我会启动一个新的...