LibDriver INA219
Loading...
Searching...
No Matches
driver_ina219.h
Go to the documentation of this file.
1
36
37#ifndef DRIVER_INA219_H
38#define DRIVER_INA219_H
39
40#include <stdio.h>
41#include <stdint.h>
42#include <string.h>
43
44#ifdef __cplusplus
45extern "C"{
46#endif
47
53
58
62typedef enum
63{
64 INA219_ADDRESS_0 = (0x40 << 1),
65 INA219_ADDRESS_1 = (0x41 << 1),
66 INA219_ADDRESS_2 = (0x42 << 1),
67 INA219_ADDRESS_3 = (0x43 << 1),
68 INA219_ADDRESS_4 = (0x44 << 1),
69 INA219_ADDRESS_5 = (0x45 << 1),
70 INA219_ADDRESS_6 = (0x46 << 1),
71 INA219_ADDRESS_7 = (0x47 << 1),
72 INA219_ADDRESS_8 = (0x48 << 1),
73 INA219_ADDRESS_9 = (0x49 << 1),
74 INA219_ADDRESS_A = (0x4A << 1),
75 INA219_ADDRESS_B = (0x4B << 1),
76 INA219_ADDRESS_C = (0x4C << 1),
77 INA219_ADDRESS_D = (0x4D << 1),
78 INA219_ADDRESS_E = (0x4E << 1),
79 INA219_ADDRESS_F = (0x4F << 1)
81
90
101
119
134
138typedef struct ina219_handle_s
139{
140 uint8_t iic_addr;
141 uint8_t (*iic_init)(void);
142 uint8_t (*iic_deinit)(void);
143 uint8_t (*iic_read)(uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len);
144 uint8_t (*iic_write)(uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len);
145 void (*delay_ms)(uint32_t ms);
146 void (*debug_print)(const char *const fmt, ...);
147 double r;
148 double current_lsb;
149 uint8_t inited;
151
167
171
178
185#define DRIVER_INA219_LINK_INIT(HANDLE, STRUCTURE) memset(HANDLE, 0, sizeof(STRUCTURE))
186
193#define DRIVER_INA219_LINK_IIC_INIT(HANDLE, FUC) (HANDLE)->iic_init = FUC
194
201#define DRIVER_INA219_LINK_IIC_DEINIT(HANDLE, FUC) (HANDLE)->iic_deinit = FUC
202
209#define DRIVER_INA219_LINK_IIC_READ(HANDLE, FUC) (HANDLE)->iic_read = FUC
210
217#define DRIVER_INA219_LINK_IIC_WRITE(HANDLE, FUC) (HANDLE)->iic_write = FUC
218
225#define DRIVER_INA219_LINK_DELAY_MS(HANDLE, FUC) (HANDLE)->delay_ms = FUC
226
233#define DRIVER_INA219_LINK_DEBUG_PRINT(HANDLE, FUC) (HANDLE)->debug_print = FUC
234
238
245
254uint8_t ina219_info(ina219_info_t *info);
255
265uint8_t ina219_set_addr_pin(ina219_handle_t *handle, ina219_address_t addr_pin);
266
276uint8_t ina219_get_addr_pin(ina219_handle_t *handle, ina219_address_t *addr_pin);
277
287uint8_t ina219_set_resistance(ina219_handle_t *handle, double resistance);
288
298uint8_t ina219_get_resistance(ina219_handle_t *handle, double *resistance);
299
311uint8_t ina219_init(ina219_handle_t *handle);
312
324uint8_t ina219_deinit(ina219_handle_t *handle);
325
338uint8_t ina219_read_shunt_voltage(ina219_handle_t *handle, int16_t *raw, float *mV);
339
354uint8_t ina219_read_bus_voltage(ina219_handle_t *handle, uint16_t *raw, float *mV);
355
368uint8_t ina219_read_current(ina219_handle_t *handle, int16_t *raw, float *mA);
369
382uint8_t ina219_read_power(ina219_handle_t *handle, uint16_t *raw, float *mW);
383
394uint8_t ina219_soft_reset(ina219_handle_t *handle);
395
408
421
433uint8_t ina219_set_pga(ina219_handle_t *handle, ina219_pga_t pga);
434
446uint8_t ina219_get_pga(ina219_handle_t *handle, ina219_pga_t *pga);
447
460
473
486
499
511uint8_t ina219_set_mode(ina219_handle_t *handle, ina219_mode_t mode);
512
524uint8_t ina219_get_mode(ina219_handle_t *handle, ina219_mode_t *mode);
525
537uint8_t ina219_set_calibration(ina219_handle_t *handle, uint16_t data);
538
550uint8_t ina219_get_calibration(ina219_handle_t *handle, uint16_t *data);
551
565uint8_t ina219_calculate_calibration(ina219_handle_t *handle, uint16_t *calibration);
566
570
577
590uint8_t ina219_set_reg(ina219_handle_t *handle, uint8_t reg, uint16_t data);
591
604uint8_t ina219_get_reg(ina219_handle_t *handle, uint8_t reg, uint16_t *data);
605
609
613
614#ifdef __cplusplus
615}
616#endif
617
618#endif
uint8_t ina219_get_pga(ina219_handle_t *handle, ina219_pga_t *pga)
get the pga
uint8_t ina219_get_resistance(ina219_handle_t *handle, double *resistance)
get the resistance
uint8_t ina219_get_bus_voltage_range(ina219_handle_t *handle, ina219_bus_voltage_range_t *range)
get the bus voltage range
uint8_t ina219_soft_reset(ina219_handle_t *handle)
soft reset the chip
struct ina219_info_s ina219_info_t
ina219 information structure definition
uint8_t ina219_set_addr_pin(ina219_handle_t *handle, ina219_address_t addr_pin)
set the iic address pin
uint8_t ina219_info(ina219_info_t *info)
get chip's information
uint8_t ina219_set_shunt_voltage_adc_mode(ina219_handle_t *handle, ina219_adc_mode_t mode)
set the shunt voltage adc mode
uint8_t ina219_get_mode(ina219_handle_t *handle, ina219_mode_t *mode)
get the mode
uint8_t ina219_get_bus_voltage_adc_mode(ina219_handle_t *handle, ina219_adc_mode_t *mode)
get the bus voltage adc mode
ina219_adc_mode_t
ina219 adc mode enumeration definition
ina219_pga_t
ina219 pga enumeration definition
uint8_t ina219_get_shunt_voltage_adc_mode(ina219_handle_t *handle, ina219_adc_mode_t *mode)
get the shunt voltage adc mode
uint8_t ina219_get_addr_pin(ina219_handle_t *handle, ina219_address_t *addr_pin)
get the iic address pin
uint8_t ina219_set_calibration(ina219_handle_t *handle, uint16_t data)
set the calibration
ina219_bus_voltage_range_t
ina219 bus voltage enumeration definition
uint8_t ina219_deinit(ina219_handle_t *handle)
close the chip
uint8_t ina219_get_calibration(ina219_handle_t *handle, uint16_t *data)
get the calibration
uint8_t ina219_set_mode(ina219_handle_t *handle, ina219_mode_t mode)
set the mode
uint8_t ina219_set_pga(ina219_handle_t *handle, ina219_pga_t pga)
set the pga
uint8_t ina219_set_bus_voltage_range(ina219_handle_t *handle, ina219_bus_voltage_range_t range)
set the bus voltage range
uint8_t ina219_read_bus_voltage(ina219_handle_t *handle, uint16_t *raw, float *mV)
read the bus voltage
uint8_t ina219_read_current(ina219_handle_t *handle, int16_t *raw, float *mA)
read the current
uint8_t ina219_calculate_calibration(ina219_handle_t *handle, uint16_t *calibration)
calculate the calibration
uint8_t ina219_init(ina219_handle_t *handle)
initialize the chip
uint8_t ina219_set_resistance(ina219_handle_t *handle, double resistance)
set the resistance
ina219_mode_t
ina219 mode enumeration definition
ina219_address_t
ina219 address enumeration definition
uint8_t ina219_set_bus_voltage_adc_mode(ina219_handle_t *handle, ina219_adc_mode_t mode)
set the bus voltage adc mode
uint8_t ina219_read_shunt_voltage(ina219_handle_t *handle, int16_t *raw, float *mV)
read the shunt voltage
struct ina219_handle_s ina219_handle_t
ina219 handle structure definition
uint8_t ina219_read_power(ina219_handle_t *handle, uint16_t *raw, float *mW)
read the power
@ INA219_ADC_MODE_12_BIT_128_SAMPLES
@ INA219_ADC_MODE_12_BIT_8_SAMPLES
@ INA219_ADC_MODE_10_BIT_1_SAMPLES
@ INA219_ADC_MODE_12_BIT_1_SAMPLES
@ INA219_ADC_MODE_12_BIT_4_SAMPLES
@ INA219_ADC_MODE_9_BIT_1_SAMPLES
@ INA219_ADC_MODE_12_BIT_2_SAMPLES
@ INA219_ADC_MODE_12_BIT_16_SAMPLES
@ INA219_ADC_MODE_12_BIT_32_SAMPLES
@ INA219_ADC_MODE_12_BIT_64_SAMPLES
@ INA219_ADC_MODE_11_BIT_1_SAMPLES
@ INA219_PGA_320_MV
@ INA219_PGA_40_MV
@ INA219_PGA_80_MV
@ INA219_PGA_160_MV
@ INA219_BUS_VOLTAGE_RANGE_16V
@ INA219_BUS_VOLTAGE_RANGE_32V
@ INA219_MODE_POWER_DOWN
@ INA219_MODE_ADC_OFF
@ INA219_MODE_SHUNT_BUS_VOLTAGE_CONTINUOUS
@ INA219_MODE_SHUNT_VOLTAGE_CONTINUOUS
@ INA219_MODE_SHUNT_BUS_VOLTAGE_TRIGGERED
@ INA219_MODE_SHUNT_VOLTAGE_TRIGGERED
@ INA219_MODE_BUS_VOLTAGE_TRIGGERED
@ INA219_MODE_BUS_VOLTAGE_CONTINUOUS
@ INA219_ADDRESS_D
@ INA219_ADDRESS_0
@ INA219_ADDRESS_6
@ INA219_ADDRESS_2
@ INA219_ADDRESS_3
@ INA219_ADDRESS_8
@ INA219_ADDRESS_E
@ INA219_ADDRESS_7
@ INA219_ADDRESS_9
@ INA219_ADDRESS_1
@ INA219_ADDRESS_4
@ INA219_ADDRESS_B
@ INA219_ADDRESS_C
@ INA219_ADDRESS_A
@ INA219_ADDRESS_5
@ INA219_ADDRESS_F
uint8_t ina219_get_reg(ina219_handle_t *handle, uint8_t reg, uint16_t *data)
get the chip register
uint8_t ina219_set_reg(ina219_handle_t *handle, uint8_t reg, uint16_t data)
set the chip register
ina219 handle structure definition
void(* delay_ms)(uint32_t ms)
void(* debug_print)(const char *const fmt,...)
uint8_t(* iic_init)(void)
uint8_t(* iic_write)(uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len)
uint8_t(* iic_read)(uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len)
uint8_t(* iic_deinit)(void)
ina219 information structure definition
float supply_voltage_max_v
uint32_t driver_version
char manufacturer_name[32]
float supply_voltage_min_v
char chip_name[32]