1 /**************************************************************************/
4 @author K. Townsend (microBuilder.eu)
8 Software License Agreement (BSD License)
10 Copyright (c) 2012 Kevin Townsend
13 Redistribution and use in source and binary forms, with or without
14 modification, are permitted provided that the following conditions are met:
15 1. Redistributions of source code must retain the above copyright
16 notice, this list of conditions and the following disclaimer.
17 2. Redistributions in binary form must reproduce the above copyright
18 notice, this list of conditions and the following disclaimer in the
19 documentation and/or other materials provided with the distribution.
20 3. Neither the name of the copyright holders nor the
21 names of its contributors may be used to endorse or promote products
22 derived from this software without specific prior written permission.
24 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ''AS IS'' AND ANY
25 EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
26 WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
27 DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY
28 DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
29 (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
30 LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
31 ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
32 (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
33 SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
35 /**************************************************************************/
40 #include "projectconfig.h"
41 #include "core/i2c/i2c.h"
43 /*=========================================================================
45 -----------------------------------------------------------------------*/
46 #define INA219_ADDRESS (0x80) // 1000000x (A0+A1=GND)
47 #define INA219_READ (0x01)
48 /*=========================================================================*/
50 /*=========================================================================
52 -----------------------------------------------------------------------*/
53 #define INA219_REG_CONFIG (0x00)
54 /*---------------------------------------------------------------------*/
55 #define INA219_CONFIG_RESET (0x8000) // Reset Bit
57 #define INA219_CONFIG_BVOLTAGERANGE_MASK (0x4000) // Bus Voltage Range Mask
58 #define INA219_CONFIG_BVOLTAGERANGE_16V (0x0000) // 0-16V Range
59 #define INA219_CONFIG_BVOLTAGERANGE_32V (0x4000) // 0-32V Range
61 #define INA219_CONFIG_GAIN_MASK (0x1800) // Gain Mask
62 #define INA219_CONFIG_GAIN_1_40MV (0x0000) // Gain 1, 40mV Range
63 #define INA219_CONFIG_GAIN_2_80MV (0x0800) // Gain 2, 80mV Range
64 #define INA219_CONFIG_GAIN_4_160MV (0x1000) // Gain 4, 160mV Range
65 #define INA219_CONFIG_GAIN_8_320MV (0x1800) // Gain 8, 320mV Range
67 #define INA219_CONFIG_BADCRES_MASK (0x0780) // Bus ADC Resolution Mask
68 #define INA219_CONFIG_BADCRES_9BIT (0x0080) // 9-bit bus res = 0..511
69 #define INA219_CONFIG_BADCRES_10BIT (0x0100) // 10-bit bus res = 0..1023
70 #define INA219_CONFIG_BADCRES_11BIT (0x0200) // 11-bit bus res = 0..2047
71 #define INA219_CONFIG_BADCRES_12BIT (0x0400) // 12-bit bus res = 0..4097
73 #define INA219_CONFIG_SADCRES_MASK (0x0078) // Shunt ADC Resolution and Averaging Mask
74 #define INA219_CONFIG_SADCRES_9BIT_1S_84US (0x0000) // 1 x 9-bit shunt sample
75 #define INA219_CONFIG_SADCRES_10BIT_1S_148US (0x0008) // 1 x 10-bit shunt sample
76 #define INA219_CONFIG_SADCRES_11BIT_1S_276US (0x0010) // 1 x 11-bit shunt sample
77 #define INA219_CONFIG_SADCRES_12BIT_1S_532US (0x0018) // 1 x 12-bit shunt sample
78 #define INA219_CONFIG_SADCRES_12BIT_2S_1060US (0x0048) // 2 x 12-bit shunt samples averaged together
79 #define INA219_CONFIG_SADCRES_12BIT_4S_2130US (0x0050) // 4 x 12-bit shunt samples averaged together
80 #define INA219_CONFIG_SADCRES_12BIT_8S_4260US (0x0058) // 8 x 12-bit shunt samples averaged together
81 #define INA219_CONFIG_SADCRES_12BIT_16S_8510US (0x0060) // 16 x 12-bit shunt samples averaged together
82 #define INA219_CONFIG_SADCRES_12BIT_32S_17MS (0x0068) // 32 x 12-bit shunt samples averaged together
83 #define INA219_CONFIG_SADCRES_12BIT_64S_34MS (0x0070) // 64 x 12-bit shunt samples averaged together
84 #define INA219_CONFIG_SADCRES_12BIT_128S_69MS (0x0078) // 128 x 12-bit shunt samples averaged together
86 #define INA219_CONFIG_MODE_MASK (0x0007) // Operating Mode Mask
87 #define INA219_CONFIG_MODE_POWERDOWN (0x0000)
88 #define INA219_CONFIG_MODE_SVOLT_TRIGGERED (0x0001)
89 #define INA219_CONFIG_MODE_BVOLT_TRIGGERED (0x0002)
90 #define INA219_CONFIG_MODE_SANDBVOLT_TRIGGERED (0x0003)
91 #define INA219_CONFIG_MODE_ADCOFF (0x0004)
92 #define INA219_CONFIG_MODE_SVOLT_CONTINUOUS (0x0005)
93 #define INA219_CONFIG_MODE_BVOLT_CONTINUOUS (0x0006)
94 #define INA219_CONFIG_MODE_SANDBVOLT_CONTINUOUS (0x0007)
95 /*=========================================================================*/
97 /*=========================================================================
98 SHUNT VOLTAGE REGISTER (R)
99 -----------------------------------------------------------------------*/
100 #define INA219_REG_SHUNTVOLTAGE (0x01)
101 /*=========================================================================*/
103 /*=========================================================================
104 BUS VOLTAGE REGISTER (R)
105 -----------------------------------------------------------------------*/
106 #define INA219_REG_BUSVOLTAGE (0x02)
107 /*=========================================================================*/
109 /*=========================================================================
111 -----------------------------------------------------------------------*/
112 #define INA219_REG_POWER (0x03)
113 /*=========================================================================*/
115 /*=========================================================================
117 -----------------------------------------------------------------------*/
118 #define INA219_REG_CURRENT (0x04)
119 /*=========================================================================*/
121 /*=========================================================================
122 CALIBRATION REGISTER (R/W)
123 -----------------------------------------------------------------------*/
124 #define INA219_REG_CALIBRATION (0x05)
125 /*=========================================================================*/
127 void ina219Init(void);
128 int16_t ina219GetShuntVoltage(void);
129 int16_t ina219GetBusVoltage(void);
130 int16_t ina219GetPower(void);
131 int16_t ina219GetPower_mW(void);
132 int16_t ina219GetCurrent(void);
133 int16_t ina219GetCurrent_mA(void);
This page took 0.054469 seconds and 5 git commands to generate.