@@ -106,16 +106,35 @@ uint8_t nicla::readLDOreg()
106
106
107
107
bool nicla::enableCharge (uint8_t mA )
108
108
{
109
- digitalWrite (p25, LOW);
110
109
if (mA < 35 ) {
111
110
_chg_reg = ((mA -5 ) << 2 );
112
111
} else {
113
112
_chg_reg = (((mA -40 )/10 ) << 2 ) | 0x80 ;
114
113
}
115
114
_pmic.writeByte (BQ25120A_ADDRESS, BQ25120A_FAST_CHG, _chg_reg);
115
+
116
+ // For very depleted batteries, set ULVO at the vary minimum to re-enable charging
117
+ _pmic.writeByte (BQ25120A_ADDRESS, BQ25120A_ILIM_UVLO_CTRL, 0x3F );
118
+
119
+ // also set max battery voltage to 4.2V (VBREG)
120
+ // _pmic.writeByte(BQ25120A_ADDRESS, BQ25120A_BATTERY_CTRL, (4.2f - 3.6f)*100);
121
+
116
122
return _pmic.readByte (BQ25120A_ADDRESS, BQ25120A_FAST_CHG) == _chg_reg;
117
123
}
118
124
125
+ uint8_t nicla::getFault () {
126
+ return _pmic.readByte (BQ25120A_ADDRESS, BQ25120A_FAULTS);
127
+ }
128
+
129
+
130
+ float nicla::getBetteryStatus () {
131
+ _pmic.writeByte (BQ25120A_ADDRESS, BQ25120A_BATT_MON, 1 );
132
+ delay (2 );
133
+ uint8_t data = _pmic.readByte (BQ25120A_ADDRESS, BQ25120A_BATT_MON);
134
+ float res = 0 .6f + (data >> 5 ) * 0 .1f + (data >> 2 ) * 0 .02f - 0 .01f ;
135
+ return res;
136
+ }
137
+
119
138
void nicla::checkChgReg ()
120
139
{
121
140
if (_chg_reg != _pmic.readByte (BQ25120A_ADDRESS, BQ25120A_FAST_CHG)) {
0 commit comments