LibDriver INA226  1.0.0
INA226 full-featured driver
driver_ina226_shot.c
Go to the documentation of this file.
1 
37 #include "driver_ina226_shot.h"
38 
39 static ina226_handle_t gs_handle;
50 uint8_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 
163 uint8_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 
207 uint8_t ina226_shot_deinit(void)
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
Definition: driver_ina226.h:70
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
ina226 handle structure definition