39#ifdef PREINIT_SUPPORTED
43#ifdef MikroCCoreVersion
44 #if MikroCCoreVersion >= 1
49#include "drv_digital_out.h"
50#include "drv_digital_in.h"
51#include "drv_i2c_master.h"
73#define CHARGER29_REG_STAT0 0x00
74#define CHARGER29_REG_STAT1 0x01
75#define CHARGER29_REG_FLAG0 0x02
76#define CHARGER29_REG_VBAT_CTRL 0x03
77#define CHARGER29_REG_ICHG_CTRL 0x04
78#define CHARGER29_REG_CHARGECTRL0 0x05
79#define CHARGER29_REG_CHARGECTRL1 0x06
80#define CHARGER29_REG_IC_CTRL 0x07
81#define CHARGER29_REG_TMR_ILIM 0x08
82#define CHARGER29_REG_SHIP_RST 0x09
83#define CHARGER29_REG_SYS_REG 0x0A
84#define CHARGER29_REG_TS_CONTROL 0x0B
85#define CHARGER29_REG_MASK_ID 0x0C
103#define CHARGER29_STAT0_TS_OPEN_STAT 0x80
104#define CHARGER29_STAT0_CHG_STAT_NOT_CHARGING 0x00
105#define CHARGER29_STAT0_CHG_STAT_CC_CHARGING 0x20
106#define CHARGER29_STAT0_CHG_STAT_CV_CHARGING 0x40
107#define CHARGER29_STAT0_CHG_STAT_CHARGE_DONE 0x60
108#define CHARGER29_STAT0_CHG_STAT_MASK 0x60
109#define CHARGER29_STAT0_ILIM_ACTIVE_STAT 0x10
110#define CHARGER29_STAT0_VDPPM_ACTIVE_STAT 0x08
111#define CHARGER29_STAT0_VINDPM_ACTIVE_STAT 0x04
112#define CHARGER29_STAT0_THERMREG_ACTIVE_STAT 0x02
113#define CHARGER29_STAT0_VIN_PGOOD_STAT 0x01
119#define CHARGER29_STAT1_VIN_OVP_STAT 0x80
120#define CHARGER29_STAT1_BUVLO_STAT 0x60
121#define CHARGER29_STAT1_TS_STAT_NORMAL 0x00
122#define CHARGER29_STAT1_TS_STAT_SUSPENDED 0x08
123#define CHARGER29_STAT1_TS_STAT_CC_REDUCED 0x10
124#define CHARGER29_STAT1_TS_STAT_CV_REDUCED 0x18
125#define CHARGER29_STAT1_TS_STAT_MASK 0x18
126#define CHARGER29_STAT1_SAFETY_TMR_FAULT_FLAG 0x04
127#define CHARGER29_STAT1_WAKE1_FLAG 0x02
128#define CHARGER29_STAT1_WAKE2_FLAG 0x01
134#define CHARGER29_FLAG0_TS_FAULT 0x80
135#define CHARGER29_FLAG0_ILIM_ACTIVE_FLAG 0x40
136#define CHARGER29_FLAG0_VDPPM_ACTIVE_FLAG 0x20
137#define CHARGER29_FLAG0_VINDPM_ACTIVE_FLAG 0x10
138#define CHARGER29_FLAG0_THERMREG_ACTIVE_FLAG 0x08
139#define CHARGER29_FLAG0_VIN_OVP_FAULT_FLAG 0x04
140#define CHARGER29_FLAG0_BUVLO_FAULT_FLAG 0x02
141#define CHARGER29_FLAG0_BAT_OCP_FAULT 0x01
147#define CHARGER29_VBAT_CTRL_PG_MODE_PG 0x00
148#define CHARGER29_VBAT_CTRL_PG_MODE_GPO 0x80
149#define CHARGER29_VBAT_CTRL_PG_MODE_MASK 0x80
150#define CHARGER29_VBAT_CTRL_VBATREG_MASK 0x7F
156#define CHARGER29_ICHG_CTRL_CHG_DIS_ENABLED 0x00
157#define CHARGER29_ICHG_CTRL_CHG_DIS_DISABLED 0x80
158#define CHARGER29_ICHG_CTRL_CHG_DIS_MASK 0x80
159#define CHARGER29_ICHG_CTRL_ICHG_MASK 0x7F
165#define CHARGER29_CHARGECTRL0_EN_FC_MODE_DIS 0x00
166#define CHARGER29_CHARGECTRL0_EN_FC_MODE_EN 0x80
167#define CHARGER29_CHARGECTRL0_EN_FC_MODE_MASK 0x80
168#define CHARGER29_CHARGECTRL0_IPRECHG_2X_TERM 0x00
169#define CHARGER29_CHARGECTRL0_IPRECHG_TERM 0x40
170#define CHARGER29_CHARGECTRL0_IPRECHG_MASK 0x40
171#define CHARGER29_CHARGECTRL0_ITERM_DISABLE 0x00
172#define CHARGER29_CHARGECTRL0_ITERM_5PCT_ICHG 0x10
173#define CHARGER29_CHARGECTRL0_ITERM_10PCT_ICHG 0x20
174#define CHARGER29_CHARGECTRL0_ITERM_20PCT_ICHG 0x30
175#define CHARGER29_CHARGECTRL0_ITERM_MASK 0x30
176#define CHARGER29_CHARGECTRL0_VINDPM_VBAT_300MV 0x00
177#define CHARGER29_CHARGECTRL0_VINDPM_4_5V 0x04
178#define CHARGER29_CHARGECTRL0_VINDPM_4_7V 0x08
179#define CHARGER29_CHARGECTRL0_VINDPM_DISABLE 0x0C
180#define CHARGER29_CHARGECTRL0_VINDPM_MASK 0x0C
181#define CHARGER29_CHARGECTRL0_THERM_REG_100C 0x00
182#define CHARGER29_CHARGECTRL0_THERM_REG_80C 0x01
183#define CHARGER29_CHARGECTRL0_THERM_REG_60C 0x02
184#define CHARGER29_CHARGECTRL0_THERM_REG_DISABLE 0x03
185#define CHARGER29_CHARGECTRL0_THERM_REG_MASK 0x03
191#define CHARGER29_CHARGECTRL1_IBAT_OCP_500MA 0x00
192#define CHARGER29_CHARGECTRL1_IBAT_OCP_1000MA 0x40
193#define CHARGER29_CHARGECTRL1_IBAT_OCP_1500MA 0x80
194#define CHARGER29_CHARGECTRL1_IBAT_OCP_3000MA 0xC0
195#define CHARGER29_CHARGECTRL1_IBAT_OCP_MASK 0xC0
196#define CHARGER29_CHARGECTRL1_BUVLO_3_0V 0x10
197#define CHARGER29_CHARGECTRL1_BUVLO_2_8V 0x18
198#define CHARGER29_CHARGECTRL1_BUVLO_2_6V 0x20
199#define CHARGER29_CHARGECTRL1_BUVLO_2_4V 0x28
200#define CHARGER29_CHARGECTRL1_BUVLO_2_2V 0x30
201#define CHARGER29_CHARGECTRL1_BUVLO_2_0V 0x38
202#define CHARGER29_CHARGECTRL1_BUVLO_MASK 0x38
203#define CHARGER29_CHARGECTRL1_CHG_STATUS_INT_MASK 0x04
204#define CHARGER29_CHARGECTRL1_ILIM_INT_MASK 0x02
205#define CHARGER29_CHARGECTRL1_VINDPM_INT_MASK 0x01
211#define CHARGER29_IC_CTRL_TS_EN_DISABLE 0x00
212#define CHARGER29_IC_CTRL_TS_EN_ENABLE 0x80
213#define CHARGER29_IC_CTRL_TS_EN_MASK 0x80
214#define CHARGER29_IC_CTRL_VLOWV_SEL_3V 0x00
215#define CHARGER29_IC_CTRL_VLOWV_SEL_2_8V 0x40
216#define CHARGER29_IC_CTRL_VLOWV_SEL_MASK 0x40
217#define CHARGER29_IC_CTRL_VRCH_100MV 0x00
218#define CHARGER29_IC_CTRL_VRCH_200MV 0x20
219#define CHARGER29_IC_CTRL_VRCH_MASK 0x20
220#define CHARGER29_IC_CTRL_2XTMR_EN_DISABLE 0x00
221#define CHARGER29_IC_CTRL_2XTMR_EN_ENABLE 0x10
222#define CHARGER29_IC_CTRL_2XTMR_EN_MASK 0x10
223#define CHARGER29_IC_CTRL_SAFETY_TIMER_3H 0x00
224#define CHARGER29_IC_CTRL_SAFETY_TIMER_6H 0x04
225#define CHARGER29_IC_CTRL_SAFETY_TIMER_12H 0x08
226#define CHARGER29_IC_CTRL_SAFETY_TIMER_DISABLE 0x0C
227#define CHARGER29_IC_CTRL_SAFETY_TIMER_MASK 0x0C
228#define CHARGER29_IC_CTRL_WATCHDOG_SEL_160S_DEFAULT 0x00
229#define CHARGER29_IC_CTRL_WATCHDOG_SEL_160S_RESET 0x01
230#define CHARGER29_IC_CTRL_WATCHDOG_SEL_40S_RESET 0x02
231#define CHARGER29_IC_CTRL_WATCHDOG_SEL_DISABLE 0x03
232#define CHARGER29_IC_CTRL_WATCHDOG_SEL_MASK 0x03
238#define CHARGER29_TMR_ILIM_MR_LPRESS_5S 0x00
239#define CHARGER29_TMR_ILIM_MR_LPRESS_10S 0x40
240#define CHARGER29_TMR_ILIM_MR_LPRESS_15S 0x80
241#define CHARGER29_TMR_ILIM_MR_LPRESS_20S 0xC0
242#define CHARGER29_TMR_ILIM_MR_LPRESS_MASK 0xC0
243#define CHARGER29_TMR_ILIM_MR_RESET_VIN 0x20
244#define CHARGER29_TMR_ILIM_AUTOWAKE_0_5S 0x00
245#define CHARGER29_TMR_ILIM_AUTOWAKE_1S 0x08
246#define CHARGER29_TMR_ILIM_AUTOWAKE_2S 0x10
247#define CHARGER29_TMR_ILIM_AUTOWAKE_4S 0x18
248#define CHARGER29_TMR_ILIM_AUTOWAKE_MASK 0x18
249#define CHARGER29_TMR_ILIM_ILIM_50MA 0x00
250#define CHARGER29_TMR_ILIM_ILIM_100MA 0x01
251#define CHARGER29_TMR_ILIM_ILIM_200MA 0x02
252#define CHARGER29_TMR_ILIM_ILIM_300MA 0x03
253#define CHARGER29_TMR_ILIM_ILIM_400MA 0x04
254#define CHARGER29_TMR_ILIM_ILIM_500MA 0x05
255#define CHARGER29_TMR_ILIM_ILIM_665MA 0x06
256#define CHARGER29_TMR_ILIM_ILIM_1050MA 0x07
257#define CHARGER29_TMR_ILIM_ILIM_MASK 0x07
263#define CHARGER29_SHIP_RST_REG_RST_NOTHING 0x00
264#define CHARGER29_SHIP_RST_REG_RST_RESET 0x80
265#define CHARGER29_SHIP_RST_REG_RST_MASK 0x80
266#define CHARGER29_SHIP_RST_EN_RST_SHIP_NOTHING 0x00
267#define CHARGER29_SHIP_RST_EN_RST_SHIP_SHUTDOWN 0x20
268#define CHARGER29_SHIP_RST_EN_RST_SHIP_SHIP 0x40
269#define CHARGER29_SHIP_RST_EN_RST_SHIP_HW_RESET 0x60
270#define CHARGER29_SHIP_RST_EN_RST_SHIP_MASK 0x60
271#define CHARGER29_SHIP_RST_PB_LPRESS_ACTION_NOTHING 0x00
272#define CHARGER29_SHIP_RST_PB_LPRESS_ACTION_RESET 0x08
273#define CHARGER29_SHIP_RST_PB_LPRESS_ACTION_SHIP 0x10
274#define CHARGER29_SHIP_RST_PB_LPRESS_ACTION_SHUTDN 0x18
275#define CHARGER29_SHIP_RST_PB_LPRESS_ACTION_MASK 0x18
276#define CHARGER29_SHIP_RST_WAKE1_TMR_300MS 0x00
277#define CHARGER29_SHIP_RST_WAKE1_TMR_1S 0x04
278#define CHARGER29_SHIP_RST_WAKE1_TMR_MASK 0x04
279#define CHARGER29_SHIP_RST_WAKE2_TMR_2S 0x00
280#define CHARGER29_SHIP_RST_WAKE2_TMR_3S 0x02
281#define CHARGER29_SHIP_RST_WAKE2_TMR_MASK 0x02
282#define CHARGER29_SHIP_RST_EN_PUSH_DISABLE 0x00
283#define CHARGER29_SHIP_RST_EN_PUSH_ENABLE 0x01
284#define CHARGER29_SHIP_RST_EN_PUSH_MASK 0x01
290#define CHARGER29_SYS_REG_SYS_REG_CTRL_TRACKING 0x00
291#define CHARGER29_SYS_REG_SYS_REG_CTRL_4_4V 0x20
292#define CHARGER29_SYS_REG_SYS_REG_CTRL_4_5V 0x40
293#define CHARGER29_SYS_REG_SYS_REG_CTRL_4_6V 0x60
294#define CHARGER29_SYS_REG_SYS_REG_CTRL_4_7V 0x80
295#define CHARGER29_SYS_REG_SYS_REG_CTRL_4_8V 0xA0
296#define CHARGER29_SYS_REG_SYS_REG_CTRL_4_9V 0xC0
297#define CHARGER29_SYS_REG_SYS_REG_CTRL_PASS_THROUGH 0xE0
298#define CHARGER29_SYS_REG_SYS_REG_CTRL_MASK 0xE0
299#define CHARGER29_SYS_REG_PG_GPO_HIGH_Z 0x00
300#define CHARGER29_SYS_REG_PG_GPO_LOW 0x10
301#define CHARGER29_SYS_REG_PG_GPO_MASK 0x10
302#define CHARGER29_SYS_REG_SYS_MODE_VIN 0x00
303#define CHARGER29_SYS_REG_SYS_MODE_VBAT 0x04
304#define CHARGER29_SYS_REG_SYS_MODE_FLOAT 0x08
305#define CHARGER29_SYS_REG_SYS_MODE_PULLDOWN 0x0C
306#define CHARGER29_SYS_REG_SYS_MODE_MASK 0x0C
307#define CHARGER29_SYS_REG_WATCHDOG_15S_ENABLE_DIS 0x00
308#define CHARGER29_SYS_REG_WATCHDOG_15S_ENABLE_RESET 0x02
309#define CHARGER29_SYS_REG_WATCHDOG_15S_ENABLE_MASK 0x02
310#define CHARGER29_SYS_REG_VDPPM_DIS_ENABLE 0x00
311#define CHARGER29_SYS_REG_VDPPM_DIS_DISABLE 0x01
312#define CHARGER29_SYS_REG_VDPPM_DIS_MASK 0x01
318#define CHARGER29_TS_CONTROL_TS_HOT_60C 0x00
319#define CHARGER29_TS_CONTROL_TS_HOT_65C 0x40
320#define CHARGER29_TS_CONTROL_TS_HOT_50C 0x80
321#define CHARGER29_TS_CONTROL_TS_HOT_45C 0xC0
322#define CHARGER29_TS_CONTROL_TS_HOT_MASK 0xC0
323#define CHARGER29_TS_CONTROL_TS_COLD_0C 0x00
324#define CHARGER29_TS_CONTROL_TS_COLD_3C 0x10
325#define CHARGER29_TS_CONTROL_TS_COLD_5C 0x20
326#define CHARGER29_TS_CONTROL_TS_COLD_MIN_3C 0x30
327#define CHARGER29_TS_CONTROL_TS_COLD_MASK 0x30
328#define CHARGER29_TS_CONTROL_TS_WARM_DIS_45C 0x00
329#define CHARGER29_TS_CONTROL_TS_WARM_DIS_DISABLE 0x08
330#define CHARGER29_TS_CONTROL_TS_WARM_DIS_MASK 0x08
331#define CHARGER29_TS_CONTROL_TS_COOL_DIS_10C 0x00
332#define CHARGER29_TS_CONTROL_TS_COOL_DIS_DISABLE 0x04
333#define CHARGER29_TS_CONTROL_TS_COOL_DIS_MASK 0x04
334#define CHARGER29_TS_CONTROL_TS_ICHG_0_5_ICHG 0x00
335#define CHARGER29_TS_CONTROL_TS_ICHG_0_2_ICHG 0x02
336#define CHARGER29_TS_CONTROL_TS_ICHG_MASK 0x02
337#define CHARGER29_TS_CONTROL_TS_VRCG_VBATREG_100MV 0x00
338#define CHARGER29_TS_CONTROL_TS_VRCG_VBATREG_200MV 0x01
339#define CHARGER29_TS_CONTROL_TS_VRCG_MASK 0x01
345#define CHARGER29_MASK_ID_TS_INT_MASK 0x80
346#define CHARGER29_MASK_ID_TREG_INT_MASK 0x40
347#define CHARGER29_MASK_ID_BAT_INT_MASK 0x20
348#define CHARGER29_MASK_ID_PG_INT_MASK 0x10
349#define CHARGER29_MASK_ID_DEVICE_ID 0x04
350#define CHARGER29_MASK_ID_DEVICE_ID_MASK 0x0F
356#define CHARGER29_ICHG_MIN 5
357#define CHARGER29_ICHG_MAX 1000
358#define CHARGER29_ICHG_RES_POINT 35
359#define CHARGER29_ICHG_RES_DIVIDER 10
360#define CHARGER29_ICHG_RES_OFFSET 31
361#define CHARGER29_ICHG_DEFAULT 200
367#define CHARGER29_VBAT_MIN 3500
368#define CHARGER29_VBAT_MAX 4650
369#define CHARGER29_VBAT_RES_DIVIDER 10
370#define CHARGER29_VBAT_DEFAULT 4200
377#define CHARGER29_DEVICE_ADDRESS 0x6A
395#define CHARGER29_MAP_MIKROBUS( cfg, mikrobus ) \
396 cfg.scl = MIKROBUS( mikrobus, MIKROBUS_SCL ); \
397 cfg.sda = MIKROBUS( mikrobus, MIKROBUS_SDA ); \
398 cfg.int_pin = MIKROBUS( mikrobus, MIKROBUS_INT )
charger29_return_value_t
Charger 29 Click return value data.
Definition charger29.h:453
@ CHARGER29_ERROR
Definition charger29.h:455
@ CHARGER29_OK
Definition charger29.h:454
err_t charger29_read_regs(charger29_t *ctx, uint8_t reg, uint8_t *data_out, uint8_t len)
Charger 29 read registers function.
err_t charger29_read_status(charger29_t *ctx, charger29_status_t *status)
Charger 29 read status function.
err_t charger29_default_cfg(charger29_t *ctx)
Charger 29 default configuration function.
err_t charger29_write_reg(charger29_t *ctx, uint8_t reg, uint8_t data_in)
Charger 29 write register function.
err_t charger29_init(charger29_t *ctx, charger29_cfg_t *cfg)
Charger 29 initialization function.
uint8_t charger29_get_int_pin(charger29_t *ctx)
Charger 29 get INT pin function.
err_t charger29_write_regs(charger29_t *ctx, uint8_t reg, uint8_t *data_in, uint8_t len)
Charger 29 write registers function.
err_t charger29_disable_charging(charger29_t *ctx)
Charger 29 disable charging function.
err_t charger29_enable_charging(charger29_t *ctx)
Charger 29 enable charging function.
err_t charger29_check_communication(charger29_t *ctx)
Charger 29 check communication function.
err_t charger29_sw_reset(charger29_t *ctx)
Charger 29 software reset function.
err_t charger29_set_charging_current(charger29_t *ctx, uint16_t ichg)
Charger 29 set charging current function.
err_t charger29_read_reg(charger29_t *ctx, uint8_t reg, uint8_t *data_out)
Charger 29 read register function.
err_t charger29_set_vbat_reg(charger29_t *ctx, uint16_t vbat_mv)
Charger 29 set battery regulation voltage function.
void charger29_cfg_setup(charger29_cfg_t *cfg)
Charger 29 configuration object setup function.
Charger 29 Click configuration object.
Definition charger29.h:437
uint32_t i2c_speed
Definition charger29.h:443
pin_name_t scl
Definition charger29.h:438
pin_name_t int_pin
Definition charger29.h:441
pin_name_t sda
Definition charger29.h:439
uint8_t i2c_address
Definition charger29.h:444
Charger 29 Click status object.
Definition charger29.h:408
uint8_t flag0
Definition charger29.h:411
uint8_t stat1
Definition charger29.h:410
uint8_t stat0
Definition charger29.h:409
Charger 29 Click context object.
Definition charger29.h:420
digital_in_t int_pin
Definition charger29.h:422
i2c_master_t i2c
Definition charger29.h:425
uint8_t slave_address
Definition charger29.h:428