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
32extern "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
170typedef struct
171{
172 // Modules
173
174 i2c_master_t i2c;
176 // I2C slave address
177
180} charger3_t;
181
186typedef struct
187{
188 pin_name_t scl;
189 pin_name_t sda;
191 uint32_t i2c_speed;
192 uint8_t i2c_address;
195
214
232
249
267err_t charger3_generic_write ( charger3_t *ctx, uint8_t reg, uint8_t *tx_buf, uint8_t tx_len );
268
286err_t charger3_generic_read ( charger3_t *ctx, uint8_t reg, uint8_t *rx_buf, uint8_t rx_len );
287
300
315void charger3_operating_mode ( charger3_t *ctx, uint8_t mode );
316
328void charger3_write_rdac ( charger3_t *ctx, uint16_t rdac_data );
329
345uint8_t charger3_set_digipot_res ( charger3_t *ctx, uint16_t res_ohm );
346
360uint8_t charger3_set_current ( charger3_t *ctx, float curr_value );
361
374
389
390#ifdef __cplusplus
391}
392#endif
393#endif // CHARGER3_H
394 // charger3
396
397// ------------------------------------------------------------------------ END
uint16_t charger3_read_rdac(charger3_t *ctx)
Charger 3 read rdac function.
err_t charger3_init(charger3_t *ctx, charger3_cfg_t *cfg)
Charger 3 initialization function.
void charger3_operating_mode(charger3_t *ctx, uint8_t mode)
Charger 3 set operating mode function.
float charger3_calc_digipot_res(charger3_t *ctx)
Charger 3 calculate digipot resistance function.
void charger3_cfg_setup(charger3_cfg_t *cfg)
Charger 3 configuration object setup function.
err_t charger3_generic_write(charger3_t *ctx, uint8_t reg, uint8_t *tx_buf, uint8_t tx_len)
Charger 3 I2C writing function.
uint8_t charger3_set_digipot_res(charger3_t *ctx, uint16_t res_ohm)
Charger 3 set digital potentiometer resistance function.
void charger3_enable_write(charger3_t *ctx)
Charger 3 enable write function.
void charger3_write_rdac(charger3_t *ctx, uint16_t rdac_data)
Charger 3 write to rdac function.
uint8_t charger3_set_current(charger3_t *ctx, float curr_value)
Charger 3 set current function.
err_t charger3_generic_read(charger3_t *ctx, uint8_t reg, uint8_t *rx_buf, uint8_t rx_len)
Charger 3 I2C reading function.
void charger3_default_cfg(charger3_t *ctx)
Charger 3 default configuration function.
Charger 3 Click configuration object.
Definition: charger3.h:187
uint32_t i2c_speed
Definition: charger3.h:191
pin_name_t scl
Definition: charger3.h:188
pin_name_t sda
Definition: charger3.h:189
uint8_t i2c_address
Definition: charger3.h:192
Charger 3 Click context object.
Definition: charger3.h:171
i2c_master_t i2c
Definition: charger3.h:174
uint8_t slave_address
Definition: charger3.h:178