#include #include #include "eos.h" #include "soc/pwr.h" #include "drv/bq25895.h" #ifdef EOS_DEBUG #include #endif int eos_batt_init(void) { uint8_t wakeup_cause; int rst, rv; #ifdef EOS_DEBUG uint8_t data; int i; #endif rv = EOS_OK; wakeup_cause = eos_pwr_wakeup_cause(); rst = (wakeup_cause == EOS_PWR_WAKE_RST); if (rst) { // if (!rv) rv = bq25895_reg_write(0x14, 0x80); // reset // if (!rv) rv = bq25895_reg_write(0x14, 0x00); if (!rv) rv = bq25895_reg_write(0x07, 0x8d); // disable watchdog if (!rv) rv = bq25895_reg_write(0x03, 0x2e); // disable charging, 3.7V minimum output } if (rv) return rv; #ifdef EOS_DEBUG printf("BQ25895:\n"); for (i=0; i<0x15; i++) { rv = bq25895_reg_read(i, &data); if (!rv) printf(" REG%.2X: %.2X\n", i, data); } #endif return EOS_OK; } int eos_batt_read_fault(uint8_t *fault0, uint8_t *fault1) { int rv; rv = bq25895_read_fault(fault0); if (rv) return rv; rv = bq25895_read_fault(fault1); if (rv) return rv; return EOS_OK; }