charger17 2.1.0.0
charger17.h
Go to the documentation of this file.
1/****************************************************************************
2** Copyright (C) 2020 MikroElektronika d.o.o.
3** Contact: https://www.mikroe.com/contact
4**
5** Permission is hereby granted, free of charge, to any person obtaining a copy
6** of this software and associated documentation files (the "Software"), to deal
7** in the Software without restriction, including without limitation the rights
8** to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9** copies of the Software, and to permit persons to whom the Software is
10** furnished to do so, subject to the following conditions:
11** The above copyright notice and this permission notice shall be
12** included in all copies or substantial portions of the Software.
13**
14** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
16** OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
17** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
18** DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT
19** OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
20** USE OR OTHER DEALINGS IN THE SOFTWARE.
21****************************************************************************/
22
28#ifndef CHARGER17_H
29#define CHARGER17_H
30
31#ifdef __cplusplus
32extern "C"{
33#endif
34
39#ifdef PREINIT_SUPPORTED
40#include "preinit.h"
41#endif
42
43#ifdef MikroCCoreVersion
44 #if MikroCCoreVersion >= 1
45 #include "delays.h"
46 #endif
47#endif
48
49#include "drv_digital_out.h"
50#include "drv_digital_in.h"
51#include "drv_i2c_master.h"
52
73#define CHARGER17_REG_OTG_CONFIG 0x00
74#define CHARGER17_REG_TOP 0x01
75#define CHARGER17_REG_FUNCTION 0x02
76#define CHARGER17_REG_IBUS 0x03
77#define CHARGER17_REG_VBUS 0x04
78#define CHARGER17_REG_PRECHG 0x05
79#define CHARGER17_REG_REGU 0x06
80#define CHARGER17_REG_VCHG 0x07
81#define CHARGER17_REG_ICHG 0x08
82#define CHARGER17_REG_CHG_TIMER 0x09
83#define CHARGER17_REG_EOC 0x0A
84#define CHARGER17_REG_INFO 0x0B
85#define CHARGER17_REG_JEITA 0x0C
86#define CHARGER17_REG_PUMP_EXP 0x0D
87#define CHARGER17_REG_DPDM_DET 0x0E
88#define CHARGER17_REG_IC_STATUS 0x0F
89#define CHARGER17_REG_STAT0 0x10
90#define CHARGER17_REG_STAT1 0x11
91#define CHARGER17_REG_STAT2 0x12
92#define CHARGER17_REG_STAT3 0x13
93#define CHARGER17_REG_IRQ0 0x20
94#define CHARGER17_REG_IRQ1 0x21
95#define CHARGER17_REG_IRQ2 0x22
96#define CHARGER17_REG_IRQ3 0x23
97#define CHARGER17_REG_MASK0 0x30
98#define CHARGER17_REG_MASK1 0x31
99#define CHARGER17_REG_MASK2 0x32
100#define CHARGER17_REG_MASK3 0x33
101
102 // charger17_reg
103
118#define CHARGER17_OTG_CV_4p85V 0x00
119#define CHARGER17_OTG_CV_5V 0x40
120#define CHARGER17_OTG_CV_5p15V 0x80
121#define CHARGER17_OTG_CV_5p3V 0xC0
122#define CHARGER17_OTG_CV_MASK 0xC0
123#define CHARGER17_OTG_LBP_2p8V 0x00
124#define CHARGER17_OTG_LBP_2p5V 0x02
125#define CHARGER17_OTG_LBP_MASK 0x02
126#define CHARGER17_OTG_CC_0p5A 0x00
127#define CHARGER17_OTG_CC_1p2A 0x01
128#define CHARGER17_OTG_CC_MASK 0x01
129
134#define CHARGER17_TOP_QON_RST_EN 0x80
135#define CHARGER17_TOP_STAT_EN 0x40
136#define CHARGER17_TOP_DIS_I2C_TO 0x08
137#define CHARGER17_TOP_WDT_CNT_RST 0x04
138#define CHARGER17_TOP_WDT_DISABLE 0x00
139#define CHARGER17_TOP_WDT_40S 0x01
140#define CHARGER17_TOP_WDT_80S 0x02
141#define CHARGER17_TOP_WDT_160S 0x03
142#define CHARGER17_TOP_WDT_MASK 0x03
143
148#define CHARGER17_FUNCTION_BATFET_DIS 0x80
149#define CHARGER17_FUNCTION_BATFET_DIS_DLY_12S 0x40
150#define CHARGER17_FUNCTION_HZ 0x20
151#define CHARGER17_FUNCTION_BUCK_PFM_DIS 0x08
152#define CHARGER17_FUNCTION_UUG_FULLON 0x04
153#define CHARGER17_FUNCTION_OTG_EN 0x02
154#define CHARGER17_FUNCTION_CHG_EN 0x01
155
160#define CHARGER17_IBUS_AICC_EN 0x80
161#define CHARGER17_IBUS_AUTO_AICR 0x40
162#define CHARGER17_IBUS_IAICR(x) ( ( uint8_t ) ( x / 50 ) & 0x3F ) // valid values 50mA to 3200mA
163
168#define CHARGER17_VBUS_VAC_OVP_5p8V 0x00
169#define CHARGER17_VBUS_VAC_OVP_6p5V 0x40
170#define CHARGER17_VBUS_VAC_OVP_10p9V 0x80
171#define CHARGER17_VBUS_VAC_OVP_14V 0xC0
172#define CHARGER17_VBUS_VAC_OVP_MASK 0xC0
173#define CHARGER17_VBUS_VMIVR_BAT_TRACK_4300mV 0x00
174#define CHARGER17_VBUS_VMIVR_BAT_TRACK_VBAT_200 0x10
175#define CHARGER17_VBUS_VMIVR_BAT_TRACK_VBAT_250 0x20
176#define CHARGER17_VBUS_VMIVR_BAT_TRACK_VBAT_350 0x30
177#define CHARGER17_VBUS_VMIVR_BAT_TRACK_MASK 0x30
178#define CHARGER17_VBUS_VMIVR(x) ( ( uint8_t ) ( ( x - 3900 ) / 100 ) & 0x0F ) // valid values 3900mV to 5400mV
179
184#define CHARGER17_PRECHG_V(x) ( ( ( uint8_t ) ( ( x - 2700 ) / 100 ) & 0x07 ) << 4 ) // valid values 2700mV to 3400mV
185#define CHARGER17_PRECHG_I(x) ( ( uint8_t ) ( ( x - 50 ) / 50 ) & 0x0F ) // valid values 50mA to 800mA
186
191#define CHARGER17_REGU_THREG_100_DEGC 0x00
192#define CHARGER17_REGU_THREG_120_DEGC 0x40
193#define CHARGER17_REGU_THREG_MASK 0x40
194#define CHARGER17_REGU_VSYS_MIN(x) ( ( uint8_t ) ( ( x - 2600 ) / 100 ) & 0x0F ) // valid values 2600mV to 4100mV
195
200#define CHARGER17_VCHG_VPRE_CHG_100mV 0x00
201#define CHARGER17_VCHG_VPRE_CHG_200mV 0x80
202#define CHARGER17_VCHG_VPRE_CHG_MASK 0x80
203#define CHARGER17_VCHG_VBAT_REG(x) ( ( uint8_t ) ( ( x - 3900 ) / 10 ) & 0x7F ) // valid values 3900mV to 4700mV
204
209#define CHARGER17_ICHG_REG(x) ( ( uint8_t ) ( x / 50 ) & 0x3F ) // valid values 0mA to 3150mV
210
215#define CHARGER17_CHG_TIMER_CHG_SAFE_TMR_EN 0x80
216#define CHARGER17_CHG_TIMER_CHG_SAFE_TMR_2XT 0x40
217#define CHARGER17_CHG_TIMER_CHG_SAFE_TMR_5HR 0x00
218#define CHARGER17_CHG_TIMER_CHG_SAFE_TMR_10HR 0x10
219#define CHARGER17_CHG_TIMER_CHG_SAFE_TMR_15HR 0x20
220#define CHARGER17_CHG_TIMER_CHG_SAFE_TMR_20HR 0x30
221#define CHARGER17_CHG_TIMER_MASK 0x30
222
227#define CHARGER17_EOC_IEOC_CHG(x) ( ( ( uint8_t ) ( ( x - 50 ) / 50 ) & 0x0F ) << 4 ) // valid values 50mA to 800mA
228#define CHARGER17_EOC_BG_CHG_TMR_0MIN 0x00
229#define CHARGER17_EOC_BG_CHG_TMR_15MIN 0x04
230#define CHARGER17_EOC_BG_CHG_TMR_30MIN 0x08
231#define CHARGER17_EOC_BG_CHG_TMR_45MIN 0x0C
232#define CHARGER17_EOC_BG_CHG_TMR_MASK 0x0C
233#define CHARGER17_EOC_TE 0x02
234#define CHARGER17_EOC_RST 0x01
235
240#define CHARGER17_INFO_REG_RST 0x80
241#define CHARGER17_INFO_DEVICE_ID 0x68
242#define CHARGER17_INFO_DEVICE_ID_MASK 0x78
243#define CHARGER17_INFO_DEVICE_RE_MASK 0x07
244
249#define CHARGER17_JEITA_EN 0x80
250#define CHARGER17_JEITA_COLD 0x40
251#define CHARGER17_JEITA_COOL_ISET_50PCT 0x00
252#define CHARGER17_JEITA_COOL_ISET_25PCT 0x20
253#define CHARGER17_JEITA_COOL_ISET_MASK 0x20
254#define CHARGER17_JEITA_COOL_VSET_4p1V 0x00
255#define CHARGER17_JEITA_COOL_VSET_VBAT_REG 0x10
256#define CHARGER17_JEITA_COOL_VSET_MASK 0x10
257#define CHARGER17_JEITA_WARM_ISET_50PCT 0x00
258#define CHARGER17_JEITA_WARM_ISET_ICHG_REG 0x08
259#define CHARGER17_JEITA_WARM_ISET_MASK 0x08
260#define CHARGER17_JEITA_WARM_VSET_4p1V 0x00
261#define CHARGER17_JEITA_WARM_VSET_VBAT_REG 0x04
262#define CHARGER17_JEITA_WARM_VSET_MASK 0x04
263#define CHARGER17_JEITA_HOT 0x02
264
269#define CHARGER17_PUMP_EXP_PE_EN 0x80
270#define CHARGER17_PUMP_EXP_PE_SEL_PE10 0x00
271#define CHARGER17_PUMP_EXP_PE_SEL_PE20 0x40
272#define CHARGER17_PUMP_EXP_PE_SEL_MASK 0x40
273#define CHARGER17_PUMP_EXP_PE10_INC_VDOWN 0x00
274#define CHARGER17_PUMP_EXP_PE10_INC_VUP 0x20
275#define CHARGER17_PUMP_EXP_PE10_INC_MASK 0x20
276#define CHARGER17_PUMP_EXP_PE_EN 0x80
277#define CHARGER17_PUMP_EXP_PE_EN 0x80
278#define CHARGER17_PUMP_EXP_PE20_CODE(x) ( ( uint8_t ) ( ( ( float ) x - 5.5 ) / 0.5 ) & 0x1F ) // valid values 5.5V to 20V
279#define CHARGER17_PUMP_EXP_PE20_CODE_SELF_TEST 0x1E
280#define CHARGER17_PUMP_EXP_PE20_CODE_DIS_DROP 0x1F
281
286#define CHARGER17_DPDM_DET_BC12_EN 0x80
287#define CHARGER17_DPDM_DET_DCDT_SEL_DIS 0x00
288#define CHARGER17_DPDM_DET_DCDT_SEL_300mS 0x20
289#define CHARGER17_DPDM_DET_DCDT_SEL_600mS 0x40
290#define CHARGER17_DPDM_DET_DCDT_SEL_WAIT_DATA 0x60
291#define CHARGER17_DPDM_DET_DCDT_SEL_MASK 0x60
292#define CHARGER17_DPDM_DET_SPEC_TA_EN 0x10
293#define CHARGER17_DPDM_DET_DCP_DP_OPT 0x01
294
299#define CHARGER17_PORT_STAT_VBUS_DEV_1 0x80
300#define CHARGER17_PORT_STAT_VBUS_DEV_2 0x90
301#define CHARGER17_PORT_STAT_VBUS_DEV_3 0xA0
302#define CHARGER17_PORT_STAT_VBUS_DEV_4 0xB0
303#define CHARGER17_PORT_STAT_VBUS_UNKNOWN 0xC0
304#define CHARGER17_PORT_STAT_VBUS_SDP 0xD0
305#define CHARGER17_PORT_STAT_VBUS_CDP 0xE0
306#define CHARGER17_PORT_STAT_VBUS_DCP 0xF0
307#define CHARGER17_PORT_STAT_BIT_MASK 0xF0
308#define CHARGER17_IC_STAT_HZ_SLEEP 0x00
309#define CHARGER17_IC_STAT_VBUS_READY 0x01
310#define CHARGER17_IC_STAT_TRICKLE_CHG 0x02
311#define CHARGER17_IC_STAT_PRE_CHG 0x03
312#define CHARGER17_IC_STAT_FAST_CHG 0x04
313#define CHARGER17_IC_STAT_IEOC_CHG 0x05
314#define CHARGER17_IC_STAT_BACK_GROUND_CHG 0x06
315#define CHARGER17_IC_STAT_CHG_DONE 0x07
316#define CHARGER17_IC_STAT_CHG_FAULT 0x08
317#define CHARGER17_IC_STAT_OTG 0x0F
318#define CHARGER17_IC_STAT_BIT_MASK 0x0F
319
324#define CHARGER17_STAT0_VBUS_GD 0x80
325#define CHARGER17_STAT0_CHG_RDY 0x40
326#define CHARGER17_STAT0_IEOC 0x20
327#define CHARGER17_STAT0_BG_CHG 0x10
328#define CHARGER17_STAT0_CHG_DONE 0x08
329#define CHARGER17_STAT0_BC12_DONE 0x01
330
335#define CHARGER17_STAT1_CHG_MIVR 0x80
336#define CHARGER17_STAT1_CHG_AICR 0x40
337#define CHARGER17_STAT1_CHG_THREG 0x20
338#define CHARGER17_STAT1_CHG_BUSUV 0x10
339#define CHARGER17_STAT1_CHG_TOUT 0x08
340#define CHARGER17_STAT1_CHG_SYSOV 0x04
341#define CHARGER17_STAT1_CHG_BATOV 0x02
342
347#define CHARGER17_STAT2_JEITA_HOT 0x80
348#define CHARGER17_STAT2_JEITA_WARM 0x40
349#define CHARGER17_STAT2_JEITA_COOL 0x20
350#define CHARGER17_STAT2_JEITA_COLD 0x10
351#define CHARGER17_STAT2_SYS_MIN 0x02
352
357#define CHARGER17_STAT3_OTP 0x80
358#define CHARGER17_STAT3_VAC_OV 0x40
359#define CHARGER17_STAT3_WDT 0x20
360#define CHARGER17_STAT3_OTG_CC 0x04
361
367#define CHARGER17_DEVICE_ADDRESS 0x53
368
369 // charger17_set
370
385#define CHARGER17_MAP_MIKROBUS( cfg, mikrobus ) \
386 cfg.scl = MIKROBUS( mikrobus, MIKROBUS_SCL ); \
387 cfg.sda = MIKROBUS( mikrobus, MIKROBUS_SDA ); \
388 cfg.ce = MIKROBUS( mikrobus, MIKROBUS_CS ); \
389 cfg.qon = MIKROBUS( mikrobus, MIKROBUS_RST ); \
390 cfg.psel = MIKROBUS( mikrobus, MIKROBUS_PWM ); \
391 cfg.int_pin = MIKROBUS( mikrobus, MIKROBUS_INT )
392
393 // charger17_map
394 // charger17
395
400typedef struct
401{
402 // Output pins
403 digital_out_t ce;
404 digital_out_t qon;
405 digital_out_t psel;
407 // Input pins
408 digital_in_t int_pin;
410 // Modules
411 i2c_master_t i2c;
413 // I2C slave address
417
422typedef struct
423{
424 pin_name_t scl;
425 pin_name_t sda;
427 pin_name_t ce;
428 pin_name_t qon;
429 pin_name_t psel;
430 pin_name_t int_pin;
432 uint32_t i2c_speed;
433 uint8_t i2c_address;
436
447
464
479
493
508err_t charger17_generic_write ( charger17_t *ctx, uint8_t reg, uint8_t *data_in, uint8_t len );
509
524err_t charger17_generic_read ( charger17_t *ctx, uint8_t reg, uint8_t *data_out, uint8_t len );
525
538err_t charger17_write_register ( charger17_t *ctx, uint8_t reg, uint8_t data_in );
539
552err_t charger17_read_register ( charger17_t *ctx, uint8_t reg, uint8_t *data_out );
553
565
575void charger17_set_qon_pin ( charger17_t *ctx, uint8_t state );
576
586
596
606
616
626
627#ifdef __cplusplus
628}
629#endif
630#endif // CHARGER17_H
631
632 // charger17
633
634// ------------------------------------------------------------------------ END
charger17_return_value_t
Charger 17 Click return value data.
Definition charger17.h:442
@ CHARGER17_ERROR
Definition charger17.h:444
@ CHARGER17_OK
Definition charger17.h:443
err_t charger17_read_register(charger17_t *ctx, uint8_t reg, uint8_t *data_out)
Charger 17 read register function.
err_t charger17_init(charger17_t *ctx, charger17_cfg_t *cfg)
Charger 17 initialization function.
err_t charger17_default_cfg(charger17_t *ctx)
Charger 17 default configuration function.
void charger17_set_psel_500mA(charger17_t *ctx)
Charger 17 set psel 500mA function.
err_t charger17_generic_read(charger17_t *ctx, uint8_t reg, uint8_t *data_out, uint8_t len)
Charger 17 I2C reading function.
void charger17_enable_charging(charger17_t *ctx)
Charger 17 enable charging function.
void charger17_set_psel_2400mA(charger17_t *ctx)
Charger 17 set psel 2400mA function.
err_t charger17_write_register(charger17_t *ctx, uint8_t reg, uint8_t data_in)
Charger 17 write register function.
void charger17_set_qon_pin(charger17_t *ctx, uint8_t state)
Charger 17 set qon pin function.
void charger17_cfg_setup(charger17_cfg_t *cfg)
Charger 17 configuration object setup function.
uint8_t charger17_get_int_pin(charger17_t *ctx)
Charger 17 get int pin function.
err_t charger17_generic_write(charger17_t *ctx, uint8_t reg, uint8_t *data_in, uint8_t len)
Charger 17 I2C writing function.
void charger17_disable_charging(charger17_t *ctx)
Charger 17 disable charging function.
err_t charger17_check_communication(charger17_t *ctx)
Charger 17 check communication function.
Charger 17 Click configuration object.
Definition charger17.h:423
uint32_t i2c_speed
Definition charger17.h:432
pin_name_t ce
Definition charger17.h:427
pin_name_t scl
Definition charger17.h:424
pin_name_t int_pin
Definition charger17.h:430
pin_name_t psel
Definition charger17.h:429
pin_name_t qon
Definition charger17.h:428
pin_name_t sda
Definition charger17.h:425
uint8_t i2c_address
Definition charger17.h:433
Charger 17 Click context object.
Definition charger17.h:401
digital_in_t int_pin
Definition charger17.h:408
i2c_master_t i2c
Definition charger17.h:411
digital_out_t qon
Definition charger17.h:404
uint8_t slave_address
Definition charger17.h:414
digital_out_t psel
Definition charger17.h:405
digital_out_t ce
Definition charger17.h:403