Go to the documentation of this file.
35 #include "drv_digital_out.h"
36 #include "drv_digital_in.h"
37 #include "drv_i2c_master.h"
60 #define BATTMAN2_INT_GLBL0 0x00
61 #define BATTMAN2_INT_GLBL1 0x04
62 #define BATTMAN2_ERCFLAG 0x05
63 #define BATTMAN2_STAT_GLBL 0x06
64 #define BATTMAN2_INTM_GLBL1 0x08
65 #define BATTMAN2_INTM_GLBL0 0x09
66 #define BATTMAN2_CNFG_GLBL 0x10
67 #define BATTMAN2_CNFG_GPIO0 0x11
68 #define BATTMAN2_CNFG_GPIO1 0x12
69 #define BATTMAN2_CNFG_GPIO2 0x13
70 #define BATTMAN2_CID 0x14
71 #define BATTMAN2_CNFG_WDT 0x17
72 #define BATTMAN2_INT_CHG 0x01
73 #define BATTMAN2_STAT_CHG_A 0x02
74 #define BATTMAN2_STAT_CHG_B 0x03
75 #define BATTMAN2_INT_M_CHG 0x07
76 #define BATTMAN2_CNFG_CHG_A 0x20
77 #define BATTMAN2_CNFG_CHG_B 0x21
78 #define BATTMAN2_CNFG_CHG_C 0x22
79 #define BATTMAN2_CNFG_CHG_D 0x23
80 #define BATTMAN2_CNFG_CHG_E 0x24
81 #define BATTMAN2_CNFG_CHG_F 0x25
82 #define BATTMAN2_CNFG_CHG_G 0x26
83 #define BATTMAN2_CNFG_CHG_H 0x27
84 #define BATTMAN2_CNFG_CHG_I 0x28
85 #define BATTMAN2_CNFG_SBB0_A 0x29
86 #define BATTMAN2_CNFG_SBB0_B 0x2A
87 #define BATTMAN2_CNFG_SBB1_A 0x2B
88 #define BATTMAN2_CNFG_SBB1_B 0x2C
89 #define BATTMAN2_CNFG_SBB2_A 0x2D
90 #define BATTMAN2_CNFG_SBB2_B 0x2E
91 #define BATTMAN2_CNFG_SBB_TOP 0x2F
92 #define BATTMAN2_CNFG_LDO0_A 0x38
93 #define BATTMAN2_CNFG_LDO0_B 0x39
94 #define BATTMAN2_CNFG_LDO1_A 0x3A
95 #define BATTMAN2_CNFG_LDO1_B 0x3B
119 #define BATTMAN2_SEL_LED_RED 0x00
120 #define BATTMAN2_SEL_LED_YELLOW 0x01
121 #define BATTMAN2_SEL_LED_BLUE 0x02
122 #define BATTMAN2_PIN_STATE_OFF 0x00
123 #define BATTMAN2_PIN_STATE_ON 0x01
130 #define BATTMAN2_SEL_ALT_GPIO_STANDARD 0x00
131 #define BATTMAN2_SEL_ALT_GPIO_A_OUTPUT_SBB2 0x20
132 #define BATTMAN2_DBEN_GPI_NO_DEBOUNCE 0x00
133 #define BATTMAN2_DBEN_GPI_DEBOUNCE_30_ms 0x10
134 #define BATTMAN2_DO_GPIO_LOGIC_LOW 0x00
135 #define BATTMAN2_DO_GPIO_LOGIC_HIGH 0x08
136 #define BATTMAN2_DRV_OPEN_DRAIN 0x00
137 #define BATTMAN2_DRV_PUSH_PULL 0x04
138 #define BATTMAN2_DI_GPIO_LOGIC_LOW 0x00
139 #define BATTMAN2_DI_GPIO_LOGIC_HIGH 0x02
140 #define BATTMAN2_DIR_OUTPUT 0x00
141 #define BATTMAN2_DIR_INPUT 0x01
148 #define BATTMAN2_THM_HOT_411_mV 0x00
149 #define BATTMAN2_THM_HOT_367_mV 0x01
150 #define BATTMAN2_THM_HOT_327_mV 0x02
151 #define BATTMAN2_THM_HOT_291_mV 0x03
152 #define BATTMAN2_THM_WARM_511_mV 0x00
153 #define BATTMAN2_THM_WARM_459_mV 0x01
154 #define BATTMAN2_THM_WARM_411_mV 0x02
155 #define BATTMAN2_THM_WARM_367_mV 0x03
156 #define BATTMAN2_THM_COOL_923_mV 0x00
157 #define BATTMAN2_THM_COOL_867_mV 0x01
158 #define BATTMAN2_THM_COOL_807_mV 0x02
159 #define BATTMAN2_THM_COOL_747_mV 0x03
160 #define BATTMAN2_THM_COLD_1024_mV 0x00
161 #define BATTMAN2_THM_COLD_976_mV 0x01
162 #define BATTMAN2_THM_COLD_923_mV 0x02
163 #define BATTMAN2_THM_COLD_867_mV 0x03
170 #define BATTMAN2_BIT_MASK_CHARGER_DISABLE 0xFE
171 #define BATTMAN2_BIT_MASK_CHARGER_ENABLE 0x01
172 #define BATTMAN2_SET_CHARGER_DISABLE 0x00
173 #define BATTMAN2_SET_CHARGER_ENABLE 0x01
181 #define BATTMAN2_I_PQ_10_PERCENTAGE 0x00
182 #define BATTMAN2_I_PQ_20_PERCENTAGE 0x01
189 #define BATTMAN2_I_TERM_5_PERCENTAGE 0x00
190 #define BATTMAN2_I_TERM_7_5_PERCENTAGE 0x01
191 #define BATTMAN2_I_TERM_10_PERCENTAGE 0x02
192 #define BATTMAN2_I_TERM_15_PERCENTAGE 0x03
199 #define BATTMAN2_T_TOPOFF_0_MIN 0x00
200 #define BATTMAN2_T_TOPOFF_5_MIN 0x01
201 #define BATTMAN2_T_TOPOFF_10_MIN 0x02
202 #define BATTMAN2_T_TOPOFF_15_MIN 0x03
203 #define BATTMAN2_T_TOPOFF_20_MIN 0x04
204 #define BATTMAN2_T_TOPOFF_25_MIN 0x05
205 #define BATTMAN2_T_TOPOFF_30_MIN 0x06
206 #define BATTMAN2_T_TOPOFF_35_MIN 0x07
213 #define BATTMAN2_TJ_REG_60_C 0x00
214 #define BATTMAN2_TJ_REG_70_C 0x01
215 #define BATTMAN2_TJ_REG_80_C 0x02
216 #define BATTMAN2_TJ_REG_90_C 0x03
217 #define BATTMAN2_TJ_REG_100_C 0x04
224 #define BATTMAN2_T_FAST_CHG_TIMER_DISABLED 0x00
225 #define BATTMAN2_T_FAST_CHG_TIMER_3_HOURS 0x01
226 #define BATTMAN2_T_FAST_CHG_TIMER_5_HOURS 0x02
227 #define BATTMAN2_T_FAST_CHG_TIMER_7_HOURS 0x03
234 #define BATTMAN2_THM_EN_THERMISTOR_DISABLED 0x00
235 #define BATTMAN2_THM_EN_THERMISTOR_ENABLED 0x01
242 #define BATTMAN2_USBS_CHGIN_IS_NOT_SUSPENDED 0x00
243 #define BATTMAN2_USBS_CHGIN_IS_SUSPENDED 0x01
250 #define BATTMAN2_IMON_DISCHG_SCALE_8_2_mA 0x00
251 #define BATTMAN2_IMON_DISCHG_SCALE_40_5_mA 0x01
252 #define BATTMAN2_IMON_DISCHG_SCALE_72_3_mA 0x02
253 #define BATTMAN2_IMON_DISCHG_SCALE_103_4_mA 0x03
254 #define BATTMAN2_IMON_DISCHG_SCALE_134_1_mA 0x04
255 #define BATTMAN2_IMON_DISCHG_SCALE_164_1_mA 0x05
256 #define BATTMAN2_IMON_DISCHG_SCALE_193_7_mA 0x06
257 #define BATTMAN2_IMON_DISCHG_SCALE_222_7_mA 0x07
258 #define BATTMAN2_IMON_DISCHG_SCALE_251_2_mA 0x08
259 #define BATTMAN2_IMON_DISCHG_SCALE_279_3_mA 0x09
260 #define BATTMAN2_IMON_DISCHG_SCALE_300_mA 0x0A
267 #define BATTMAN2_MUX_SEL_MULTIPLEXER_DISABLED 0x00
268 #define BATTMAN2_MUX_SEL_CHGIN_VOLTAGE_MONITOR 0x01
269 #define BATTMAN2_MUX_SEL_CHGIN_CURRENT_MONITOR 0x02
270 #define BATTMAN2_MUX_SEL_BATT_VOLTAGE_MONITOR 0x03
271 #define BATTMAN2_MUX_SEL_BATT_CHARGE_CURRENT_MONITOR 0x04
272 #define BATTMAN2_MUX_SEL_BATT_DISCHARGE_CURRENT_NORMAL 0x05
273 #define BATTMAN2_MUX_SEL_BATT_DISCHARGE_CURRENT_NULLING 0x06
274 #define BATTMAN2_MUX_SEL_THM_VOLTAGE_MONITOR 0x07
275 #define BATTMAN2_MUX_SEL_TBIAS_VOLTAGE_MONITOR 0x08
276 #define BATTMAN2_MUX_SEL_AGND_VOLTAGE_MONITOR 0x09
277 #define BATTMAN2_MUX_SEL_SYS_VOLTAGE_MONITOR 0x0A
284 #define BATTMAN2_OP_MODE_BUCK_AND_BOOST 0x00
285 #define BATTMAN2_OP_MODE_BUCK 0x01
292 #define BATTMAN2_CURRENT_LIMIT_1000_mA 0x00
293 #define BATTMAN2_CURRENT_LIMIT_750_mA 0x01
294 #define BATTMAN2_CURRENT_LIMIT_500_mA 0x02
295 #define BATTMAN2_CURRENT_LIMIT_333_mA 0x03
302 #define BATTMAN2_ACTIVE_DISCHARGE_DISABLE 0x00
303 #define BATTMAN2_ACTIVE_DISCHARGE_ENABLE 0x01
310 #define BATTMAN2_ENABLE_CONTROL_FPS_SLOT_0 0x00
311 #define BATTMAN2_ENABLE_CONTROL_FPS_SLOT_1 0x01
312 #define BATTMAN2_ENABLE_CONTROL_FPS_SLOT_2 0x02
313 #define BATTMAN2_ENABLE_CONTROL_FPS_SLOT_3 0x03
314 #define BATTMAN2_ENABLE_CONTROL_OFF_IRRESPECTIVE_FPS 0x04
315 #define BATTMAN2_ENABLE_CONTROL_ON_IRRESPECTIVE_FPS 0x06
322 #define BATTMAN2_ICHGIN_LIM_95_mA 0x00
323 #define BATTMAN2_ICHGIN_LIM_190_mA 0x01
324 #define BATTMAN2_ICHGIN_LIM_285_mA 0x02
325 #define BATTMAN2_ICHGIN_LIM_380_mA 0x03
326 #define BATTMAN2_ICHGIN_LIM_475_mA 0x04
333 #define BATTMAN2_DRV_SBB_FAST_TRANSITION_TIME 0x00
334 #define BATTMAN2_DRV_SBB_TRANSITION_TIME_1 0x01
335 #define BATTMAN2_DRV_SBB_TRANSITION_TIME_2 0x02
336 #define BATTMAN2_DRV_SBB_TRANSITION_TIME_3 0x03
343 #define BATTMAN2_SBB_CH_0 0x00
344 #define BATTMAN2_SBB_CH_1 0x01
345 #define BATTMAN2_SBB_CH_2 0x02
352 #define BATTMAN2_SET_DEV_ADDR 0x48
370 #define BATTMAN2_CHG_DTLS_OFF 0x00
371 #define BATTMAN2_CHG_DTLS_PREQUALIFICATION_MODE 0x01
372 #define BATTMAN2_CHG_DTLS_FAST_CHARGE_CONSTANT_CURRENT 0x02
373 #define BATTMAN2_CHG_DTLS_JEITA_MODIFIED_FAST_CHRG_CC 0x03
374 #define BATTMAN2_CHG_DTLS_FAST_CHARGE_CONSTANT_VOLTAGE 0x04
375 #define BATTMAN2_CHG_DTLS_JEITA_MODIFIED_FAST_CHRG_CV 0x05
376 #define BATTMAN2_CHG_DTLS_TOP_OFF_MODE 0x06
377 #define BATTMAN2_CHG_DTLS_JEITA_MODIFIED_TOP_OFF_MODE 0x07
378 #define BATTMAN2_CHG_DTLS_DONE 0x08
379 #define BATTMAN2_CHG_DTLS_JEITA_MODIFIED_DONE 0x09
380 #define BATTMAN2_CHG_DTLS_PREQUALIFICATION_TIMER_FAULT 0x0A
381 #define BATTMAN2_CHG_DTLS_FAST_CHARGE_TIMER_FAULT 0x0B
382 #define BATTMAN2_CHG_DTLS_BATTERY_TEMPERATURE_FAULT 0x0C
388 #define BATTMAN2_CHG_NO_CHARGING 0x00
389 #define BATTMAN2_CHG_CHARGING 0x01
407 #define BATTMAN2_MAP_MIKROBUS( cfg, mikrobus ) \
408 cfg.scl = MIKROBUS( mikrobus, MIKROBUS_SCL ); \
409 cfg.sda = MIKROBUS( mikrobus, MIKROBUS_SDA ); \
410 cfg.rst = MIKROBUS( mikrobus, MIKROBUS_RST ); \
411 cfg.irq = MIKROBUS( mikrobus, MIKROBUS_INT )
uint8_t active_discharge_enable
Definition: battman2.h:537
uint8_t tj_reg_stat
Definition: battman2.h:503
uint8_t current_limit
Definition: battman2.h:536
err_t battman2_generic_read(battman2_t *ctx, uint8_t reg, uint8_t *rx_buf, uint8_t rx_len)
BATT-MAN 2 I2C reading function.
battman2_return_value_t
BATT-MAN 2 Click return value data.
Definition: battman2.h:458
uint8_t chg
Definition: battman2.h:507
uint8_t mux_sel
Definition: battman2.h:490
uint8_t current_limit
Definition: battman2.h:520
err_t battman2_check_stat(battman2_t *ctx, uint8_t *stat)
BATT-MAN 2 check states function.
digital_out_t rst
Definition: battman2.h:423
uint8_t thm_cold
Definition: battman2.h:473
pin_name_t irq
Definition: battman2.h:446
i2c_master_t i2c
Definition: battman2.h:429
err_t battman2_get_chg_status(battman2_t *ctx, battman2_stat_chg_t *chg_stat)
BATT-MAN 2 get charger status function.
uint8_t ichgin_lim_stat
Definition: battman2.h:501
uint8_t thm_en
Definition: battman2.h:485
err_t battman2_get_sbb_config(battman2_t *ctx, uint8_t sbb_sel, battman2_sbb_cnfg_t *sbb_cfg)
BATT-MAN 2 get SBB configuration function.
float vsys_reg
Definition: battman2.h:481
float chg_pq
Definition: battman2.h:477
@ BATTMAN2_OK
Definition: battman2.h:459
uint32_t i2c_speed
Definition: battman2.h:448
err_t battman2_default_cfg(battman2_t *ctx)
BATT-MAN 2 default configuration function.
uint8_t thm_cool
Definition: battman2.h:472
pin_name_t scl
Definition: battman2.h:442
err_t battman2_set_gpio_output(battman2_t *ctx, uint8_t gpio_sel, uint8_t led_state)
BATT-MAN 2 set gpio output state function.
uint8_t vchgin_min_stat
Definition: battman2.h:500
BATT-MAN 2 Click LDO configuration object.
Definition: battman2.h:533
@ BATTMAN2_ERROR
Definition: battman2.h:460
float ichgin_lim
Definition: battman2.h:475
void battman2_cfg_setup(battman2_cfg_t *cfg)
BATT-MAN 2 configuration object setup function.
uint8_t usbs
Definition: battman2.h:487
uint8_t enable_control
Definition: battman2.h:538
float chg_cv_jeita
Definition: battman2.h:488
uint8_t t_fast_chg
Definition: battman2.h:483
digital_in_t irq
Definition: battman2.h:426
uint8_t thm_hot
Definition: battman2.h:470
float chg_cv
Definition: battman2.h:486
err_t battman2_hw_reset(battman2_t *ctx)
BATT-MAN 2 hw reset function.
uint8_t t_topoff
Definition: battman2.h:479
float chg_cc
Definition: battman2.h:482
uint8_t battman2_check_interrupt(battman2_t *ctx)
BATT-MAN 2 check interrupt function.
BATT-MAN 2 Click charger status object.
Definition: battman2.h:499
err_t battman2_get_id(battman2_t *ctx, uint8_t *cid)
BATT-MAN 2 get device ID function.
void battman2_led_intro(battman2_t *ctx)
BATT-MAN 2 LED intro function.
uint8_t ichgin_lim_def
Definition: battman2.h:523
err_t battman2_check_int_glbl(battman2_t *ctx, uint8_t *int_glbl0, uint8_t *int_glbl1)
BATT-MAN 2 check global interrupts function.
uint8_t i_pq
Definition: battman2.h:476
err_t battman2_init(battman2_t *ctx, battman2_cfg_t *cfg)
BATT-MAN 2 initialization function.
uint8_t thm_warm
Definition: battman2.h:471
float output_vtg
Definition: battman2.h:534
err_t battman2_set_charger_cfg(battman2_t *ctx, battman2_chg_cnfg_t chg_cnfg)
BATT-MAN 2 set charger configuration function.
uint8_t enable_control
Definition: battman2.h:522
err_t battman2_check_faults_occurred(battman2_t *ctx, uint8_t *faults)
BATT-MAN 2 check faults occurred function.
uint8_t tj_reg
Definition: battman2.h:480
pin_name_t sda
Definition: battman2.h:443
uint8_t drv_sbb
Definition: battman2.h:524
uint8_t op_mode
Definition: battman2.h:519
BATT-MAN 2 Click context object.
Definition: battman2.h:421
uint8_t chg_dtls
Definition: battman2.h:505
BATT-MAN 2 Click Buck and boost configuration object.
Definition: battman2.h:517
pin_name_t rst
Definition: battman2.h:445
float output_vtg
Definition: battman2.h:518
uint8_t time_sus
Definition: battman2.h:508
uint8_t slave_address
Definition: battman2.h:432
uint8_t thm_dtls
Definition: battman2.h:504
err_t battman2_set_ldo_config(battman2_t *ctx, battman2_ldo_cnfg_t ldo_cfg)
BATT-MAN 2 set LDO configuration function.
BATT-MAN 2 Click charger configuration object.
Definition: battman2.h:469
uint8_t i2c_address
Definition: battman2.h:449
float vchgin_min
Definition: battman2.h:474
err_t battman2_set_sbb_config(battman2_t *ctx, uint8_t sbb_sel, battman2_sbb_cnfg_t sbb_cfg)
BATT-MAN 2 set SBB configuration function.
uint8_t active_discharge_enable
Definition: battman2.h:521
uint8_t chgin_dtls
Definition: battman2.h:506
uint8_t imon_dischg_scale
Definition: battman2.h:489
float chg_cc_jeita
Definition: battman2.h:484
BATT-MAN 2 Click configuration object.
Definition: battman2.h:441
err_t battman2_set_charger_enable(battman2_t *ctx, uint8_t en_chg)
BATT-MAN 2 set charger enable function.
err_t battman2_get_ldo_config(battman2_t *ctx, battman2_ldo_cnfg_t *ldo_cfg)
BATT-MAN 2 get LDO configuration function.
uint8_t i_term
Definition: battman2.h:478
err_t battman2_get_charger_cfg(battman2_t *ctx, battman2_chg_cnfg_t *chg_cnfg)
BATT-MAN 2 get charger configuration function.
uint8_t op_mode
Definition: battman2.h:535
err_t battman2_generic_write(battman2_t *ctx, uint8_t reg, uint8_t *tx_buf, uint8_t tx_len)
BATT-MAN 2 I2C writing function.
uint8_t vsys_min_stat
Definition: battman2.h:502