18#define BQ25883_WRITE_ADDRESS 0xD7
19#define BQ25883_READ_ADDRESS 0xD7
23typedef BQ25883_I2C_STATUS_ENUM (*write_i2c_bq25883)(uint8_t Address, uint8_t Register, uint8_t* Data, uint8_t size);
24typedef BQ25883_I2C_STATUS_ENUM (*read_i2c_bq25883)(uint8_t Address, uint8_t Register, uint8_t* Data, uint8_t size);
30 write_i2c_bq25883 write_func;
31 read_i2c_bq25883 read_func;
38 uint8_t PFM_OOA_DIS: 1;
39 uint8_t EN_BAT_DISCHG: 1;
40 uint8_t EN_VINDPM_RST: 1;
41 uint16_t MinVoltage_mV;
42}__attribute__((__packed__)) InputVoltageLimitRegisterMask;
48 uint8_t FORCE_INDET: 1;
50}__attribute__((__packed__)) InputCurrentLimitRegisterMask;
59}ThermalRegulationThresholdEnum;
67}BatteryRechargeThresholdOffsetEnum;
75 uint8_t AUTO_INDET_EN: 1;
77}__attribute__((__packed__)) ChargerControl2RegisterMask;
82 CONTINUOUS_CONVERSION = 0x00,
83 ONE_SHOT_CONVERSION = 0x01
88 RESOLUTION_15_BIT = 0x00,
89 RESOLUTION_14_BIT = 0x01,
90 RESOLUTION_13_BIT = 0x02,
91 RESOLUTION_12_BIT = 0x03
97 uint8_t ADC_SAMPLE: 2;
100}__attribute__((__packed__)) ADCControlRegisterMask;
104 uint8_t TDIE_ADC_DIS: 1;
106 uint8_t TS_ADC_DIS: 1;
107 uint8_t VSYS_ADC_DIS: 1;
108 uint8_t VBAT_ADC_DIS: 1;
109 uint8_t VBUS_ADC_DIS: 1;
110 uint8_t ICHG_ADC_DIS: 1;
111 uint8_t IBUS_ADC_DIS: 1;
112}__attribute__((__packed__)) ADCFunctionDisableRegisterMask;
117 CSE_NOT_CHARGING = 0x00,
118 CSE_TRICKLE_CHARGE = 0x01,
119 CSE_PRE_CHARGE = 0x02,
120 CSE_FAST_CHARGE = 0x03,
121 CSE_TAPER_CHARGE = 0x04,
122 CSE_TOP_OFF_TIMER_CHARGING = 0x05,
123 CSE_CHARGE_TERMINATION_DONE = 0x06
128 uint8_t CHRG_STAT: 3;
130 uint8_t TREG_STAT: 1;
131 uint8_t VINDPM_STAT: 1;
132 uint8_t IINDPM_STAT: 1;
134}__attribute__((__packed__)) ChargerStatus1RegisterMask;
138 VDSE_NO_INPUT = 0x00,
139 VDSE_USB_HOST_SDP = 0x01,
143 VDSE_UNKNOWN_ADAPTER = 0x05,
144 VDSE_NON_STANDARD_ADAPTER = 0x06,
146}VBUSDetectionStatusEnum;
150 uint8_t VSYS_STAT: 1;
153 uint8_t VBUS_STAT: 3;
155}__attribute__((__packed__)) ChargerStatus2RegisterMask;
161 NTCSE_TS_WARM = 0x02,
162 NTCSE_TS_COOL = 0x03,
163 NTCSE_TS_COLD = 0x05,
171}__attribute__((__packed__)) NTCStatusRegisterMask;
177 uint8_t BATOVP_STAT: 1;
178 uint8_t TSHUT_STAT: 1;
179 uint8_t VBUS_OVP_STAT: 1;
180}__attribute__((__packed__)) FAULTStatusRegisterMask;
184 ChargerStatus1RegisterMask Status1;
185 ChargerStatus2RegisterMask Status2;
186 NTCStatusRegisterMask NTC_Status;
187 FAULTStatusRegisterMask Fault_Status;
188}__attribute__((__packed__)) ChargerStatusMask;
195 uint8_t BATOVP_STAT: 1;
196 uint8_t TSHUT_STAT: 1;
197 uint8_t VBUS_OVP_STAT: 1;
198}__attribute__((__packed__)) FAULT_StatusRegisterMask;
205 uint16_t ChargeCurrent_mA;
206}__attribute__((__packed__)) ChargerCurrentLimitRegisterMask;
212 uint16_t CurrentLimit_mA;
213}__attribute__((__packed__)) ICO_CurrentLimitRegisterMask;
216void BQ25883_init(BQ25883_init_struct* init_struct);
218BQ25883_I2C_STATUS_ENUM BQ25883_GetRegister(uint8_t reg_num, uint8_t* value);
219BQ25883_I2C_STATUS_ENUM BQ25883_SetRegister(uint8_t reg_num, uint8_t* value);
221BQ25883_I2C_STATUS_ENUM BQ25883_Reset();
223BQ25883_I2C_STATUS_ENUM BQ25883_GetPartInfo(uint8_t* value);
225BQ25883_I2C_STATUS_ENUM BQ25883_SetMaxBatteryChargeVoltage(uint16_t value_mV);
226BQ25883_I2C_STATUS_ENUM BQ25883_GetMaxBatteryChargeVoltage(uint16_t* value);
228BQ25883_I2C_STATUS_ENUM BQ25883_SetBatteryChargeCurrent(
bool updateFullRegistr, ChargerCurrentLimitRegisterMask RegField, uint16_t value_mA);
229BQ25883_I2C_STATUS_ENUM BQ25883_GetBatteryChargeCurrent(ChargerCurrentLimitRegisterMask* value);
231BQ25883_I2C_STATUS_ENUM BQ25883_SetMinInputVoltage(
bool updateFullRegistr, InputVoltageLimitRegisterMask RegField, uint16_t value_mV);
232BQ25883_I2C_STATUS_ENUM BQ25883_GetMinInputVoltage(InputVoltageLimitRegisterMask* value);
234BQ25883_I2C_STATUS_ENUM BQ25883_SetMinInputCurrent(
bool updateFullRegistr, InputCurrentLimitRegisterMask RegField, uint16_t value_mA);
236BQ25883_I2C_STATUS_ENUM BQ25883_Set2ControlRegister(ChargerControl2RegisterMask RegField);
237BQ25883_I2C_STATUS_ENUM BQ25883_Get2ControlRegister(ChargerControl2RegisterMask* RegField);
239BQ25883_I2C_STATUS_ENUM BQ25883_SetADCControlRegister(ADCControlRegisterMask RegField);
240BQ25883_I2C_STATUS_ENUM BQ25883_GetADCControlRegister(ADCControlRegisterMask* value);
242BQ25883_I2C_STATUS_ENUM BQ25883_SetADCFunctionDisableRegister(ADCFunctionDisableRegisterMask RegField);
244BQ25883_I2C_STATUS_ENUM BQ25883_GetChargeStatus1Register(ChargerStatus1RegisterMask* value);
246BQ25883_I2C_STATUS_ENUM BQ25883_GetChargerStatus(ChargerStatusMask* status);
247BQ25883_I2C_STATUS_ENUM BQ25883_GetChargerCurrentLimitICO(ICO_CurrentLimitRegisterMask* value);
250BQ25883_I2C_STATUS_ENUM BQ25883_GetIBUS(int16_t* value);
251BQ25883_I2C_STATUS_ENUM BQ25883_GetICHG(int16_t* value);
252BQ25883_I2C_STATUS_ENUM BQ25883_GetVBUS(int16_t* value);
253BQ25883_I2C_STATUS_ENUM BQ25883_GetVBAT(int16_t* value);
254BQ25883_I2C_STATUS_ENUM BQ25883_GetVSYS(int16_t* value);
255BQ25883_I2C_STATUS_ENUM BQ25883_GetTS(int16_t* value);
256BQ25883_I2C_STATUS_ENUM BQ25883_GetTDIE(int16_t* value);
258BQ25883_I2C_STATUS_ENUM BQ25883_GetADC(uint8_t Reg, int16_t* value);