battboost2  2.1.0.0
battboost2.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 BATTBOOST2_H
29 #define BATTBOOST2_H
30 
31 #ifdef __cplusplus
32 extern "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 BATTBOOST2_REG_STATUS 0x00
74 #define BATTBOOST2_REG_CHENERGY_3 0x01
75 #define BATTBOOST2_REG_CHENERGY_2 0x02
76 #define BATTBOOST2_REG_CHENERGY_1 0x03
77 #define BATTBOOST2_REG_CHENERGY_0 0x04
78 #define BATTBOOST2_REG_VCAP 0x05
79 #define BATTBOOST2_REG_VCHEND 0x06
80 #define BATTBOOST2_REG_PROFILE_MSB 0x07
81 #define BATTBOOST2_REG_COMMAND 0x08
82 #define BATTBOOST2_REG_SET1 0x09
83 #define BATTBOOST2_REG_SET2 0x0A
84 #define BATTBOOST2_REG_SET3 0x0B
85 #define BATTBOOST2_REG_SET4 0x0C
86 #define BATTBOOST2_REG_SET5 0x0D
87  // battboost2_reg
89 
104 #define BATTBOOST2_STATUS_LOWBAT 0x80
105 #define BATTBOOST2_STATUS_EW 0x40
106 #define BATTBOOST2_STATUS_ALRM 0x20
107 #define BATTBOOST2_STATUS_RDY 0x01
108 
113 #define BATTBOOST2_VCAP_BIT_MASK 0x1F
114 
119 #define BATTBOOST2_VCHEND_BIT_MASK 0x1F
120 
125 #define BATTBOOST2_SET2_VMIN_2_4V 2.4f
126 #define BATTBOOST2_SET2_VMIN_2_6V 2.6f
127 #define BATTBOOST2_SET2_VMIN_2_8V 2.8f
128 #define BATTBOOST2_SET2_VMIN_3_0V 3.0f
129 #define BATTBOOST2_SET2_VMIN_3_2V 3.2f
130 #define BATTBOOST2_SET2_VMIN_BIT_MASK 0xF8
131 #define BATTBOOST2_SET2_ICH_BIT_MASK 0x1F
132 #define BATTBOOST2_SET2_SET_VDH_VBT 0x10
133 
138 #define BATTBOOST2_SET3_VEW_2_4V 0
139 #define BATTBOOST2_SET3_VEW_2_6V 1
140 #define BATTBOOST2_SET3_VEW_2_8V 2
141 #define BATTBOOST2_SET3_VEW_3_0V 3
142 #define BATTBOOST2_SET3_VEW_3_2V 4
143 #define BATTBOOST2_SET3_VEW_3_4V 5
144 #define BATTBOOST2_SET3_VEW_3_6V 6
145 #define BATTBOOST2_SET3_VEW_4_0V 7
146 #define BATTBOOST2_SET3_VEW_4_4V 8
147 #define BATTBOOST2_SET3_VEW_4_8V 9
148 #define BATTBOOST2_SET3_VEW_BIT_MASK 0x0F
149 #define BATTBOOST2_SET3_EEW_DISABLE 0
150 #define BATTBOOST2_SET3_EEW_ENABLE 1
151 
156 #define BATTBOOST2_SET5_OPT_MARG_MIN 0
157 #define BATTBOOST2_SET5_OPT_MARG_NORMAL 1
158 #define BATTBOOST2_SET5_OPT_MARG_SAFE 2
159 #define BATTBOOST2_SET5_OPT_MARG_EXTRA_SAFE 3
160 
165 #define BATTBOOST2_SET4_VCAPMAX_9_9V 0
166 #define BATTBOOST2_SET4_VCAPMAX_11_0V 1
167 #define BATTBOOST2_SET4_VCAPMAX_BIT_MASK 0xEF
168 
169 
174 #define BATTBOOST2_CMD_PROF_0_FIXED_MODE 0
175 #define BATTBOOST2_CMD_PROF_BIT_MASK 0xFC
176 #define BATTBOOST2_CMD_BIT_MASK 0x0F
177 #define BATTBOOST2_PROF_MSB_BIT_MASK 0x03
178 #define BATTBOOST2_PROF_BIT_MASK 0xF0
179 
184 #define BATTBOOST2_OP_MODE_STANDBY 0
185 #define BATTBOOST2_OP_MODE_STBY_BIT_MASK 0x06
186 #define BATTBOOST2_OP_MODE_CHARGE 1
187 #define BATTBOOST2_OP_MODE_CHG_BIT_MASK 0xF0
188 #define BATTBOOST2_OP_MODE_SET_CHARGE 0x02
189 #define BATTBOOST2_OP_MODE_ACTIVE 2
190 #define BATTBOOST2_OP_MODE_SET_ACT_ACTIVE 0x04
191 
196 #define BATTBOOST2_CMD_RESET_BIT_MASK 0x08
197 
202 #define BATTBOOST2_CMD_AUTOMODE_ENABLE 0x80
203 
208 #define BATTBOOST2_SET1_VSET_1_8V 1.8f
209 #define BATTBOOST2_SET1_VSET_2_0V 2.0f
210 #define BATTBOOST2_SET1_VSET_2_2V 2.2f
211 #define BATTBOOST2_SET1_VSET_2_4V 2.4f
212 #define BATTBOOST2_SET1_VSET_2_5V 2.5f
213 #define BATTBOOST2_SET1_VSET_2_6V 2.6f
214 #define BATTBOOST2_SET1_VSET_2_7V 2.7f
215 #define BATTBOOST2_SET1_VSET_2_8V 2.8f
216 #define BATTBOOST2_SET1_VSET_2_9V 2.9f
217 #define BATTBOOST2_SET1_VSET_3_0V 3.0f
218 #define BATTBOOST2_SET1_VSET_3_1V 3.1f
219 #define BATTBOOST2_SET1_VSET_3_2V 3.2f
220 #define BATTBOOST2_SET1_VSET_3_3V 3.3f
221 #define BATTBOOST2_SET1_VSET_3_4V 3.4f
222 #define BATTBOOST2_SET1_VSET_3_5V 3.5f
223 #define BATTBOOST2_SET1_VSET_3_6V 3.6f
224 #define BATTBOOST2_SET1_VSET_BIT_MASK 0xF0
225 #define BATTBOOST2_SET1_VFIX_BIT_MASK 0x0F
226 
231 #define BATTBOOST2_CONDITION_STOP 0
232 #define BATTBOOST2_CONDITION_START 1
233 
238 #define BATTBOOST2_STATUS_NOT_READY 0
239 #define BATTBOOST2_STATUS_READY 1
240 
246 #define BATTBOOST2_DEVICE_ADDRESS_0 0x2E
247 #define BATTBOOST2_DEVICE_ADDRESS_1 0x2F
248  // battboost2_set
250 
265 #define BATTBOOST2_MAP_MIKROBUS( cfg, mikrobus ) \
266  cfg.scl = MIKROBUS( mikrobus, MIKROBUS_SCL ); \
267  cfg.sda = MIKROBUS( mikrobus, MIKROBUS_SDA ); \
268  cfg.on = MIKROBUS( mikrobus, MIKROBUS_RST ); \
269  cfg.rdy = MIKROBUS( mikrobus, MIKROBUS_INT )
270  // battboost2_map // battboost2
273 
278 typedef struct
279 {
280  // Output pins
281  digital_out_t on;
283  // Input pins
284  digital_in_t rdy;
286  // Modules
287  i2c_master_t i2c;
289  // I2C slave address
290  uint8_t slave_address;
292 } battboost2_t;
293 
298 typedef struct
299 {
300  pin_name_t scl;
301  pin_name_t sda;
303  pin_name_t on;
304  pin_name_t rdy;
306  uint32_t i2c_speed;
307  uint8_t i2c_address;
310 
315 typedef enum
316 {
318  BATTBOOST2_ERROR = -1
319 
321 
326 typedef enum
327 {
341 
343 
348 typedef enum
349 {
355 
357 
374 
389 
403 
418 err_t battboost2_generic_write ( battboost2_t *ctx, uint8_t reg, uint8_t *data_in, uint8_t len );
419 
434 err_t battboost2_generic_read ( battboost2_t *ctx, uint8_t reg, uint8_t *data_out, uint8_t len );
435 
451 err_t battboost2_get_status ( battboost2_t *ctx, uint8_t *status );
452 
466 err_t battboost2_get_chenergy ( battboost2_t *ctx, uint32_t *chenergy );
467 
481 err_t battboost2_get_vcap ( battboost2_t *ctx, float *vcap );
482 
496 err_t battboost2_get_vchend ( battboost2_t *ctx, uint8_t *vchend );
497 
511 err_t battboost2_set_prof ( battboost2_t *ctx, uint8_t prof );
512 
526 err_t battboost2_get_prof ( battboost2_t *ctx, uint8_t *prof );
527 
541 err_t battboost2_set_op_mode ( battboost2_t *ctx, uint8_t op_mode );
542 
556 
570 
584 err_t battboost2_set_vset ( battboost2_t *ctx, float vset );
585 
601 
615 err_t battboost2_set_vmin ( battboost2_t *ctx, float vmin );
616 
632 
647 
662 
677 err_t battboost2_set_vew ( battboost2_t *ctx, uint8_t vew, uint8_t eew );
678 
692 err_t battboost2_set_vcapmax ( battboost2_t *ctx, uint8_t vcapmax );
693 
707 err_t battboost2_set_opt_marg ( battboost2_t *ctx, uint8_t opt_marg );
708 
722 void battboost2_set_on_pin_state ( battboost2_t *ctx, uint8_t start );
723 
736 
737 #ifdef __cplusplus
738 }
739 #endif
740 #endif // BATTBOOST2_H
741  // battboost2
743 
744 // ------------------------------------------------------------------------ END
BATTBOOST2_VFIX_5_16V
@ BATTBOOST2_VFIX_5_16V
Definition: battboost2.h:338
BATTBOOST2_VFIX_4_76V
@ BATTBOOST2_VFIX_4_76V
Definition: battboost2.h:336
battboost2_get_status
err_t battboost2_get_status(battboost2_t *ctx, uint8_t *status)
BATT Boost 2 gets the status function.
BATTBOOST2_ICH_8_MA
@ BATTBOOST2_ICH_8_MA
Definition: battboost2.h:352
battboost2_vfix_t
battboost2_vfix_t
BATT Boost 2 Click capacitor end-of-charge voltage.
Definition: battboost2.h:327
battboost2_set_automode
err_t battboost2_set_automode(battboost2_t *ctx)
BATT Boost 2 sets the auto mode function.
BATTBOOST2_ERROR
@ BATTBOOST2_ERROR
Definition: battboost2.h:318
battboost2_set_vmin
err_t battboost2_set_vmin(battboost2_t *ctx, float vmin)
BATT Boost 2 sets the input threshold voltage function.
BATTBOOST2_VFIX_2_60V
@ BATTBOOST2_VFIX_2_60V
Definition: battboost2.h:328
battboost2_t::on
digital_out_t on
Definition: battboost2.h:281
battboost2_get_prof
err_t battboost2_get_prof(battboost2_t *ctx, uint8_t *prof)
BATT Boost 2 gets optimizer profile number function.
battboost2_get_chenergy
err_t battboost2_get_chenergy(battboost2_t *ctx, uint32_t *chenergy)
BATT Boost 2 gets the charge cycle count function.
battboost2_reset_optimizer
err_t battboost2_reset_optimizer(battboost2_t *ctx)
BATT Boost 2 reset optimizer result function.
BATTBOOST2_VFIX_5_54V
@ BATTBOOST2_VFIX_5_54V
Definition: battboost2.h:340
battboost2_t::slave_address
uint8_t slave_address
Definition: battboost2.h:290
battboost2_set_vset
err_t battboost2_set_vset(battboost2_t *ctx, float vset)
BATT Boost 2 sets the output voltage function.
battboost2_t::i2c
i2c_master_t i2c
Definition: battboost2.h:287
BATTBOOST2_ICH_50_MA
@ BATTBOOST2_ICH_50_MA
Definition: battboost2.h:354
battboost2_cfg_t::i2c_address
uint8_t i2c_address
Definition: battboost2.h:307
battboost2_set_ich
err_t battboost2_set_ich(battboost2_t *ctx, battboost2_ich_t ich)
BATT Boost 2 sets the charge current function.
battboost2_high_impedance_mode
err_t battboost2_high_impedance_mode(battboost2_t *ctx)
BATT Boost 2 sets the high-impedance mode function.
battboost2_default_cfg
err_t battboost2_default_cfg(battboost2_t *ctx)
BATT Boost 2 default configuration function.
battboost2_cfg_t::sda
pin_name_t sda
Definition: battboost2.h:301
BATTBOOST2_VFIX_4_95V
@ BATTBOOST2_VFIX_4_95V
Definition: battboost2.h:337
battboost2_return_value_t
battboost2_return_value_t
BATT Boost 2 Click return value data.
Definition: battboost2.h:316
BATTBOOST2_VFIX_4_55V
@ BATTBOOST2_VFIX_4_55V
Definition: battboost2.h:335
BATTBOOST2_VFIX_4_10V
@ BATTBOOST2_VFIX_4_10V
Definition: battboost2.h:333
battboost2_get_ready
uint8_t battboost2_get_ready(battboost2_t *ctx)
BATT Boost 2 gets ready state function.
BATTBOOST2_OK
@ BATTBOOST2_OK
Definition: battboost2.h:317
BATTBOOST2_VFIX_3_27V
@ BATTBOOST2_VFIX_3_27V
Definition: battboost2.h:330
battboost2_t::rdy
digital_in_t rdy
Definition: battboost2.h:284
BATTBOOST2_VFIX_3_84V
@ BATTBOOST2_VFIX_3_84V
Definition: battboost2.h:332
battboost2_cfg_t
BATT Boost 2 Click configuration object.
Definition: battboost2.h:299
battboost2_cfg_t::on
pin_name_t on
Definition: battboost2.h:303
battboost2_set_op_mode
err_t battboost2_set_op_mode(battboost2_t *ctx, uint8_t op_mode)
BATT Boost 2 sets the operating mode function.
battboost2_generic_read
err_t battboost2_generic_read(battboost2_t *ctx, uint8_t reg, uint8_t *data_out, uint8_t len)
BATT Boost 2 I2C reading function.
battboost2_t
BATT Boost 2 Click context object.
Definition: battboost2.h:279
battboost2_set_prof
err_t battboost2_set_prof(battboost2_t *ctx, uint8_t prof)
BATT Boost 2 sets optimizer profile number function.
BATTBOOST2_VFIX_3_57V
@ BATTBOOST2_VFIX_3_57V
Definition: battboost2.h:331
battboost2_get_vcap
err_t battboost2_get_vcap(battboost2_t *ctx, float *vcap)
BATT Boost 2 gets the storage capacitor voltage status function.
battboost2_set_on_pin_state
void battboost2_set_on_pin_state(battboost2_t *ctx, uint8_t start)
BATT Boost 2 sets the ON pin state function.
battboost2_generic_write
err_t battboost2_generic_write(battboost2_t *ctx, uint8_t reg, uint8_t *data_in, uint8_t len)
BATT Boost 2 I2C writing function.
battboost2_set_vew
err_t battboost2_set_vew(battboost2_t *ctx, uint8_t vew, uint8_t eew)
BATT Boost 2 sets the early warning voltage function.
BATTBOOST2_ICH_2_MA
@ BATTBOOST2_ICH_2_MA
Definition: battboost2.h:350
BATTBOOST2_VFIX_2_95V
@ BATTBOOST2_VFIX_2_95V
Definition: battboost2.h:329
battboost2_set_vfix
err_t battboost2_set_vfix(battboost2_t *ctx, battboost2_vfix_t vfix)
BATT Boost 2 sets the end-of-charge voltage function.
battboost2_cfg_t::scl
pin_name_t scl
Definition: battboost2.h:300
BATTBOOST2_VFIX_5_34V
@ BATTBOOST2_VFIX_5_34V
Definition: battboost2.h:339
battboost2_cfg_t::i2c_speed
uint32_t i2c_speed
Definition: battboost2.h:306
battboost2_set_vcapmax
err_t battboost2_set_vcapmax(battboost2_t *ctx, uint8_t vcapmax)
BATT Boost 2 sets the capacitor maximum storage voltage function.
BATTBOOST2_VFIX_4_33V
@ BATTBOOST2_VFIX_4_33V
Definition: battboost2.h:334
battboost2_init
err_t battboost2_init(battboost2_t *ctx, battboost2_cfg_t *cfg)
BATT Boost 2 initialization function.
battboost2_get_vchend
err_t battboost2_get_vchend(battboost2_t *ctx, uint8_t *vchend)
BATT Boost 2 gets the target charge voltage function.
BATTBOOST2_ICH_16_MA
@ BATTBOOST2_ICH_16_MA
Definition: battboost2.h:353
battboost2_ich_t
battboost2_ich_t
BATT Boost 2 Click capacitor charge current.
Definition: battboost2.h:349
battboost2_cfg_setup
void battboost2_cfg_setup(battboost2_cfg_t *cfg)
BATT Boost 2 configuration object setup function.
battboost2_vdh_vbt_mode
err_t battboost2_vdh_vbt_mode(battboost2_t *ctx)
BATT Boost 2 sets the Vvdh Vvbt mode function.
battboost2_cfg_t::rdy
pin_name_t rdy
Definition: battboost2.h:304
BATTBOOST2_ICH_4_MA
@ BATTBOOST2_ICH_4_MA
Definition: battboost2.h:351
battboost2_set_opt_marg
err_t battboost2_set_opt_marg(battboost2_t *ctx, uint8_t opt_marg)
BATT Boost 2 sets the optimization margin voltage function.