battmon4  2.0.0.0
battmon4.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 BATTMON4_H
29 #define BATTMON4_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 BATTMON4_REG_A 0x01
70 #define BATTMON4_REG_B 0x02
71 #define BATTMON4_REG_C 0x03
72 #define BATTMON4_REG_D 0x04
73 #define BATTMON4_REG_E 0x05
74 #define BATTMON4_REG_F 0x06
75 #define BATTMON4_REG_G 0x07
76 #define BATTMON4_REG_H 0x08
77  // battmon4_reg
79 
94 #define BATTMON4_TEMPERATURE_LSB 0.784
95 #define BATTMON4_TEMPERATURE_OFFSET 41.0
96 #define BATTMON4_TEMPERATURE_RESOLUTION 0x00FF
97 #define BATTMON4_VOLTAGE_LSB 1.465
98 #define BATTMON4_VOLTAGE_RESOLUTION 0x0FFF
99 
105 #define BATTMON4_DEVICE_ADDRESS 0x64
106  // battmon4_set
108 
123 #define BATTMON4_MAP_MIKROBUS( cfg, mikrobus ) \
124  cfg.scl = MIKROBUS( mikrobus, MIKROBUS_SCL ); \
125  cfg.sda = MIKROBUS( mikrobus, MIKROBUS_SDA ); \
126  cfg.bok = MIKROBUS( mikrobus, MIKROBUS_AN ); \
127  cfg.int_pin = MIKROBUS( mikrobus, MIKROBUS_INT )
128  // battmon4_map // battmon4
131 
136 typedef struct
137 {
138  // Input pins
139  digital_in_t bok;
140  digital_in_t int_pin;
142  // Modules
143  i2c_master_t i2c;
145  // I2C slave address
146  uint8_t slave_address;
148 } battmon4_t;
149 
154 typedef struct
155 {
156  pin_name_t scl;
157  pin_name_t sda;
159  pin_name_t bok;
160  pin_name_t int_pin;
162  uint32_t i2c_speed;
163  uint8_t i2c_address;
166 
171 typedef enum
172 {
174  BATTMON4_ERROR = -1
175 
177 
194 
210 
224 err_t battmon4_write_register ( battmon4_t *ctx, uint8_t reg, uint16_t data_in );
225 
239 err_t battmon4_read_register ( battmon4_t *ctx, uint8_t reg, uint16_t *data_out );
240 
253 err_t battmon4_get_die_temperature ( battmon4_t *ctx, float *temperature );
254 
268 err_t battmon4_get_batt_in_voltage ( battmon4_t *ctx, float *v_ipeak_on, float *v_ipeak_off );
269 
283 err_t battmon4_get_batt_out_voltage ( battmon4_t *ctx, float *v_ipeak_on, float *v_ipeak_off );
284 
294 
304 
305 #ifdef __cplusplus
306 }
307 #endif
308 #endif // BATTMON4_H
309  // battmon4
311 
312 // ------------------------------------------------------------------------ END
battmon4_cfg_t
BATT-MON 4 Click configuration object.
Definition: battmon4.h:155
battmon4_cfg_t::i2c_address
uint8_t i2c_address
Definition: battmon4.h:163
battmon4_get_die_temperature
err_t battmon4_get_die_temperature(battmon4_t *ctx, float *temperature)
BATT-MON 4 get die temperature function.
battmon4_t::i2c
i2c_master_t i2c
Definition: battmon4.h:143
battmon4_t::slave_address
uint8_t slave_address
Definition: battmon4.h:146
battmon4_cfg_t::int_pin
pin_name_t int_pin
Definition: battmon4.h:160
battmon4_t::bok
digital_in_t bok
Definition: battmon4.h:139
battmon4_init
err_t battmon4_init(battmon4_t *ctx, battmon4_cfg_t *cfg)
BATT-MON 4 initialization function.
battmon4_cfg_t::sda
pin_name_t sda
Definition: battmon4.h:157
battmon4_return_value_t
battmon4_return_value_t
BATT-MON 4 Click return value data.
Definition: battmon4.h:172
battmon4_get_batt_in_voltage
err_t battmon4_get_batt_in_voltage(battmon4_t *ctx, float *v_ipeak_on, float *v_ipeak_off)
BATT-MON 4 get batt in voltage function.
battmon4_cfg_t::i2c_speed
uint32_t i2c_speed
Definition: battmon4.h:162
battmon4_cfg_t::scl
pin_name_t scl
Definition: battmon4.h:156
BATTMON4_OK
@ BATTMON4_OK
Definition: battmon4.h:173
battmon4_get_int_pin
uint8_t battmon4_get_int_pin(battmon4_t *ctx)
BATT-MON 4 get int pin function.
battmon4_t
BATT-MON 4 Click context object.
Definition: battmon4.h:137
battmon4_get_bok_pin
uint8_t battmon4_get_bok_pin(battmon4_t *ctx)
BATT-MON 4 get bok pin function.
battmon4_t::int_pin
digital_in_t int_pin
Definition: battmon4.h:140
battmon4_read_register
err_t battmon4_read_register(battmon4_t *ctx, uint8_t reg, uint16_t *data_out)
BATT-MON 4 read register function.
battmon4_write_register
err_t battmon4_write_register(battmon4_t *ctx, uint8_t reg, uint16_t data_in)
BATT-MON 4 write register function.
battmon4_cfg_t::bok
pin_name_t bok
Definition: battmon4.h:159
battmon4_get_batt_out_voltage
err_t battmon4_get_batt_out_voltage(battmon4_t *ctx, float *v_ipeak_on, float *v_ipeak_off)
BATT-MON 4 get batt out voltage function.
battmon4_cfg_setup
void battmon4_cfg_setup(battmon4_cfg_t *cfg)
BATT-MON 4 configuration object setup function.
BATTMON4_ERROR
@ BATTMON4_ERROR
Definition: battmon4.h:174