-
Notifications
You must be signed in to change notification settings - Fork 9
/
Copy pathina.h
81 lines (72 loc) · 3.01 KB
/
ina.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
#ifndef __INA_H__
#define __INA_H__
#include <inttypes.h>
#define I_LO 0 // current sensing on low side
#define I_HI 1 // current sensing on high side
#define INA_REG_CFG 0x00
#define INA_REG_SHUNT 0x01
#define INA_REG_BUS 0x02
#define INA_REG_POWER 0x03
#define INA_REG_CURRENT 0x04
#define INA_REG_CAL 0x05
#define INA_REG_MASK 0x06
#define INA_REG_ALERT 0x07
#define INA_REG_MFID 0x3e
#define INA_REG_DEVID 0x3f
#define INA_CFG_RST 0b1000000000000000
#define INA_CFG_ADC_LO 0b0001000000000000 // 20.48 mV
#define INA_CFG_ADC_HI 0b0000000000000000 // 81.92 mV
// number of averages
#define INA_CFG_AVG_1 0b0000000000000000
#define INA_CFG_AVG_4 0b0000001000000000
#define INA_CFG_AVG_16 0b0000010000000000
#define INA_CFG_AVG_64 0b0000011000000000
#define INA_CFG_AVG_128 0b0000100000000000
#define INA_CFG_AVG_256 0b0000101000000000
#define INA_CFG_AVG_512 0b0000110000000000
#define INA_CFG_AVG_1024 0b0000111000000000
// VBUS conversion time (us)
#define INA_CFG_VBUSCT_140 0b0000000000000000
#define INA_CFG_VBUSCT_204 0b0000000001000000
#define INA_CFG_VBUSCT_332 0b0000000010000000
#define INA_CFG_VBUSCT_588 0b0000000011000000
#define INA_CFG_VBUSCT_1100 0b0000000100000000
#define INA_CFG_VBUSCT_2116 0b0000000101000000
#define INA_CFG_VBUSCT_4156 0b0000000110000000
#define INA_CFG_VBUSCT_8244 0b0000000111000000
// SHUNT conversion time (us)
#define INA_CFG_VSHCT_140 0b0000000000000000
#define INA_CFG_VSHCT_204 0b0000000000001000
#define INA_CFG_VSHCT_332 0b0000000000010000
#define INA_CFG_VSHCT_588 0b0000000000011000
#define INA_CFG_VSHCT_1100 0b0000000000100000
#define INA_CFG_VSHCT_2116 0b0000000000101000
#define INA_CFG_VSHCT_4156 0b0000000000110000
#define INA_CFG_VSHCT_8244 0b0000000000111000
// modes of operation
#define INA_CFG_MODE_SHT 0b0000000000000000 // Shutdown
#define INA_CFG_MODE_SS_SH 0b0000000000000001 // Shunt Voltage triggered, single shot
#define INA_CFG_MODE_SS_BUS 0b0000000000000010 // Bus Voltage triggered, single shot
#define INA_CFG_MODE_SS_BUS_SH 0b0000000000000011 // Shunt voltage and Bus voltage triggered, single shot
#define INA_CFG_MODE_SHT2 0b0000000000000100 // Shutdown
#define INA_CFG_MODE_CON_SH 0b0000000000000101 // Continuous Shunt voltage
#define INA_CFG_MODE_CON_BUS 0b0000000000000110 // Continuous Bus voltage
#define INA_CFG_MODE_CON_BUS_SH 0b0000000000000111 // Continuous Shunt and Bus voltage
// masks
#define INA_MASK_SOL 0b1000000000000000
#define INA_MASK_SUL 0b0100000000000000
#define INA_MASK_BOL 0b0010000000000000
#define INA_MASK_BUL 0b0001000000000000
#define INA_MASK_POL 0b0000100000000000
#define INA_MASK_CNVR 0b0000010000000000
#define INA_MASK_MEMERR 0b0000000000100000
#define INA_MASK_AFF 0b0000000000010000
#define INA_MASK_CVRF 0b0000000000001000
#define INA_MASK_OVF 0b0000000000000100
#define INA_MASK_APOL 0b0000000000000010
#define INA_MASK_LEN 0b0000000000000001
void ina_init();
uint16_t ina_read(uint8_t dev, uint8_t reg);
void ina_write(uint8_t dev, uint8_t reg, uint16_t val);
#endif
// vim: tabstop=4 shiftwidth=4 autoindent