vcpmonitor2 2.0.0.0
vcpmonitor2.h
Go to the documentation of this file.
1/*
2 * MikroSDK - MikroE Software Development Kit
3 * Copyright© 2020 MikroElektronika d.o.o.
4 *
5 * Permission is hereby granted, free of charge, to any person
6 * obtaining a copy of this software and associated documentation
7 * files (the "Software"), to deal in the Software without restriction,
8 * including without limitation the rights to use, copy, modify, merge,
9 * publish, distribute, sublicense, and/or sell copies of the Software,
10 * and to permit persons to whom the Software is furnished to do so,
11 * subject to the following conditions:
12 *
13 * The above copyright notice and this permission notice shall be
14 * included in all copies or substantial portions of the Software.
15 *
16 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
19 * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
20 * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
21 * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE
22 * OR OTHER DEALINGS IN THE SOFTWARE.
23 */
24
33// ----------------------------------------------------------------------------
34
35#ifndef VCPMONITOR2_H
36#define VCPMONITOR2_H
37
42#ifdef PREINIT_SUPPORTED
43#include "preinit.h"
44#endif
45
46#ifdef MikroCCoreVersion
47 #if MikroCCoreVersion >= 1
48 #include "delays.h"
49 #endif
50#endif
51
52#include "drv_digital_out.h"
53#include "drv_digital_in.h"
54#include "drv_i2c_master.h"
55
56// -------------------------------------------------------------- PUBLIC MACROS
66#define VCPMONITOR2_MAP_MIKROBUS( cfg, mikrobus ) \
67 cfg.scl = MIKROBUS( mikrobus, MIKROBUS_SCL ); \
68 cfg.sda = MIKROBUS( mikrobus, MIKROBUS_SDA ); \
69 cfg.rst = MIKROBUS( mikrobus, MIKROBUS_RST )
70
77#define VCPMONITOR2_RETVAL uint8_t
78
79#define VCPMONITOR2_OK 0x00
80#define VCPMONITOR2_INIT_ERROR 0xFF
87#define VCPMONITOR2_DEVICE_SLAVE_ADDR_GND 0x40
88#define VCPMONITOR2_DEVICE_SLAVE_ADDR_VCC 0x41
89#define VCPMONITOR2_DEVICE_SLAVE_ADDR_SCL 0x42
90#define VCPMONITOR2_DEVICE_SLAVE_ADDR_SDA 0x43
97#define VCPMONITOR2_STATUS_ADDR_GND_GND 0x70
98#define VCPMONITOR2_STATUS_ADDR_VCC_GND 0x72
99#define VCPMONITOR2_STATUS_ADDR_GND_VCC 0x71
100#define VCPMONITOR2_STATUS_ADDR_VCC_VCC 0x73
107#define VCPMONITOR2_ALERT_REG_INPUT 0x00
108#define VCPMONITOR2_ALERT_REG_POLARITY 0x02
109#define VCPMONITOR2_ALERT_REG_CONFIG 0x03
116#define VCPMONITOR2_REG_CONFIGURATION 0x00
117#define VCPMONITOR2_REG_CH_1_SHUNT_VOLT 0x01
118#define VCPMONITOR2_REG_CH_1_BUS_VOLT 0x02
119#define VCPMONITOR2_REG_CH_2_SHUNT_VOLT 0x03
120#define VCPMONITOR2_REG_CH_2_BUS_VOLT 0x04
121#define VCPMONITOR2_REG_CH_3_SHUNT_VOLT 0x05
122#define VCPMONITOR2_REG_CH_3_BUS_VOLT 0x06
123#define VCPMONITOR2_REG_CH_1_CRITICAL_ALT 0x07
124#define VCPMONITOR2_REG_CH_1_WARNING_ALT 0x08
125#define VCPMONITOR2_REG_CH_2_CRITICAL_ALT 0x09
126#define VCPMONITOR2_REG_CH_2_WARNING_ALT 0x0A
127#define VCPMONITOR2_REG_CH_3_CRITICAL_ALT 0x0B
128#define VCPMONITOR2_REG_CH_3_WARNING_ALT 0x0C
129#define VCPMONITOR2_REG_SHUNT_VOLT_SUM 0x0D
130#define VCPMONITOR2_REG_SHUNT_VOLT_SUM_LIMIT 0x0E
131#define VCPMONITOR2_REG_MASK_ENABLE 0x0F
132#define VCPMONITOR2_REG_PWR_UPPER_LIMIT 0x10
133#define VCPMONITOR2_REG_PWR_LOWER_LIMIT 0x11
134#define VCPMONITOR2_REG_MANUFACTURER_ID 0xFE
135#define VCPMONITOR2_REG_DIE_ID 0xFF
142#define VCPMONITOR2_DEF_MANUFACTURE_ID 0x5449
143#define VCPMONITOR2_DEF_DIE_ID 0x3220
144#define VCPMONITOR2_DEF_PWR_LOWER_LIMIT 0x2328
145#define VCPMONITOR2_DEF_PWR_UPPER_LIMIT 0x2F10
146#define VCPMONITOR2_DEF_MASK_ENABLE 0x0002
147#define VCPMONITOR2_DEF_SHUNT_VOLT_SUM_LIMIT 0x7FFE
148#define VCPMONITOR2_DEF_CONFIGURATION 0x7127
149#define VCPMONITOR2_DEF_CH_1234_ALERT 0x7FF8
156#define VCPMONITOR2_CFG_SW_RESET 0x8000
157#define VCPMONITOR2_CFG_CH_1_ENABLE 0x4000
158#define VCPMONITOR2_CFG_CH_1_DISABLE 0x0000
159#define VCPMONITOR2_CFG_CH_2_ENABLE 0x2000
160#define VCPMONITOR2_CFG_CH_2_DISABLE 0x0000
161#define VCPMONITOR2_CFG_CH_3_ENABLE 0x1000
162#define VCPMONITOR2_CFG_CH_3_DISABLE 0x0000
163#define VCPMONITOR2_CFG_AVG_1 0x0000
164#define VCPMONITOR2_CFG_AVG_4 0x0200
165#define VCPMONITOR2_CFG_AVG_16 0x0400
166#define VCPMONITOR2_CFG_AVG_64 0x0600
167#define VCPMONITOR2_CFG_AVG_128 0x0800
168#define VCPMONITOR2_CFG_AVG_256 0x0A00
169#define VCPMONITOR2_CFG_AVG_512 0x0C00
170#define VCPMONITOR2_CFG_AVG_1024 0x0D00
171
172#define VCPMONITOR2_CFG_VBUS_CT_140us 0x0000
173#define VCPMONITOR2_CFG_VBUS_CT_204us 0x0040
174#define VCPMONITOR2_CFG_VBUS_CT_332us 0x0080
175#define VCPMONITOR2_CFG_VBUS_CT_588us 0x00C0
176#define VCPMONITOR2_CFG_VBUS_CT_1100us 0x0100
177#define VCPMONITOR2_CFG_VBUS_CT_2116us 0x0140
178#define VCPMONITOR2_CFG_VBUS_CT_4156us 0x0180
179#define VCPMONITOR2_CFG_VBUS_CT_8244us 0x01C0
180#define VCPMONITOR2_CFG_VSH_CT_140us 0x0000
181#define VCPMONITOR2_CFG_VSH_CT_204us 0x0008
182#define VCPMONITOR2_CFG_VSH_CT_332us 0x0010
183#define VCPMONITOR2_CFG_VSH_CT_588us 0x0018
184#define VCPMONITOR2_CFG_VSH_CT_1100us 0x0020
185#define VCPMONITOR2_CFG_VSH_CT_2116us 0x0028
186#define VCPMONITOR2_CFG_VSH_CT_4156us 0x0030
187#define VCPMONITOR2_CFG_VSH_CT_8244us 0x0038
188
189#define VCPMONITOR2_CFG_MODE_POWER_DOWN 0x0000
190#define VCPMONITOR2_CFG_MODE_SS_SHUNT_VOLT 0x0001
191#define VCPMONITOR2_CFG_MODE_SS_BUS_VOLT 0x0002
192#define VCPMONITOR2_CFG_MODE_SS_SHUNT_BUS_VOLT 0x0003
193#define VCPMONITOR2_CFG_MODE_CONT_SHUNT_VOLT 0x0005
194#define VCPMONITOR2_CFG_MODE_CONT_BUS_VOLT 0x0006
195#define VCPMONITOR2_CFG_MODE_CONT_SHUNT_BUS_VOLT 0x0007
202#define VCPMONITOR2_CFG_MASK_SCC_1_ENABLE 0x4000
203#define VCPMONITOR2_CFG_MASK_SCC_2_ENABLE 0x2000
204#define VCPMONITOR2_CFG_MASK_SCC_3_ENABLE 0x1000
205#define VCPMONITOR2_CFG_MASK_SCC_1_DISABLE 0x0000
206#define VCPMONITOR2_CFG_MASK_SCC_2_DISABLE 0x0000
207#define VCPMONITOR2_CFG_MASK_SCC_3_DISABLE 0x0000
208#define VCPMONITOR2_CFG_MASK_WEN_TRANSPARENT 0x0000
209#define VCPMONITOR2_CFG_MASK_WEN_LATCH_ENABLED 0x0800
210#define VCPMONITOR2_CFG_MASK_CEN_TRANSPARENT 0x0000
211#define VCPMONITOR2_CFG_MASK_CEN_LATCH_ENABLED 0x0400
212#define VCPMONITOR2_CFG_MASK_CF_1_ENABLE 0x0080
213#define VCPMONITOR2_CFG_MASK_CF_2_ENABLE 0x0100
214#define VCPMONITOR2_CFG_MASK_CF_3_ENABLE 0x0200
215#define VCPMONITOR2_CFG_MASK_CF_1_DISABLE 0x0000
216#define VCPMONITOR2_CFG_MASK_CF_2_DISABLE 0x0000
217#define VCPMONITOR2_CFG_MASK_CF_3_DISABLE 0x0000
218#define VCPMONITOR2_CFG_MASK_SF_ENABLE 0x0040
219#define VCPMONITOR2_CFG_MASK_SF_DISABLE 0x0000
220#define VCPMONITOR2_CFG_MASK_VF_1_ENABLE 0x0008
221#define VCPMONITOR2_CFG_MASK_VF_2_ENABLE 0x0010
222#define VCPMONITOR2_CFG_MASK_VF_3_ENABLE 0x0020
223#define VCPMONITOR2_CFG_MASK_VF_1_DISABLE 0x0000
224#define VCPMONITOR2_CFG_MASK_VF_2_DISABLE 0x0000
225#define VCPMONITOR2_CFG_MASK_VF_3_DISABLE 0x0000
226#define VCPMONITOR2_CFG_MASK_PVF_ENABLE 0x0004
227#define VCPMONITOR2_CFG_MASK_TCF_ENABLE 0x0002
228#define VCPMONITOR2_CFG_MASK_CVRF_ENABLE 0x0001
229#define VCPMONITOR2_CFG_MASK_PVF_DISABLE 0x0000
230#define VCPMONITOR2_CFG_MASK_TCF_DISABLE 0x0000
231#define VCPMONITOR2_CFG_MASK_CVRF_DISABLE 0x0000
238#define VCPMONITOR2_CHANNEL_1 0x01
239#define VCPMONITOR2_CHANNEL_2 0x02
240#define VCPMONITOR2_CHANNEL_3 0x03
247#define VCPMONITOR2_ALERT_PVALID 0x01
248#define VCPMONITOR2_ALERT_WRNG 0x02
249#define VCPMONITOR2_ALERT_CRTCL 0x04
250#define VCPMONITOR2_ALERT_TCTRL 0x08
253#define DEVICE_OK 0
254#define DEVICE_ERROR 1
255
256 // End group macro
257// --------------------------------------------------------------- PUBLIC TYPES
266typedef struct
267{
268 // Output pins
269
270 digital_out_t rst;
271
272 // Modules
273
274 i2c_master_t i2c;
275
276 // ctx variable
277
280
282
286typedef struct
287{
288 // Communication gpio pins
289
290 pin_name_t scl;
291 pin_name_t sda;
292
293 // Additional gpio pins
294
295 pin_name_t rst;
296
297 // static variable
298
299 uint32_t i2c_speed;
302
304
305 // End types group
306// ----------------------------------------------- PUBLIC FUNCTION DECLARATIONS
307
313#ifdef __cplusplus
314extern "C"{
315#endif
316
326
336
345
356void vcpmonitor2_generic_write ( vcpmonitor2_t *ctx, uint8_t reg, uint8_t *data_buf, uint8_t len );
357
368void vcpmonitor2_generic_read ( vcpmonitor2_t *ctx, uint8_t reg, uint8_t *data_buf, uint8_t len );
369
378
387
396float vcpmonitor2_get_bus_voltage ( vcpmonitor2_t *ctx, uint8_t channel );
397
406float vcpmonitor2_get_shunt_voltage ( vcpmonitor2_t *ctx, uint8_t channel );
407
416float vcpmonitor2_get_current ( vcpmonitor2_t *ctx, uint8_t channel );
417
426float vcpmonitor2_get_power ( vcpmonitor2_t *ctx, uint8_t channel );
427
441void vcpmonitor2_configuration ( vcpmonitor2_t *ctx, uint16_t cfg );
442
451
459
474void vcpmonitor2_alert_config ( vcpmonitor2_t *ctx, uint8_t cfg );
475
476#ifdef __cplusplus
477}
478#endif
479#endif // _VCPMONITOR2_H_
480
481 // End public_function group
483
484// ------------------------------------------------------------------------- END
#define VCPMONITOR2_RETVAL
Definition vcpmonitor2.h:77
float vcpmonitor2_get_current(vcpmonitor2_t *ctx, uint8_t channel)
Get Current data in mA.
float vcpmonitor2_get_shunt_voltage(vcpmonitor2_t *ctx, uint8_t channel)
Get Shunt voltage in mV.
void vcpmonitor2_reset_alert(vcpmonitor2_t *ctx)
Alert reset.
void vcpmonitor2_configuration(vcpmonitor2_t *ctx, uint16_t cfg)
Configuration function.
float vcpmonitor2_get_power(vcpmonitor2_t *ctx, uint8_t channel)
Get Power in W.
void vcpmonitor2_default_cfg(vcpmonitor2_t *ctx)
Click Default Configuration function.
uint16_t vcpmonitor2_get_manifacture_id(vcpmonitor2_t *ctx)
Get Manufacture ID.
float vcpmonitor2_get_bus_voltage(vcpmonitor2_t *ctx, uint8_t channel)
Get BUS voltage in mV.
uint16_t vcpmonitor2_get_die_id(vcpmonitor2_t *ctx)
Get DIE ID.
uint8_t vcpmonitor2_get_alert_status(vcpmonitor2_t *ctx)
Get Alert status.
void vcpmonitor2_cfg_setup(vcpmonitor2_cfg_t *cfg)
Config Object Initialization function.
void vcpmonitor2_generic_write(vcpmonitor2_t *ctx, uint8_t reg, uint8_t *data_buf, uint8_t len)
Generic write function.
void vcpmonitor2_generic_read(vcpmonitor2_t *ctx, uint8_t reg, uint8_t *data_buf, uint8_t len)
Generic read function.
void vcpmonitor2_alert_config(vcpmonitor2_t *ctx, uint8_t cfg)
Alert configuration ( Enable / Disable )
VCPMONITOR2_RETVAL vcpmonitor2_init(vcpmonitor2_t *ctx, vcpmonitor2_cfg_t *cfg)
Initialization function.
Click configuration structure definition.
Definition vcpmonitor2.h:287
uint8_t device_slave_address
Definition vcpmonitor2.h:300
uint32_t i2c_speed
Definition vcpmonitor2.h:299
uint8_t device_status_address
Definition vcpmonitor2.h:301
pin_name_t scl
Definition vcpmonitor2.h:290
pin_name_t sda
Definition vcpmonitor2.h:291
pin_name_t rst
Definition vcpmonitor2.h:295
Click ctx object definition.
Definition vcpmonitor2.h:267
uint8_t device_slave_address
Definition vcpmonitor2.h:278
uint8_t device_status_address
Definition vcpmonitor2.h:279
i2c_master_t i2c
Definition vcpmonitor2.h:274
digital_out_t rst
Definition vcpmonitor2.h:270