charger  2.1.0.0
charger.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 CHARGER_H
29 #define CHARGER_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_one_wire.h"
48 
69 #define CHARGER_CMD_WRITE_SCRATCHPAD 0x4E
70 #define CHARGER_CMD_READ_SCRATCHPAD 0xBE
71 #define CHARGER_CMD_COPY_SCRATCHPAD 0x48
72 #define CHARGER_CMD_RECALL_MEMORY 0xB8
73 #define CHARGER_CMD_CONVERT_T 0x44
74 #define CHARGER_CMD_CONVERT_V 0xB4
75  // charger_cmd
77 
92 #define CHARGER_PAGE_0 0
93 #define CHARGER_PAGE_1 1
94 #define CHARGER_PAGE_2 2
95 #define CHARGER_PAGE_3 3
96 #define CHARGER_PAGE_4 4
97 #define CHARGER_PAGE_5 5
98 #define CHARGER_PAGE_6 6
99 #define CHARGER_PAGE_7 7
100 #define CHARGER_PAGE_SIZE 8
101 
106 #define CHARGER_CONFIG_IAD 0x01
107 #define CHARGER_CONFIG_CA 0x02
108 #define CHARGER_CONFIG_EE 0x04
109 #define CHARGER_CONFIG_AD 0x08
110 #define CHARGER_CONFIG_TB 0x10
111 #define CHARGER_CONFIG_NVM 0x20
112 #define CHARGER_CONFIG_ADB 0x40
113 
118 #define CHARGER_TEMPERATURE_RES 0.03125f
119 #define CHARGER_VOLTAGE_RES 0.01f
120 #define CHARGER_CURRENT_RES 204.8f
121 
126 #define CHARGER_FAMILY_CODE 0x26
127 
132 #define CHARGER_ADDRESS_0 0x00
133 #define CHARGER_ADDRESS_ALL 0xFF
134  // charger_set
136 
151 #define CHARGER_MAP_MIKROBUS( cfg, mikrobus ) \
152  cfg.ow1 = MIKROBUS( mikrobus, MIKROBUS_PWM ); \
153  cfg.ow2 = MIKROBUS( mikrobus, MIKROBUS_AN );
154  // charger_map // charger
157 
162 typedef enum
163 {
168 
173 typedef struct
174 {
175  // Modules
176  one_wire_t ow;
178  one_wire_rom_address_t rom_addr;
179  uint8_t address;
181 } charger_t;
182 
187 typedef struct
188 {
189  // Communication gpio pins
190  pin_name_t ow1;
191  pin_name_t ow2;
195 } charger_cfg_t;
196 
201 typedef enum
202 {
204  CHARGER_ERROR = -1
205 
207 
224 
240 
254 err_t charger_init ( charger_t *ctx, charger_cfg_t *cfg );
255 
269 
282 
295 
309 err_t charger_read_scratchpad ( charger_t *ctx, uint8_t page, uint8_t *data_out, uint8_t len );
310 
324 err_t charger_write_scratchpad ( charger_t *ctx, uint8_t page, uint8_t *data_in, uint8_t len );
325 
337 err_t charger_copy_scratchpad ( charger_t *ctx, uint8_t page );
338 
350 err_t charger_recall_memory ( charger_t *ctx, uint8_t page );
351 
363 
375 
387 err_t charger_read_temperature ( charger_t *ctx, float *temperature );
388 
400 err_t charger_read_batt_vdd ( charger_t *ctx, float *voltage );
401 
413 err_t charger_read_system_vdd ( charger_t *ctx, float *voltage );
414 
426 err_t charger_read_current ( charger_t *ctx, float *current );
427 
439 
451 err_t charger_write_elapsed_time ( charger_t *ctx, uint32_t seconds );
452 
464 err_t charger_read_elapsed_time ( charger_t *ctx, uint32_t *seconds );
465 
466 #ifdef __cplusplus
467 }
468 #endif
469 #endif // CHARGER_H
470  // charger
472 
473 // ------------------------------------------------------------------------ END
charger_read_current
err_t charger_read_current(charger_t *ctx, float *current)
Charger read current function.
charger_cfg_t::gpio_sel
charger_gpio_sel_t gpio_sel
Definition: charger.h:193
charger_write_scratchpad
err_t charger_write_scratchpad(charger_t *ctx, uint8_t page, uint8_t *data_in, uint8_t len)
Charger write scratchpad function.
charger_convert_voltage
err_t charger_convert_voltage(charger_t *ctx)
Charger convert voltage function.
charger_write_elapsed_time
err_t charger_write_elapsed_time(charger_t *ctx, uint32_t seconds)
Charger write elapsed time function.
charger_init
err_t charger_init(charger_t *ctx, charger_cfg_t *cfg)
Charger initialization function.
charger_default_cfg
err_t charger_default_cfg(charger_t *ctx)
Charger default configuration function.
charger_cfg_t::ow1
pin_name_t ow1
Definition: charger.h:190
charger_return_value_t
charger_return_value_t
Charger Click return value data.
Definition: charger.h:202
charger_read_elapsed_time
err_t charger_read_elapsed_time(charger_t *ctx, uint32_t *seconds)
Charger read elapsed time function.
charger_t
Charger Click context object.
Definition: charger.h:174
charger_cfg_t
Charger Click configuration object.
Definition: charger.h:188
charger_read_batt_vdd
err_t charger_read_batt_vdd(charger_t *ctx, float *voltage)
Charger read battery VDD function.
charger_check_communication
err_t charger_check_communication(charger_t *ctx)
Charger check communication function.
CHARGER_GPIO_OW1
@ CHARGER_GPIO_OW1
Definition: charger.h:164
charger_convert_temperature
err_t charger_convert_temperature(charger_t *ctx)
Charger convert temperature function.
charger_calibrate_current
err_t charger_calibrate_current(charger_t *ctx)
Charger calibrate current function.
charger_read_system_vdd
err_t charger_read_system_vdd(charger_t *ctx, float *voltage)
Charger read system VDD function.
charger_gpio_sel_t
charger_gpio_sel_t
Charger Click gpio selector.
Definition: charger.h:163
charger_read_scratchpad
err_t charger_read_scratchpad(charger_t *ctx, uint8_t page, uint8_t *data_out, uint8_t len)
Charger read scratchpad function.
charger_recall_memory
err_t charger_recall_memory(charger_t *ctx, uint8_t page)
Charger recall scratchpad function.
CHARGER_ERROR
@ CHARGER_ERROR
Definition: charger.h:204
CHARGER_GPIO_OW2
@ CHARGER_GPIO_OW2
Definition: charger.h:165
charger_read_temperature
err_t charger_read_temperature(charger_t *ctx, float *temperature)
Charger read temperature function.
charger_t::rom_addr
one_wire_rom_address_t rom_addr
Definition: charger.h:178
charger_copy_scratchpad
err_t charger_copy_scratchpad(charger_t *ctx, uint8_t page)
Charger copy scratchpad function.
charger_t::ow
one_wire_t ow
Definition: charger.h:176
charger_cfg_setup
void charger_cfg_setup(charger_cfg_t *cfg)
Charger configuration object setup function.
CHARGER_OK
@ CHARGER_OK
Definition: charger.h:203
charger_gpio_selection
void charger_gpio_selection(charger_cfg_t *cfg, charger_gpio_sel_t gpio_sel)
Charger driver interface setup function.
charger_t::address
uint8_t address
Definition: charger.h:179
charger_cfg_t::ow2
pin_name_t ow2
Definition: charger.h:191
charger_select_device
err_t charger_select_device(charger_t *ctx)
Charger select device function.