charger3  2.0.0.0
charger3.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 CHARGER3_H
29 #define CHARGER3_H
30 
31 #ifdef __cplusplus
32 extern "C"{
33 #endif
34 
35 #include "drv_digital_out.h"
36 #include "drv_digital_in.h"
37 #include "drv_i2c_master.h"
38 
55 #define CHARGER3_COMMAND_NOP 0x00
56 #define CHARGER3_COMMAND_WRITE_RDAC 0x04
57 #define CHARGER3_COMMAND_READ_RDAC 0x08
58 #define CHARGER3_COMMAND_STORE_WIPER 0x0C
59 #define CHARGER3_COMMAND_SW_RESET 0x10
60 #define CHARGER3_COMMAND_READ_50TP 0x14
61 #define CHARGER3_COMMAND_READ_MEMORY 0x18
62 #define CHARGER3_COMMAND_WRITE_MEMORY 0x1C
63 #define CHARGER3_COMMAND_READ_CONTROL 0x20
64 #define CHARGER3_COMMAND_SW_SHUTDOWN 0x24
65  // charger3_command
67 
83 #define CHARGER3_CTRL_REG_BIT_MASK 0x0B
84 #define CHARGER3_FUSE_PROGRAM_SUCCESSFUL 0x00
85 #define CHARGER3_FUSE_PROGRAM_UNSUCCESSFUL 0x08
86 #define CHARGER3_WIPER_POS_FROZEN 0x00
87 #define CHARGER3_UPDATE_WIPER_POS 0x02
88 #define CHARGER3_50T_PROGRAM_DISABLED 0x00
89 #define CHARGER3_50T_PROGRAM_ENABLE 0x01
90 
97 #define CHARGER3_SET_DEV_ADDR 0x2F
98  // charger3_set
100 
111 #define CHARGER3_ENABLE_CHARGING 0x00
112 #define CHARGER3_DISABLE_CHARGING 0x01
113  // mode
115 
126 #define CHARGER3_STATUS_ERROR_SUCCESS 0x00
127 #define CHARGER3_STATUS_ERROR_FAILURE 0x01
128  // status
130 
141 #define CHARGER3_DUMMY 0x00
142  // charger3_dummy
144 
159 #define CHARGER3_MAP_MIKROBUS( cfg, mikrobus ) \
160  cfg.scl = MIKROBUS( mikrobus, MIKROBUS_SCL ); \
161  cfg.sda = MIKROBUS( mikrobus, MIKROBUS_SDA )
162  // charger3_map // charger3
165 
170 typedef struct
171 {
172  // Modules
173 
174  i2c_master_t i2c;
176  // I2C slave address
177 
178  uint8_t slave_address;
180 } charger3_t;
181 
186 typedef struct
187 {
188  pin_name_t scl;
189  pin_name_t sda;
191  uint32_t i2c_speed;
192  uint8_t i2c_address;
195 
213 void charger3_cfg_setup ( charger3_cfg_t *cfg );
214 
231 err_t charger3_init ( charger3_t *ctx, charger3_cfg_t *cfg );
232 
248 void charger3_default_cfg ( charger3_t *ctx );
249 
267 err_t charger3_generic_write ( charger3_t *ctx, uint8_t reg, uint8_t *tx_buf, uint8_t tx_len );
268 
286 err_t charger3_generic_read ( charger3_t *ctx, uint8_t reg, uint8_t *rx_buf, uint8_t rx_len );
287 
299 void charger3_enable_write ( charger3_t *ctx );
300 
315 void charger3_operating_mode ( charger3_t *ctx, uint8_t mode );
316 
328 void charger3_write_rdac ( charger3_t *ctx, uint16_t rdac_data );
329 
345 uint8_t charger3_set_digipot_res ( charger3_t *ctx, uint16_t res_ohm );
346 
360 uint8_t charger3_set_current ( charger3_t *ctx, float curr_value );
361 
373 uint16_t charger3_read_rdac ( charger3_t *ctx );
374 
389 
390 #ifdef __cplusplus
391 }
392 #endif
393 #endif // CHARGER3_H
394  // charger3
396 
397 // ------------------------------------------------------------------------ END
charger3_default_cfg
void charger3_default_cfg(charger3_t *ctx)
Charger 3 default configuration function.
charger3_calc_digipot_res
float charger3_calc_digipot_res(charger3_t *ctx)
Charger 3 calculate digipot resistance function.
charger3_cfg_setup
void charger3_cfg_setup(charger3_cfg_t *cfg)
Charger 3 configuration object setup function.
charger3_cfg_t
Charger 3 Click configuration object.
Definition: charger3.h:185
charger3_set_digipot_res
uint8_t charger3_set_digipot_res(charger3_t *ctx, uint16_t res_ohm)
Charger 3 set digital potentiometer resistance function.
charger3_read_rdac
uint16_t charger3_read_rdac(charger3_t *ctx)
Charger 3 read rdac function.
charger3_generic_write
err_t charger3_generic_write(charger3_t *ctx, uint8_t reg, uint8_t *tx_buf, uint8_t tx_len)
Charger 3 I2C writing function.
charger3_operating_mode
void charger3_operating_mode(charger3_t *ctx, uint8_t mode)
Charger 3 set operating mode function.
charger3_t
Charger 3 Click context object.
Definition: charger3.h:169
charger3_init
err_t charger3_init(charger3_t *ctx, charger3_cfg_t *cfg)
Charger 3 initialization function.
charger3_write_rdac
void charger3_write_rdac(charger3_t *ctx, uint16_t rdac_data)
Charger 3 write to rdac function.
charger3_enable_write
void charger3_enable_write(charger3_t *ctx)
Charger 3 enable write function.
charger3_set_current
uint8_t charger3_set_current(charger3_t *ctx, float curr_value)
Charger 3 set current function.
charger3_generic_read
err_t charger3_generic_read(charger3_t *ctx, uint8_t reg, uint8_t *rx_buf, uint8_t rx_len)
Charger 3 I2C reading function.