Other Parts Discussed in Thread: BQ25672
器件型号: BQ25672
我目前解决了非常奇怪的问题:我似乎在寄存器 01 中设置的值与实际充电目标电压之间存在 400mV 的充电电压差。
下面是将 8.3V 目标设置为时的充电曲线、然后是使用 ADC 测量设置为 8.4V):

寄存器内容如下(在上图中,PACK_CHARGING_VOLTAGE_MV 设置为 8300、然后设置为 8400)
write_8b_to_i2c(BQ25672_ADDR, REG05_Input_Voltage_Limit, 10000/100); // Set minimum input voltage to 10V (typical open circuit voltage for the solar panel is 19V)
write_8b_to_i2c(BQ25672_ADDR, REG0A_Re_charge_Control, (1<<6)|(3<<4)|((600-50)/50)); // 2s battery pack, 2048ms deglich, 600mV below top voltage to restart a charge cycle
write_8b_to_i2c(BQ25672_ADDR, REG0F_Charger_Control_0, (1<<7)|(0<<5)|(1<<1)); // Enable auto battery discharging in OVP, DISABLE CHARGING, enable termination
write_8b_to_i2c(BQ25672_ADDR, REG11_Charger_Control_2, 0); // Disable Automatic D+/D- Detection Enable
write_8b_to_i2c(BQ25672_ADDR, REG14_Charger_Control_5, (1<<5)|(0<<2)|(0<<1)); // Enable ibat discharge sensing, disable internal IINDPM current regulation, disable external ilim
write_8b_to_i2c(BQ25672_ADDR, REG08_Precharge_Control, (3<<6)|(320/40)); // Precharge to charge at 71.4%*4.2V = 3V, 320mA precharge current
write_8b_to_i2c(BQ25672_ADDR, REG00_Minimal_System_Voltage, ((6000-2500)/250)); // Vsysmin of 6V
write_8b_to_i2c(BQ25672_ADDR, REG09_Termination_Control, (0<<5)|(2<<0)); // Watchdog timer will not disable charging, 80mA termination current
write_16b_to_i2c(BQ25672_ADDR, REG01_Charge_Voltage_Limit, (PACK_CHARGING_VOLTAGE_MV/10)); // Charge voltage limit
write_16b_to_i2c(BQ25672_ADDR, REG03_Charge_Current_Limit, (1100/10)); // Charge current limit of 1.1A
write_16b_to_i2c(BQ25672_ADDR, REG06_Input_Current_Limit, 1500/10); // When PSU charging, limit input current to 1.5A


