battman3  2.0.0.0
battman3.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 BATTMAN3_H
29 #define BATTMAN3_H
30 
31 #ifdef __cplusplus
32 extern "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 BATTMAN3_REG_MANUFACTURE_AND_MODEL_ID 0x00
70 #define BATTMAN3_REG_SILICON_REVSION 0x01
71 #define BATTMAN3_REG_CHARGER_VBUS_ILIM 0x02
72 #define BATTMAN3_REG_CHARGER_TERMINATION_SETTING 0x03
73 #define BATTMAN3_REG_CHARGER_CURRENT_SETTING 0x04
74 #define BATTMAN3_REG_CHARGER_VOLTAGE_THRESHOLD 0x05
75 #define BATTMAN3_REG_CHARGER_TIMER_SETTING 0x06
76 #define BATTMAN3_REG_CHARGER_FUNCTION_SETTING1 0x07
77 #define BATTMAN3_REG_CHARGER_STATUS1 0x08
78 #define BATTMAN3_REG_CHARGER_STATUS2 0x09
79 #define BATTMAN3_REG_CHARGER_FAULT 0x0A
80 #define BATTMAN3_REG_BATTERY_SHORT 0x0B
81 #define BATTMAN3_REG_BATTERY_THERMISTOR_CONTROL 0x0C
82 #define BATTMAN3_REG_V_SOC_0 0x0D
83 #define BATTMAN3_REG_V_SOC_5 0x0E
84 #define BATTMAN3_REG_V_SOC_11 0x0F
85 #define BATTMAN3_REG_V_SOC_19 0x10
86 #define BATTMAN3_REG_V_SOC_28 0x11
87 #define BATTMAN3_REG_V_SOC_41 0x12
88 #define BATTMAN3_REG_V_SOC_55 0x13
89 #define BATTMAN3_REG_V_SOC_69 0x14
90 #define BATTMAN3_REG_V_SOC_84 0x15
91 #define BATTMAN3_REG_V_SOC_100 0x16
92 #define BATTMAN3_REG_FILTER_SETTING1 0x17
93 #define BATTMAN3_REG_FILTER_SETTING2 0x18
94 #define BATTMAN3_REG_RBAT_0 0x19
95 #define BATTMAN3_REG_RBAT_10 0x1A
96 #define BATTMAN3_REG_RBAT_20 0x1B
97 #define BATTMAN3_REG_RBAT_30 0x1C
98 #define BATTMAN3_REG_RBAT_40 0x1D
99 #define BATTMAN3_REG_RBAT_60 0x1E
100 #define BATTMAN3_REG_K_RBAT_CHARGE 0x1F
101 #define BATTMAN3_REG_BAT_TEMP 0x20
102 #define BATTMAN3_REG_BAT_SOC 0x21
103 #define BATTMAN3_REG_VBAT_READ_H 0x22
104 #define BATTMAN3_REG_VBAT_READ_L 0x23
105 #define BATTMAN3_REG_FUEL_GAUGE_MODE 0x24
106 #define BATTMAN3_REG_SOC_RESET 0x25
107 #define BATTMAN3_REG_BST_LED_CTRL 0x26
108 #define BATTMAN3_REG_BST_CFG 0x27
109 #define BATTMAN3_REG_IBL_SET 0x28
110 #define BATTMAN3_REG_ILED2_SET 0x29
111 #define BATTMAN3_REG_ILED3_SET 0x2A
112 #define BATTMAN3_REG_ILED4_SET 0x2B
113 #define BATTMAN3_REG_ILED5_SET 0x2C
114 #define BATTMAN3_REG_BL_FR 0x2D
115 #define BATTMAN3_REG_LED3_BLINK 0x2E
116 #define BATTMAN3_REG_LED4_BLINK 0x2F
117 #define BATTMAN3_REG_LED5_BLINK 0x30
118 #define BATTMAN3_REG_LED_STATUS 0x31
119 #define BATTMAN3_REG_LDO_CTRL 0x32
120 #define BATTMAN3_REG_LDO_CFG 0x33
121 #define BATTMAN3_REG_VID_LDO12 0x34
122 #define BATTMAN3_REG_VID_LDO3 0x35
123 #define BATTMAN3_REG_PGOOD_STATUS 0x36
124 #define BATTMAN3_REG_PGOOD_MASK 0x37
125 #define BATTMAN3_REG_CHARGER_INTERRUPT_ENABLE 0x38
126 #define BATTMAN3_REG_CHARGER_INTERRUPT_FLAG 0x39
127 #define BATTMAN3_REG_BOOST_LDO_INTERRUPT_ENABLE 0x3A
128 #define BATTMAN3_REG_BOOST_LDO_INTERRUPT_FLAG 0x3B
129 #define BATTMAN3_REG_DEFAULT_SET 0x3C
130 #define BATTMAN3_REG_NTC47K_SET 0x3D
131 
132 
133  // battman3_reg
135 
150 #define BATTMAN3_CHARGE_STATUS1_OFF 0x0
151 #define BATTMAN3_CHARGE_STATUS1_TRICLE_CHARGE 0x1
152 #define BATTMAN3_CHARGE_STATUS1_FAST_CHARGE_CC 0x2
153 #define BATTMAN3_CHARGE_STATUS1_FAST_CHARGE_CV 0x3
154 #define BATTMAN3_CHARGE_STATUS1_CHARGE_COMPLETE 0x4
155 #define BATTMAN3_CHARGE_STATUS1_SUSPEND 0x5
156 #define BATTMAN3_CHARGE_STATUS1_TIMER_EXPIRED 0x6
157 #define BATTMAN3_CHARGE_STATUS1_BATTERY_DETECTION 0x7
158 #define BATTMAN3_CHARGE_STATUS2_BATTERY_MONITOR_OFF 0x0
159 #define BATTMAN3_CHARGE_STATUS2_NO_BATTERY 0x1
160 #define BATTMAN3_CHARGE_STATUS2_VBSNS_LESSTHEN_VTRK 0x2
161 #define BATTMAN3_CHARGE_STATUS2_VBSNS_MIDDLE_VRK_VWEAK 0x3
162 #define BATTMAN3_CHARGE_STATUS2_VBSNS_MORETHEN_VWEAK 0x4
163 
168 #define BATTMAN3_ENABLE 0x1
169 #define BATTMAN3_DISABLE 0x0
170 
176 #define BATTMAN3_SET_DEV_ADDR 0x44
177  // battman3_set
179 
194 #define BATTMAN3_MAP_MIKROBUS( cfg, mikrobus ) \
195  cfg.scl = MIKROBUS( mikrobus, MIKROBUS_SCL ); \
196  cfg.sda = MIKROBUS( mikrobus, MIKROBUS_SDA ); \
197  cfg.pgood = MIKROBUS( mikrobus, MIKROBUS_CS ); \
198  cfg.bok = MIKROBUS( mikrobus, MIKROBUS_RST ); \
199  cfg.int_pin = MIKROBUS( mikrobus, MIKROBUS_INT )
200  // battman3_map // battman3
203 
208 typedef struct
209 {
210  // Input pins
211  digital_in_t pgood;
212  digital_in_t bok;
213  digital_in_t int_pin;
215  // Modules
216  i2c_master_t i2c;
218  // I2C slave address
219  uint8_t slave_address;
221 } battman3_t;
222 
227 typedef struct
228 {
229  pin_name_t scl;
230  pin_name_t sda;
232  pin_name_t pgood;
233  pin_name_t bok;
234  pin_name_t int_pin;
236  uint32_t i2c_speed;
237  uint8_t i2c_address;
240 
245 typedef enum
246 {
248  BATTMAN3_ERROR = -1
249 
251 
256 typedef enum
257 {
274 
276 
281 typedef enum
282 {
286 
288 
293 typedef enum
294 {
299 
301 
318 
333 
348 
362 err_t battman3_generic_write ( battman3_t *ctx, uint8_t reg, uint8_t *tx_buf, uint8_t tx_len );
363 
375 err_t battman3_reg_write ( battman3_t *ctx, uint8_t reg, uint8_t tx_data );
376 
390 err_t battman3_generic_read ( battman3_t *ctx, uint8_t reg, uint8_t *rx_buf, uint8_t rx_len );
391 
403 err_t battman3_reg_read ( battman3_t *ctx, uint8_t reg, uint8_t *rx_data );
404 
413 
422 
431 
444 err_t battman3_set_charge_state ( battman3_t *ctx, uint8_t enable );
445 
457 
470 
481 err_t battman3_set_charge_vbus_current_limit ( battman3_t *ctx, uint16_t current );
482 
495 err_t battman3_set_ldo_state ( battman3_t *ctx, battman3_ldo_t ldo, uint8_t enable );
496 
509 
520 err_t battman3_get_battery_voltage ( battman3_t *ctx, float *vout );
521 
522 #ifdef __cplusplus
523 }
524 #endif
525 #endif // BATTMAN3_H
526  // battman3
528 
529 // ------------------------------------------------------------------------ END
BATTMAN3_LDO_3p00V
@ BATTMAN3_LDO_3p00V
Definition: battman3.h:262
BATTMAN3_LDO_1p20V
@ BATTMAN3_LDO_1p20V
Definition: battman3.h:271
BATTMAN3_LDO_3p60V
@ BATTMAN3_LDO_3p60V
Definition: battman3.h:259
battman3_cfg_t::sda
pin_name_t sda
Definition: battman3.h:230
battman3_cfg_t::pgood
pin_name_t pgood
Definition: battman3.h:232
BATTMAN3_OK
@ BATTMAN3_OK
Definition: battman3.h:247
battman3_ldo_vout_t
battman3_ldo_vout_t
BATT-MAN 3 Click LDO voltage output.
Definition: battman3.h:257
battman3_cfg_setup
void battman3_cfg_setup(battman3_cfg_t *cfg)
BATT-MAN 3 configuration object setup function.
BATTMAN3_VTRK_DEAD_3p3V
@ BATTMAN3_VTRK_DEAD_3p3V
Definition: battman3.h:298
BATTMAN3_LDO_1p10V
@ BATTMAN3_LDO_1p10V
Definition: battman3.h:272
battman3_cfg_t::bok
pin_name_t bok
Definition: battman3.h:233
battman3_default_cfg
err_t battman3_default_cfg(battman3_t *ctx)
BATT-MAN 3 default configuration function.
battman3_cfg_t::scl
pin_name_t scl
Definition: battman3.h:229
battman3_get_power_good
uint8_t battman3_get_power_good(battman3_t *ctx)
Get power good.
BATTMAN3_LDO_2p30V
@ BATTMAN3_LDO_2p30V
Definition: battman3.h:265
battman3_set_charge_state
err_t battman3_set_charge_state(battman3_t *ctx, uint8_t enable)
Enable/Disable charging.
BATTMAN3_LDO_3p30V
@ BATTMAN3_LDO_3p30V
Definition: battman3.h:260
battman3_init
err_t battman3_init(battman3_t *ctx, battman3_cfg_t *cfg)
BATT-MAN 3 initialization function.
BATTMAN3_LDO_3p15V
@ BATTMAN3_LDO_3p15V
Definition: battman3.h:261
battman3_cfg_t::i2c_speed
uint32_t i2c_speed
Definition: battman3.h:236
battman3_cfg_t::i2c_address
uint8_t i2c_address
Definition: battman3.h:237
battman3_set_ldo_state
err_t battman3_set_ldo_state(battman3_t *ctx, battman3_ldo_t ldo, uint8_t enable)
Enable/Disable LDO.
BATTMAN3_LDO_1p50V
@ BATTMAN3_LDO_1p50V
Definition: battman3.h:268
battman3_set_charge_vbus_current_limit
err_t battman3_set_charge_vbus_current_limit(battman3_t *ctx, uint16_t current)
Set charge current limit.
BATTMAN3_LDO_1p40V
@ BATTMAN3_LDO_1p40V
Definition: battman3.h:269
BATTMAN3_LDO_1p00V
@ BATTMAN3_LDO_1p00V
Definition: battman3.h:273
battman3_reg_read
err_t battman3_reg_read(battman3_t *ctx, uint8_t reg, uint8_t *rx_data)
Register reading function.
BATTMAN3_ERROR
@ BATTMAN3_ERROR
Definition: battman3.h:248
battman3_set_ldo_vout
err_t battman3_set_ldo_vout(battman3_t *ctx, battman3_ldo_t ldo, battman3_ldo_vout_t vout)
Set voltage output on LDO.
battman3_cfg_t::int_pin
pin_name_t int_pin
Definition: battman3.h:234
BATTMAN3_LDO_2p10V
@ BATTMAN3_LDO_2p10V
Definition: battman3.h:266
battman3_t
BATT-MAN 3 Click context object.
Definition: battman3.h:209
battman3_generic_read
err_t battman3_generic_read(battman3_t *ctx, uint8_t reg, uint8_t *rx_buf, uint8_t rx_len)
BATT-MAN 3 I2C reading function.
BATTMAN3_LDO_1p30V
@ BATTMAN3_LDO_1p30V
Definition: battman3.h:270
battman3_get_interrupt
uint8_t battman3_get_interrupt(battman3_t *ctx)
Get interrupt.
BATTMAN3_LDO1
@ BATTMAN3_LDO1
Definition: battman3.h:283
battman3_generic_write
err_t battman3_generic_write(battman3_t *ctx, uint8_t reg, uint8_t *tx_buf, uint8_t tx_len)
BATT-MAN 3 I2C writing function.
battman3_reg_write
err_t battman3_reg_write(battman3_t *ctx, uint8_t reg, uint8_t tx_data)
Register writing function.
battman3_t::bok
digital_in_t bok
Definition: battman3.h:212
battman3_get_battery_ok
uint8_t battman3_get_battery_ok(battman3_t *ctx)
Get battery OK.
BATTMAN3_LDO_2p50V
@ BATTMAN3_LDO_2p50V
Definition: battman3.h:264
battman3_t::i2c
i2c_master_t i2c
Definition: battman3.h:216
battman3_t::pgood
digital_in_t pgood
Definition: battman3.h:211
battman3_set_charge_termination_voltage
err_t battman3_set_charge_termination_voltage(battman3_t *ctx, float voltage)
Set charge termination voltage.
BATTMAN3_VTRK_DEAD_2p6V
@ BATTMAN3_VTRK_DEAD_2p6V
Definition: battman3.h:297
battman3_set_charge_voltage_threshold
err_t battman3_set_charge_voltage_threshold(battman3_t *ctx, battman3_vtrk_dead_t vtrk_dead, float vweak)
Set charge termination voltage.
battman3_t::int_pin
digital_in_t int_pin
Definition: battman3.h:213
BATTMAN3_LDO2
@ BATTMAN3_LDO2
Definition: battman3.h:284
battman3_ldo_t
battman3_ldo_t
BATT-MAN 3 Click LDO.
Definition: battman3.h:282
battman3_return_value_t
battman3_return_value_t
BATT-MAN 3 Click return value data.
Definition: battman3.h:246
BATTMAN3_LDO3
@ BATTMAN3_LDO3
Definition: battman3.h:285
BATTMAN3_VTRK_DEAD_2p5V
@ BATTMAN3_VTRK_DEAD_2p5V
Definition: battman3.h:296
BATTMAN3_LDO_4p20V
@ BATTMAN3_LDO_4p20V
Definition: battman3.h:258
battman3_get_battery_voltage
err_t battman3_get_battery_voltage(battman3_t *ctx, float *vout)
Read battery voltage level.
battman3_cfg_t
BATT-MAN 3 Click configuration object.
Definition: battman3.h:228
battman3_t::slave_address
uint8_t slave_address
Definition: battman3.h:219
BATTMAN3_LDO_2p85V
@ BATTMAN3_LDO_2p85V
Definition: battman3.h:263
BATTMAN3_VTRK_DEAD_2p4V
@ BATTMAN3_VTRK_DEAD_2p4V
Definition: battman3.h:295
BATTMAN3_LDO_1p80V
@ BATTMAN3_LDO_1p80V
Definition: battman3.h:267
battman3_vtrk_dead_t
battman3_vtrk_dead_t
BATT-MAN 3 Click dead battery voltage.
Definition: battman3.h:294