LibDriver INA226
Loading...
Searching...
No Matches
driver_ina226_shot.c
Go to the documentation of this file.
1
36
37#include "driver_ina226_shot.h"
38
39static ina226_handle_t gs_handle;
40
50uint8_t ina226_shot_init(ina226_address_t addr_pin, double r)
51{
52 uint8_t res;
53 uint16_t calibration;
54
55 /* link interface function */
64
65 /* set addr pin */
66 res = ina226_set_addr_pin(&gs_handle, addr_pin);
67 if (res != 0)
68 {
69 ina226_interface_debug_print("ina226: set addr pin failed.\n");
70
71 return 1;
72 }
73
74 /* set the r */
75 res = ina226_set_resistance(&gs_handle, r);
76 if (res != 0)
77 {
78 ina226_interface_debug_print("ina226: set resistance failed.\n");
79
80 return 1;
81 }
82
83 /* init */
84 res = ina226_init(&gs_handle);
85 if (res != 0)
86 {
87 ina226_interface_debug_print("ina226: init failed.\n");
88
89 return 1;
90 }
91
92 /* set default average mode */
94 if (res != 0)
95 {
96 ina226_interface_debug_print("ina226: set average mode failed.\n");
97 (void)ina226_deinit(&gs_handle);
98
99 return 1;
100 }
101
102 /* set default bus voltage conversion time */
104 if (res != 0)
105 {
106 ina226_interface_debug_print("ina226: set bus voltage conversion time failed.\n");
107 (void)ina226_deinit(&gs_handle);
108
109 return 1;
110 }
111
112 /* set default shunt voltage conversion time */
114 if (res != 0)
115 {
116 ina226_interface_debug_print("ina226: set shunt voltage conversion time failed.\n");
117 (void)ina226_deinit(&gs_handle);
118
119 return 1;
120 }
121
122 /* calculate calibration */
123 res = ina226_calculate_calibration(&gs_handle, (uint16_t *)&calibration);
124 if (res != 0)
125 {
126 ina226_interface_debug_print("ina226: calculate calibration failed.\n");
127 (void)ina226_deinit(&gs_handle);
128
129 return 1;
130 }
131 res = ina226_set_calibration(&gs_handle, calibration);
132 if (res != 0)
133 {
134 ina226_interface_debug_print("ina226: set calibration failed.\n");
135 (void)ina226_deinit(&gs_handle);
136
137 return 1;
138 }
139
140 /* set power down */
141 res = ina226_set_mode(&gs_handle, INA226_MODE_POWER_DOWN);
142 if (res != 0)
143 {
144 ina226_interface_debug_print("ina226: set mode failed.\n");
145 (void)ina226_deinit(&gs_handle);
146
147 return 1;
148 }
149
150 return 0;
151}
152
163uint8_t ina226_shot_read(float *mV, float *mA, float *mW)
164{
165 uint8_t res;
166 int16_t s_raw;
167 uint16_t u_raw;
168
169 /* set shunt bus voltage triggered */
171 if (res != 0)
172 {
173 return 1;
174 }
175
176 /* read bus voltage */
177 res = ina226_read_bus_voltage(&gs_handle, (uint16_t *)&u_raw, mV);
178 if (res != 0)
179 {
180 return 1;
181 }
182
183 /* read current */
184 res = ina226_read_current(&gs_handle, (int16_t *)&s_raw, mA);
185 if (res != 0)
186 {
187 return 1;
188 }
189
190 /* read power */
191 res = ina226_read_power(&gs_handle, (uint16_t *)&u_raw, mW);
192 if (res != 0)
193 {
194 return 1;
195 }
196
197 return 0;
198}
199
208{
209 uint8_t res;
210
211 res = ina226_deinit(&gs_handle);
212 if (res != 0)
213 {
214 return 1;
215 }
216
217 return 0;
218}
uint8_t ina226_calculate_calibration(ina226_handle_t *handle, uint16_t *calibration)
calculate the calibration
uint8_t ina226_set_bus_voltage_conversion_time(ina226_handle_t *handle, ina226_conversion_time_t t)
set bus voltage conversion time
uint8_t ina226_read_current(ina226_handle_t *handle, int16_t *raw, float *mA)
read the current
uint8_t ina226_deinit(ina226_handle_t *handle)
close the chip
uint8_t ina226_set_mode(ina226_handle_t *handle, ina226_mode_t mode)
set the mode
uint8_t ina226_set_addr_pin(ina226_handle_t *handle, ina226_address_t addr_pin)
set the iic address pin
uint8_t ina226_read_power(ina226_handle_t *handle, uint16_t *raw, float *mW)
read the power
uint8_t ina226_set_average_mode(ina226_handle_t *handle, ina226_avg_t mode)
set average mode
ina226_address_t
ina226 address enumeration definition
struct ina226_handle_s ina226_handle_t
ina226 handle structure definition
uint8_t ina226_init(ina226_handle_t *handle)
initialize the chip
uint8_t ina226_set_shunt_voltage_conversion_time(ina226_handle_t *handle, ina226_conversion_time_t t)
set shunt voltage conversion time
uint8_t ina226_set_calibration(ina226_handle_t *handle, uint16_t data)
set the calibration
uint8_t ina226_set_resistance(ina226_handle_t *handle, double resistance)
set the resistance
uint8_t ina226_read_bus_voltage(ina226_handle_t *handle, uint16_t *raw, float *mV)
read the bus voltage
@ INA226_MODE_SHUNT_BUS_VOLTAGE_TRIGGERED
@ INA226_MODE_POWER_DOWN
#define INA226_SHOT_DEFAULT_SHUNT_VOLTAGE_CONVERSION_TIME
#define INA226_SHOT_DEFAULT_AVG_MODE
ina226 shot example default definition
uint8_t ina226_shot_read(float *mV, float *mA, float *mW)
shot example read
#define INA226_SHOT_DEFAULT_BUS_VOLTAGE_CONVERSION_TIME
uint8_t ina226_shot_deinit(void)
shot example deinit
uint8_t ina226_shot_init(ina226_address_t addr_pin, double r)
shot example init
void ina226_interface_receive_callback(uint8_t type)
interface receive callback
uint8_t ina226_interface_iic_deinit(void)
interface iic bus deinit
uint8_t ina226_interface_iic_init(void)
interface iic bus init
void ina226_interface_delay_ms(uint32_t ms)
interface delay ms
uint8_t ina226_interface_iic_write(uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len)
interface iic bus write
void ina226_interface_debug_print(const char *const fmt,...)
interface print format data
uint8_t ina226_interface_iic_read(uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len)
interface iic bus read