ads1x1x_internal.h
Go to the documentation of this file.
1 /*
2  * SPDX-FileCopyrightText: 2017 OTA keys S.A.
3  * SPDX-FileCopyrightText: 2018 Acutam Automation, LLC
4  * SPDX-FileCopyrightText: 2025 Baptiste Le Duc <baptiste.leduc38@gmail.com>
5  * SPDX-License-Identifier: LGPL-2.1-only
6  */
7 
8 #pragma once
9 
23 #include <stdint.h>
24 
25 #ifdef __cplusplus
26 extern "C" {
27 #endif
28 
33 #define ADS1X1X_CONV_RES_ADDR (0)
34 #define ADS1X1X_CONF_ADDR (1)
35 #define ADS1X1X_LOW_LIMIT_ADDR (2)
36 #define ADS1X1X_HIGH_LIMIT_ADDR (3)
42 #define ADS1X1X_CONF_OS_CONV_MASK (1 << 7)
50 #define ADS1X1X_MUX_MASK ((1 << 6) | (1 << 5) | (1 << 4))
51 #define ADS1X1X_AIN0_DIFFM_AIN1 ((0 << 6) | (0 << 5) | (0 << 4))
53 #define ADS1X1X_AIN0_DIFFM_AIN3 ((0 << 6) | (0 << 5) | (1 << 4))
54 #define ADS1X1X_AIN1_DIFFM_AIN3 ((0 << 6) | (1 << 5) | (0 << 4))
55 #define ADS1X1X_AIN2_DIFFM_AIN3 ((0 << 6) | (1 << 5) | (1 << 4))
56 #define ADS1X1X_AIN0_SINGM ((1 << 6) | (0 << 5) | (0 << 4))
57 #define ADS1X1X_AIN1_SINGM ((1 << 6) | (0 << 5) | (1 << 4))
58 #define ADS1X1X_AIN2_SINGM ((1 << 6) | (1 << 5) | (0 << 4))
59 #define ADS1X1X_AIN3_SINGM ((1 << 6) | (1 << 5) | (1 << 4))
68 #define ADS1X1X_PGA_MASK ((1 << 3) | (1 << 2) | (1 << 1))
69 #define ADS1X1X_PGA_FSR_6V144 ((0 << 3) | (0 << 2) | (0 << 1))
70 #define ADS1X1X_PGA_FSR_4V096 ((0 << 3) | (0 << 2) | (1 << 1))
71 #define ADS1X1X_PGA_FSR_2V048 ((0 << 3) | (1 << 2) | (0 << 1))
72 #define ADS1X1X_PGA_FSR_1V024 ((0 << 3) | (1 << 2) | (1 << 1))
73 #define ADS1X1X_PGA_FSR_0V512 ((1 << 3) | (0 << 2) | (0 << 1))
74 #define ADS1X1X_PGA_FSR_0V256 ((1 << 3) | (0 << 2) | (1 << 1))
82 #define ADS1X1X_MODE_MASK (1 << 0)
83 #define ADS1X1X_MODE_SINGLE (1 << 0)
84 #define ADS1X1X_MODE_CONTINUOUS (0 << 0)
93 #define ADS1X1X_DATAR_UNDEF (0xFF)
94 #define ADS1X1X_DATAR_MASK ((1 << 7) | (1 << 6) | (1 << 5))
101 #if MODULE_ADS111X
102 # define ADS111X_DATAR_8 ((0 << 7) | (0 << 6) | (0 << 5))
103 # define ADS111X_DATAR_16 ((0 << 7) | (0 << 6) | (1 << 5))
104 # define ADS111X_DATAR_64 ((0 << 7) | (1 << 6) | (0 << 5))
105 # define ADS111X_DATAR_128 ((0 << 7) | (1 << 6) | (1 << 5))
106 # define ADS111X_DATAR_250 ((1 << 7) | (0 << 6) | (0 << 5))
107 # define ADS111X_DATAR_475 ((1 << 7) | (0 << 6) | (1 << 5))
108 # define ADS111X_DATAR_860 ((1 << 7) | (1 << 6) | (0 << 5))
109 #endif
117 #if MODULE_ADS101X
118 # define ADS101X_DATAR_128 ((0 << 7) | (0 << 6) | (0 << 5))
119 # define ADS101X_DATAR_250 ((0 << 7) | (0 << 6) | (1 << 5))
120 # define ADS101X_DATAR_490 ((0 << 7) | (1 << 6) | (0 << 5))
121 # define ADS101X_DATAR_920 ((0 << 7) | (1 << 6) | (1 << 5))
122 # define ADS101X_DATAR_1600 ((1 << 7) | (0 << 6) | (0 << 5))
123 # define ADS101X_DATAR_2400 ((1 << 7) | (0 << 6) | (1 << 5))
124 # define ADS101X_DATAR_3300 ((1 << 7) | (1 << 6) | (0 << 5))
125 #endif
134 #define ADS1X1X_COMP_MODE_MASK (1 << 4)
135 #define ADS1X1X_COMP_MODE_TRADITIONAL (0 << 4)
136 #define ADS1X1X_COMP_MODE_WINDOW (1 << 4)
144 #define ADS1X1X_COMP_POLARITY_MASK (1 << 3)
145 #define ADS1X1X_COMP_POLARITY_LOW (0 << 3)
146 #define ADS1X1X_COMP_POLARITY_HIGH (1 << 3)
154 #define ADS1X1X_COMP_LATCH_MASK (1 << 2)
155 #define ADS1X1X_COMP_LATCH_DISABLE (0 << 2)
156 #define ADS1X1X_COMP_LATCH_ENABLE (1 << 2)
164 #define ADS1X1X_COMP_QUEUE_MASK ((1 << 1) | (1 << 0))
165 #define ADS1X1X_COMP_QUEUE_1 ((0 << 1) | (0 << 0))
166 #define ADS1X1X_COMP_QUEUE_2 ((0 << 1) | (1 << 0))
167 #define ADS1X1X_COMP_QUEUE_4 ((1 << 1) | (0 << 0))
168 #define ADS1X1X_COMP_QUEUE_DISABLE ((1 << 1) | (1 << 0))
175 #define ADS1X1X_BITS_RES_UNDEF (0)
180 #if MODULE_ADS101X
181 # define ADS101X_BITS_RES (12)
182 #endif
183 
187 #if MODULE_ADS111X
188 # define ADS111X_BITS_RES (16)
189 #endif
196 #define ADS1X1X_ALERT_MASK (ADS1X1X_COMP_QUEUE_MASK | ADS1X1X_COMP_LATCH_MASK | \
197  ADS1X1X_COMP_POLARITY_MASK | ADS1X1X_COMP_MODE_MASK)
198 
206 static inline uint16_t _ads1x1x_get_pga_voltage(uint8_t pga)
207 {
208  switch (pga) {
209  case ADS1X1X_PGA_FSR_6V144: return 6144;
210  case ADS1X1X_PGA_FSR_4V096: return 4096;
211  case ADS1X1X_PGA_FSR_2V048: return 2048;
212  case ADS1X1X_PGA_FSR_1V024: return 1024;
213  case ADS1X1X_PGA_FSR_0V512: return 512;
214  case ADS1X1X_PGA_FSR_0V256: return 256;
215  default: return 0;
216  }
217 }
218 
219 #ifdef __cplusplus
220 }
221 #endif
222 
#define ADS1X1X_PGA_FSR_1V024
+/-1.024V
#define ADS1X1X_PGA_FSR_0V512
+/-0.512V
#define ADS1X1X_PGA_FSR_6V144
+/-6.144V
static uint16_t _ads1x1x_get_pga_voltage(uint8_t pga)
Get the voltage reference for a given PGA setting.
#define ADS1X1X_PGA_FSR_4V096
+/-4.096V
#define ADS1X1X_PGA_FSR_0V256
+/-0.256V
#define ADS1X1X_PGA_FSR_2V048
+/-2.048V (default)