主题中讨论的其他器件: BQSTUDIO
当我们推出新电路板时、我们需要 基本上禁用 BQ27Z746 (但将电池保持连接到 PACKP)。 哪些 命令/设置可 确保启用 CHG 和 DSG FET 驱动器线路?
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 驱动器?
除非连接了电池、否则我们的处理器将无法启动。 启动后 、处理器 将能够向 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 位。 (如果我不在这个过程中混合芯片的状态!)
我将接受这一答案作为正确答案。 如果我在尝试将该位保存到非易失性存储器时遇到困难、这将是一个单独的问题。
谢谢!
再说一次,你是对的--谢谢你! 下面是 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
我意识到、我没有充分解释系统设置、这可能很重要。
如果发生电源故障、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
请原谅我这个天真的问题、但我在技术参考手册中没有看到它:如何读取(和写入)闪存设置、尤其是在地址 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