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.
Hi,
I am using BQ25883 to charge 2 LiFePO4's in series, I programmed the registers which I think necessary, as following
#define BQ25883ID (0b00011000)
void BQ25883_init(void) {
uint8_t v;
v = i2c_read1ByteRegister(0x6B, 0x25) & 0b01111000;
if(v != BQ25883ID) {
while(1) ;
}
v = i2c_read1ByteRegister(0x6B, 0x05) & (~(BIT4 | BIT5)); // disable WD timer, WATCHDOG[1:0]=='00'
i2c_write1ByteRegister(0x6B, 0x05, v);
v = i2c_read1ByteRegister(0x6B, 0x06) & (~(BIT2 | BIT3)) | BIT1; // recharge threshold offset==300mV (200mv+100mV offset), precharge to fast-charge threshold as 5.6V, charger disabled
i2c_write1ByteRegister(0x6B, 0x06, v);
v = i2c_read1ByteRegister(0x6B, 0x07) & (~(BIT0 | BIT1 | BIT2 | BIT3)); // Minimum System Voltage as 6.0V (SYS_MIN[3:0]=='0000'))
i2c_write1ByteRegister(0x6B, 0x07, v);
v = i2c_read1ByteRegister(0x6B, 0x01) &(~(BIT0 | BIT1 | BIT3 | BIT5)) | (BIT2 | BIT4); // fast charge current as 1A (ICHG[5:0]='010100')
i2c_write1ByteRegister(0x6B, 0x01, v);
// termination current and precharge current as default of 150mA, no registers mod is needed
i2c_write1ByteRegister(0x6B, 0x00, 0b00101000); // Battery Charge voltage as 7.2V, VREG[7:0] = '00101000'
v = i2c_read1ByteRegister(0x6B, 0x06) | BIT3; // enable charge again
i2c_write1ByteRegister(0x6B, 0x06, v);
}
I verified the I2C interface is working on board, and the code executes beyond this BQ25883_init().
However, the charging current remains ~300mA after BQ25883_init(), the micro is one without any debug facility, so I didn't verify which charging stage it is in. I checked BQ25883 in autonomous mode (I don't have an EV2400), the charging current is also ~300mA.
I must missed something simple. Can you help here?
Thank you very much
Don
Can help me check if I missed any registers? Do I need to reset BQ25883 to get new parameters into effect? how to soft reset? Tks
Don,
Are you able to read the status bits to see if the IC is in a DPM mode?
Also could you provide ILIM resistor value?
Best Regards,
Ricardo
Ricardo,
I am working on an interface which let me see the read back.
Thanks
Don
Ricardo,
I found out the ILIM register (addr 0x03) default to 0b00100000, which is 500mA offset.
When I change IINDPM[4:0], the changing current change accordingly.
This is so on both the EVM and on the platform I am developing. But datasheet list the default value as 0x39
Thanks
Don