I am using the LTC4162-FAD in a solar powered battery charger that I am working on but I have encountered an issue with changing the "vcharge_setting" on this supposedly adjustable chip.
When the LTC4162 is first powered up my I2C master does the following things:
- Read "chem_cells_reg" to make sure that the right part is present
- Write "config_bits_reg" to 6 ("force_telemetry_on" and "mppt_en")
- Write "vcharge_setting" to 0x11
- Write "max_cv_time"
- Write "max_charge_time"
The I2C master reads back each register after setting it to verify that it succeeded. Immediately after setting "vcharge_setting" to 0x11 it is still set to 0x11. However, if I manually query "vcharge_setting" a couple of seconds later the register reads back as 0xF. If I try writing "vcharge_setting" to 0x11 manually after initialisation the behaviour is the same.
After some trial and error I have discovered that if I stop the I2C master from configuring the LTC4162 at power up I can change the value of the "vcharge_setting" register to whatever I like. If I set "vcharge_setting" to 0x11 it will set itself and read back successfully. If I then write "config_bits_reg" to set "force_telemetry_enable", "vcharge_setting" now reads 0xF again. If I disable "force_telemetry_enable" I am once again able to set "vcharge_setting" but upon writing "force_telemetry_enable", "vcharge_setting" is reset to 0xF again. It also appears that plugging the charger input in is enough to cause "vcharge_setting" to change to 0xF.
Is this the expected behaviour? Being the adjustable version I thought you should be able to set "vcharge_setting" to whatever you want. Fortunately 0xF and 0x11 are fairly close so it's not the end of the world but it would be nice to know what is going on. Any input is appreciated.