From aix-skills
Use when integrating or debugging Li-ion charger/fuel gauge ICs (BQ24295, BQ27441, MAX17048) over I2C, covering charge start, watchdog host mode, NTC/JEITA faults, and SOC jumps
How this skill is triggered — by the user, by Claude, or both
Slash command
/aix-skills:battery-charger-fuel-gauge-integrationThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Use this skill to bring up a Li-ion/LiPo charger IC (TI `BQ24xxx`/`BQ25xxx`) and a fuel gauge (TI `BQ27xxx` Impedance Track, or Maxim/Analog `MAX1704x` ModelGauge, e.g. `MAX17048`) over I2C. The hard parts are keeping the charger in host mode past its watchdog, and getting an accurate SOC before the gauge has a matching battery profile.
Use this skill to bring up a Li-ion/LiPo charger IC (TI BQ24xxx/BQ25xxx) and a fuel gauge (TI BQ27xxx Impedance Track, or Maxim/Analog MAX1704x ModelGauge, e.g. MAX17048) over I2C. The hard parts are keeping the charger in host mode past its watchdog, and getting an accurate SOC before the gauge has a matching battery profile.
Use this skill when:
IINLIM, REG00[2:0]), EN_HIZ, the CE pin, and the I2C watchdog resetting registers to default.REG09 latched faults, NTC_FAULT (REG09[2:0], with a real thermistor such as 103AT on the TS pin), safety timer expiration, or JEITA temperature de-rating.BQ27441/MAX17048 is wrong or jumps at power-up: profile not loaded, no learning cycle, or bad OCV calibration.Do not use this skill when the I2C bus itself is dead (no ACK on any address) or the board rails are wrong; debug the bus and power tree first with hardware-interface-debug.
Ask for:
BQ27441-G1A vs -G1B).INT/GPOUT is wired.RT1/RT2), plus target charge/discharge temperature window..gm.fs/.df.fs, or a Maxim RCOMP/custom-model INI) exists, or a golden image must be created.VBAT/ICHG, or reported SOC vs true SOC.Confirm the device on the bus.
ACK the charger and gauge 7-bit addresses; read a known register (charger REG0A Vendor/Part/Revision, or gauge Control() DEVICE_TYPE subcommand) before writing anything.
Take and hold host mode on the charger.
Set IINLIM in REG00[2:0], clear EN_HIZ (REG00[7]), enable charging via CE/CHG_CONFIG (REG01[4]), then feed the I2C watchdog (write REG01[6]) on a timer, or disable it (WATCHDOG = REG05[5:4] = 00), so registers do not reset to default and drop charging.
Configure charge parameters and protection.
Program fast-charge current (ICHG, REG02), pre-charge/termination current (REG03), charge voltage (VREG, REG04), and enable NTC/JEITA limits; confirm the thermistor scaling (e.g. 103AT) on the TS pin.
Load the fuel gauge battery profile.
For BQ27441: UNSEAL via Control(), enter CFGUPDATE, poll Flags() until bit 4 is set, write Design Capacity/Design Energy/Terminate Voltage/Taper Rate in the data-memory block, fix BlockDataChecksum (255 - x, where x is the byte-wise sum of the block), then SOFT_RESET. For MAX17048: load a custom model / set RCOMP0 (CONFIG default 0x97) or accept EZ defaults.
Calibrate SOC at first power-up.
Let the pack rest for a valid OCV read, then issue MAX17048 QuickStart (MODE = 0x4000) or check BQ27441 Flags() ITPOR cleared; do not QuickStart under load.
Run temperature compensation and status polling.
Update MAX17048 RCOMP from measured temperature at least once/minute; on BQ27441 feed Temperature() if host-reported. Poll charger CHRG_STAT (REG08[5:4]) and read REG09 twice to get fresh faults (it latches, clears on read).
WATCHDOG.IINLIM too low, EN_HIZ set, ILIM pin resistor, or CE held high disabling charge.BATLOWV threshold (REG04[1]), wrong termination current, or safety timer expiring (REG09 charge safety timer fault).NTC_FAULT / no charge in a comfortable room: TS resistor network wrong, floating TS pin, or JEITA cold/hot fold-back.Design Capacity) not written, BlockDataChecksum wrong so writes silently rejected, or ITPOR still set.SEALED, or not in CFGUPDATE mode before writing the data-memory block.Before claiming charging and gauging work:
REG00–REG0A; confirm IINLIM, VREG, ICHG, watchdog state, and CHRG_STAT transitions Not Charging → Fast Charging → Termination Done.REG09/INT reports it and clears on re-read.ITPOR clear, profile persists).User:
BQ24295 一充电就每隔几十秒重启,SOC 还老是乱跳,怎么查?
Agent:
IINLIM setting, whether the watchdog is fed, NTC network, and whether a BQ27441 profile was loaded.REG00/REG08/REG09; if registers reverted to defaults, enables watchdog feeding (write REG01[6]) or disables WATCHDOG to hold host mode.UNSEAL, verifies Design Capacity and BlockDataChecksum, clears ITPOR, then QuickStart/rest-OCV calibrates SOC and re-tests across a charge cycle.npx claudepluginhub easyzoom/aix-skills --plugin aix-skillsDiagnoses vehicle battery and charging system problems by systematically testing battery condition, alternator output, and charging circuit integrity to identify root cause before replacing components.
Use when integrating, porting, calibrating, or debugging MCU sensor drivers, register maps, I2C/SPI transport, interrupts, FIFO, timing, or data conversion