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 "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 
65 #define CHARGER3_COMMAND_NOP 0x00
66 #define CHARGER3_COMMAND_WRITE_RDAC 0x04
67 #define CHARGER3_COMMAND_READ_RDAC 0x08
68 #define CHARGER3_COMMAND_STORE_WIPER 0x0C
69 #define CHARGER3_COMMAND_SW_RESET 0x10
70 #define CHARGER3_COMMAND_READ_50TP 0x14
71 #define CHARGER3_COMMAND_READ_MEMORY 0x18
72 #define CHARGER3_COMMAND_WRITE_MEMORY 0x1C
73 #define CHARGER3_COMMAND_READ_CONTROL 0x20
74 #define CHARGER3_COMMAND_SW_SHUTDOWN 0x24
75  // charger3_command
77 
93 #define CHARGER3_CTRL_REG_BIT_MASK 0x0B
94 #define CHARGER3_FUSE_PROGRAM_SUCCESSFUL 0x00
95 #define CHARGER3_FUSE_PROGRAM_UNSUCCESSFUL 0x08
96 #define CHARGER3_WIPER_POS_FROZEN 0x00
97 #define CHARGER3_UPDATE_WIPER_POS 0x02
98 #define CHARGER3_50T_PROGRAM_DISABLED 0x00
99 #define CHARGER3_50T_PROGRAM_ENABLE 0x01
100 
107 #define CHARGER3_SET_DEV_ADDR 0x2F
108  // charger3_set
110 
121 #define CHARGER3_ENABLE_CHARGING 0x00
122 #define CHARGER3_DISABLE_CHARGING 0x01
123  // mode
125 
136 #define CHARGER3_STATUS_ERROR_SUCCESS 0x00
137 #define CHARGER3_STATUS_ERROR_FAILURE 0x01
138  // status
140 
151 #define CHARGER3_DUMMY 0x00
152  // charger3_dummy
154 
169 #define CHARGER3_MAP_MIKROBUS( cfg, mikrobus ) \
170  cfg.scl = MIKROBUS( mikrobus, MIKROBUS_SCL ); \
171  cfg.sda = MIKROBUS( mikrobus, MIKROBUS_SDA )
172  // charger3_map // charger3
175 
180 typedef struct
181 {
182  // Modules
183 
184  i2c_master_t i2c;
186  // I2C slave address
187 
188  uint8_t slave_address;
190 } charger3_t;
191 
196 typedef struct
197 {
198  pin_name_t scl;
199  pin_name_t sda;
201  uint32_t i2c_speed;
202  uint8_t i2c_address;
205 
224 
242 
259 
277 err_t charger3_generic_write ( charger3_t *ctx, uint8_t reg, uint8_t *tx_buf, uint8_t tx_len );
278 
296 err_t charger3_generic_read ( charger3_t *ctx, uint8_t reg, uint8_t *rx_buf, uint8_t rx_len );
297 
310 
325 void charger3_operating_mode ( charger3_t *ctx, uint8_t mode );
326 
338 void charger3_write_rdac ( charger3_t *ctx, uint16_t rdac_data );
339 
355 uint8_t charger3_set_digipot_res ( charger3_t *ctx, uint16_t res_ohm );
356 
370 uint8_t charger3_set_current ( charger3_t *ctx, float curr_value );
371 
383 uint16_t charger3_read_rdac ( charger3_t *ctx );
384 
399 
400 #ifdef __cplusplus
401 }
402 #endif
403 #endif // CHARGER3_H
404  // charger3
406 
407 // ------------------------------------------------------------------------ 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:197
charger3_cfg_t::scl
pin_name_t scl
Definition: charger3.h:198
charger3_cfg_t::i2c_address
uint8_t i2c_address
Definition: charger3.h:202
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_cfg_t::sda
pin_name_t sda
Definition: charger3.h:199
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_t::slave_address
uint8_t slave_address
Definition: charger3.h:188
charger3_cfg_t::i2c_speed
uint32_t i2c_speed
Definition: charger3.h:201
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:181
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_t::i2c
i2c_master_t i2c
Definition: charger3.h:184
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.