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
32extern "C"{
33#endif
34
35#include "mikrosdk_version.h"
36
37#ifdef __GNUC__
38#if mikroSDK_GET_VERSION < 20800ul
39#include "rcu_delays.h"
40#else
41#include "delays.h"
42#endif
43#endif
44
45#include "drv_digital_out.h"
46#include "drv_digital_in.h"
47#include "drv_i2c_master.h"
48
69#define BATTBOOST2_REG_STATUS 0x00
70#define BATTBOOST2_REG_CHENERGY_3 0x01
71#define BATTBOOST2_REG_CHENERGY_2 0x02
72#define BATTBOOST2_REG_CHENERGY_1 0x03
73#define BATTBOOST2_REG_CHENERGY_0 0x04
74#define BATTBOOST2_REG_VCAP 0x05
75#define BATTBOOST2_REG_VCHEND 0x06
76#define BATTBOOST2_REG_PROFILE_MSB 0x07
77#define BATTBOOST2_REG_COMMAND 0x08
78#define BATTBOOST2_REG_SET1 0x09
79#define BATTBOOST2_REG_SET2 0x0A
80#define BATTBOOST2_REG_SET3 0x0B
81#define BATTBOOST2_REG_SET4 0x0C
82#define BATTBOOST2_REG_SET5 0x0D
83 // battboost2_reg
85
100#define BATTBOOST2_STATUS_LOWBAT 0x80
101#define BATTBOOST2_STATUS_EW 0x40
102#define BATTBOOST2_STATUS_ALRM 0x20
103#define BATTBOOST2_STATUS_RDY 0x01
104
109#define BATTBOOST2_VCAP_BIT_MASK 0x1F
110
115#define BATTBOOST2_VCHEND_BIT_MASK 0x1F
116
121#define BATTBOOST2_SET2_VMIN_2_4V 2.4f
122#define BATTBOOST2_SET2_VMIN_2_6V 2.6f
123#define BATTBOOST2_SET2_VMIN_2_8V 2.8f
124#define BATTBOOST2_SET2_VMIN_3_0V 3.0f
125#define BATTBOOST2_SET2_VMIN_3_2V 3.2f
126#define BATTBOOST2_SET2_VMIN_BIT_MASK 0xF8
127#define BATTBOOST2_SET2_ICH_BIT_MASK 0x1F
128#define BATTBOOST2_SET2_SET_VDH_VBT 0x10
129
134#define BATTBOOST2_SET3_VEW_2_4V 0
135#define BATTBOOST2_SET3_VEW_2_6V 1
136#define BATTBOOST2_SET3_VEW_2_8V 2
137#define BATTBOOST2_SET3_VEW_3_0V 3
138#define BATTBOOST2_SET3_VEW_3_2V 4
139#define BATTBOOST2_SET3_VEW_3_4V 5
140#define BATTBOOST2_SET3_VEW_3_6V 6
141#define BATTBOOST2_SET3_VEW_4_0V 7
142#define BATTBOOST2_SET3_VEW_4_4V 8
143#define BATTBOOST2_SET3_VEW_4_8V 9
144#define BATTBOOST2_SET3_VEW_BIT_MASK 0x0F
145#define BATTBOOST2_SET3_EEW_DISABLE 0
146#define BATTBOOST2_SET3_EEW_ENABLE 1
147
152#define BATTBOOST2_SET5_OPT_MARG_MIN 0
153#define BATTBOOST2_SET5_OPT_MARG_NORMAL 1
154#define BATTBOOST2_SET5_OPT_MARG_SAFE 2
155#define BATTBOOST2_SET5_OPT_MARG_EXTRA_SAFE 3
156
161#define BATTBOOST2_SET4_VCAPMAX_9_9V 0
162#define BATTBOOST2_SET4_VCAPMAX_11_0V 1
163#define BATTBOOST2_SET4_VCAPMAX_BIT_MASK 0xEF
164
165
170#define BATTBOOST2_CMD_PROF_0_FIXED_MODE 0
171#define BATTBOOST2_CMD_PROF_BIT_MASK 0xFC
172#define BATTBOOST2_CMD_BIT_MASK 0x0F
173#define BATTBOOST2_PROF_MSB_BIT_MASK 0x03
174#define BATTBOOST2_PROF_BIT_MASK 0xF0
175
180#define BATTBOOST2_OP_MODE_STANDBY 0
181#define BATTBOOST2_OP_MODE_STBY_BIT_MASK 0x06
182#define BATTBOOST2_OP_MODE_CHARGE 1
183#define BATTBOOST2_OP_MODE_CHG_BIT_MASK 0xF0
184#define BATTBOOST2_OP_MODE_SET_CHARGE 0x02
185#define BATTBOOST2_OP_MODE_ACTIVE 2
186#define BATTBOOST2_OP_MODE_SET_ACT_ACTIVE 0x04
187
192#define BATTBOOST2_CMD_RESET_BIT_MASK 0x08
193
198#define BATTBOOST2_CMD_AUTOMODE_ENABLE 0x80
199
204#define BATTBOOST2_SET1_VSET_1_8V 1.8f
205#define BATTBOOST2_SET1_VSET_2_0V 2.0f
206#define BATTBOOST2_SET1_VSET_2_2V 2.2f
207#define BATTBOOST2_SET1_VSET_2_4V 2.4f
208#define BATTBOOST2_SET1_VSET_2_5V 2.5f
209#define BATTBOOST2_SET1_VSET_2_6V 2.6f
210#define BATTBOOST2_SET1_VSET_2_7V 2.7f
211#define BATTBOOST2_SET1_VSET_2_8V 2.8f
212#define BATTBOOST2_SET1_VSET_2_9V 2.9f
213#define BATTBOOST2_SET1_VSET_3_0V 3.0f
214#define BATTBOOST2_SET1_VSET_3_1V 3.1f
215#define BATTBOOST2_SET1_VSET_3_2V 3.2f
216#define BATTBOOST2_SET1_VSET_3_3V 3.3f
217#define BATTBOOST2_SET1_VSET_3_4V 3.4f
218#define BATTBOOST2_SET1_VSET_3_5V 3.5f
219#define BATTBOOST2_SET1_VSET_3_6V 3.6f
220#define BATTBOOST2_SET1_VSET_BIT_MASK 0xF0
221#define BATTBOOST2_SET1_VFIX_BIT_MASK 0x0F
222
227#define BATTBOOST2_CONDITION_STOP 0
228#define BATTBOOST2_CONDITION_START 1
229
234#define BATTBOOST2_STATUS_NOT_READY 0
235#define BATTBOOST2_STATUS_READY 1
236
242#define BATTBOOST2_DEVICE_ADDRESS_0 0x2E
243#define BATTBOOST2_DEVICE_ADDRESS_1 0x2F
244 // battboost2_set
246
261#define BATTBOOST2_MAP_MIKROBUS( cfg, mikrobus ) \
262 cfg.scl = MIKROBUS( mikrobus, MIKROBUS_SCL ); \
263 cfg.sda = MIKROBUS( mikrobus, MIKROBUS_SDA ); \
264 cfg.on = MIKROBUS( mikrobus, MIKROBUS_RST ); \
265 cfg.rdy = MIKROBUS( mikrobus, MIKROBUS_INT )
266 // battboost2_map // battboost2
269
274typedef struct
275{
276 // Output pins
277 digital_out_t on;
279 // Input pins
280 digital_in_t rdy;
282 // Modules
283 i2c_master_t i2c;
285 // I2C slave address
289
294typedef struct
295{
296 pin_name_t scl;
297 pin_name_t sda;
299 pin_name_t on;
300 pin_name_t rdy;
302 uint32_t i2c_speed;
303 uint8_t i2c_address;
306
311typedef enum
312{
315
317
322typedef enum
323{
337
339
344typedef enum
345{
351
353
370
385
399
414err_t battboost2_generic_write ( battboost2_t *ctx, uint8_t reg, uint8_t *data_in, uint8_t len );
415
430err_t battboost2_generic_read ( battboost2_t *ctx, uint8_t reg, uint8_t *data_out, uint8_t len );
431
447err_t battboost2_get_status ( battboost2_t *ctx, uint8_t *status );
448
462err_t battboost2_get_chenergy ( battboost2_t *ctx, uint32_t *chenergy );
463
477err_t battboost2_get_vcap ( battboost2_t *ctx, float *vcap );
478
492err_t battboost2_get_vchend ( battboost2_t *ctx, uint8_t *vchend );
493
507err_t battboost2_set_prof ( battboost2_t *ctx, uint8_t prof );
508
522err_t battboost2_get_prof ( battboost2_t *ctx, uint8_t *prof );
523
537err_t battboost2_set_op_mode ( battboost2_t *ctx, uint8_t op_mode );
538
552
566
580err_t battboost2_set_vset ( battboost2_t *ctx, float vset );
581
597
611err_t battboost2_set_vmin ( battboost2_t *ctx, float vmin );
612
628
643
658
673err_t battboost2_set_vew ( battboost2_t *ctx, uint8_t vew, uint8_t eew );
674
688err_t battboost2_set_vcapmax ( battboost2_t *ctx, uint8_t vcapmax );
689
703err_t battboost2_set_opt_marg ( battboost2_t *ctx, uint8_t opt_marg );
704
718void battboost2_set_on_pin_state ( battboost2_t *ctx, uint8_t start );
719
732
733#ifdef __cplusplus
734}
735#endif
736#endif // BATTBOOST2_H
737 // battboost2
739
740// ------------------------------------------------------------------------ END
battboost2_ich_t
BATT Boost 2 Click capacitor charge current.
Definition: battboost2.h:345
@ BATTBOOST2_ICH_2_MA
Definition: battboost2.h:346
@ BATTBOOST2_ICH_4_MA
Definition: battboost2.h:347
@ BATTBOOST2_ICH_8_MA
Definition: battboost2.h:348
@ BATTBOOST2_ICH_50_MA
Definition: battboost2.h:350
@ BATTBOOST2_ICH_16_MA
Definition: battboost2.h:349
battboost2_return_value_t
BATT Boost 2 Click return value data.
Definition: battboost2.h:312
@ BATTBOOST2_OK
Definition: battboost2.h:313
@ BATTBOOST2_ERROR
Definition: battboost2.h:314
battboost2_vfix_t
BATT Boost 2 Click capacitor end-of-charge voltage.
Definition: battboost2.h:323
@ BATTBOOST2_VFIX_5_34V
Definition: battboost2.h:335
@ BATTBOOST2_VFIX_5_16V
Definition: battboost2.h:334
@ BATTBOOST2_VFIX_4_33V
Definition: battboost2.h:330
@ BATTBOOST2_VFIX_4_95V
Definition: battboost2.h:333
@ BATTBOOST2_VFIX_2_95V
Definition: battboost2.h:325
@ BATTBOOST2_VFIX_5_54V
Definition: battboost2.h:336
@ BATTBOOST2_VFIX_3_84V
Definition: battboost2.h:328
@ BATTBOOST2_VFIX_3_27V
Definition: battboost2.h:326
@ BATTBOOST2_VFIX_4_76V
Definition: battboost2.h:332
@ BATTBOOST2_VFIX_3_57V
Definition: battboost2.h:327
@ BATTBOOST2_VFIX_4_55V
Definition: battboost2.h:331
@ BATTBOOST2_VFIX_4_10V
Definition: battboost2.h:329
@ BATTBOOST2_VFIX_2_60V
Definition: battboost2.h:324
err_t battboost2_generic_read(battboost2_t *ctx, uint8_t reg, uint8_t *data_out, uint8_t len)
BATT Boost 2 I2C reading function.
err_t battboost2_set_vfix(battboost2_t *ctx, battboost2_vfix_t vfix)
BATT Boost 2 sets the end-of-charge voltage function.
err_t battboost2_set_vset(battboost2_t *ctx, float vset)
BATT Boost 2 sets the output voltage function.
err_t battboost2_set_op_mode(battboost2_t *ctx, uint8_t op_mode)
BATT Boost 2 sets the operating mode function.
err_t battboost2_vdh_vbt_mode(battboost2_t *ctx)
BATT Boost 2 sets the Vvdh Vvbt mode function.
err_t battboost2_set_opt_marg(battboost2_t *ctx, uint8_t opt_marg)
BATT Boost 2 sets the optimization margin voltage function.
err_t battboost2_high_impedance_mode(battboost2_t *ctx)
BATT Boost 2 sets the high-impedance mode function.
err_t battboost2_default_cfg(battboost2_t *ctx)
BATT Boost 2 default configuration function.
err_t battboost2_reset_optimizer(battboost2_t *ctx)
BATT Boost 2 reset optimizer result function.
err_t battboost2_get_vchend(battboost2_t *ctx, uint8_t *vchend)
BATT Boost 2 gets the target charge voltage function.
err_t battboost2_init(battboost2_t *ctx, battboost2_cfg_t *cfg)
BATT Boost 2 initialization function.
err_t battboost2_set_prof(battboost2_t *ctx, uint8_t prof)
BATT Boost 2 sets optimizer profile number function.
void battboost2_cfg_setup(battboost2_cfg_t *cfg)
BATT Boost 2 configuration object setup function.
err_t battboost2_set_ich(battboost2_t *ctx, battboost2_ich_t ich)
BATT Boost 2 sets the charge current function.
uint8_t battboost2_get_ready(battboost2_t *ctx)
BATT Boost 2 gets ready state function.
err_t battboost2_set_automode(battboost2_t *ctx)
BATT Boost 2 sets the auto mode function.
err_t battboost2_get_status(battboost2_t *ctx, uint8_t *status)
BATT Boost 2 gets the status function.
err_t battboost2_set_vcapmax(battboost2_t *ctx, uint8_t vcapmax)
BATT Boost 2 sets the capacitor maximum storage voltage function.
void battboost2_set_on_pin_state(battboost2_t *ctx, uint8_t start)
BATT Boost 2 sets the ON pin state function.
err_t battboost2_set_vmin(battboost2_t *ctx, float vmin)
BATT Boost 2 sets the input threshold voltage function.
err_t battboost2_generic_write(battboost2_t *ctx, uint8_t reg, uint8_t *data_in, uint8_t len)
BATT Boost 2 I2C writing function.
err_t battboost2_get_vcap(battboost2_t *ctx, float *vcap)
BATT Boost 2 gets the storage capacitor voltage status function.
err_t battboost2_get_chenergy(battboost2_t *ctx, uint32_t *chenergy)
BATT Boost 2 gets the charge cycle count function.
err_t battboost2_get_prof(battboost2_t *ctx, uint8_t *prof)
BATT Boost 2 gets optimizer profile number function.
err_t battboost2_set_vew(battboost2_t *ctx, uint8_t vew, uint8_t eew)
BATT Boost 2 sets the early warning voltage function.
BATT Boost 2 Click configuration object.
Definition: battboost2.h:295
uint32_t i2c_speed
Definition: battboost2.h:302
pin_name_t on
Definition: battboost2.h:299
pin_name_t scl
Definition: battboost2.h:296
pin_name_t rdy
Definition: battboost2.h:300
pin_name_t sda
Definition: battboost2.h:297
uint8_t i2c_address
Definition: battboost2.h:303
BATT Boost 2 Click context object.
Definition: battboost2.h:275
digital_out_t on
Definition: battboost2.h:277
i2c_master_t i2c
Definition: battboost2.h:283
uint8_t slave_address
Definition: battboost2.h:286
digital_in_t rdy
Definition: battboost2.h:280