29#define _PACKED __attribute__((packed))
31#define ADS122_NUM_REG 16U
34#define ADS122_RESET_SETTLE_MS 20U
37#define ADS122_RESETn_BITOFFSET 7
38#define ADS122_RESETn_MASK (1 << 7)
40#define ADS122_AVDD_UV_BITOFFSET 6
41#define ADS122_AVDD_UV_MASK (1 << 6)
43#define ADS122_REF_UV_BITOFFSET 5
44#define ADS122_REF_UV_MASK (1 << 5)
46#define ADS122_REG_MAP_CRC_FAULT_BITOFFSET 3
47#define ADS122_REG_MAP_CRC_FAULT_MASK (1 << 3)
49#define ADS122_MEM_FAULT_BITOFFSET 2
50#define ADS122_MEM_FAULT_MASK (1 << 2)
52#define ADS122_REG_WRITE_FAULT_BITOFFSET 1
53#define ADS122_REG_WRITE_FAULT_MASK (1 << 1)
55#define ADS122_DRDY_BITOFFSET 0
56#define ADS122_DRDY_MASK (1 << 0)
59#define ADS122_CONV_COUNT_BITOFFSET 4
60#define ADS122_CONV_COUNT_MASK (1 << 7) | (1 << 6) | (1 << 5) | (1 << 4)
62#define ADS122_GPIO3_DAT_IN_BITOFFSET 3
63#define ADS122_GPIO3_DAT_IN_MASK (1 << 3)
65#define ADS122_GPIO2_DAT_IN_BITOFFSET 2
66#define ADS122_GPIO2_DAT_IN_MASK (1 << 2)
68#define ADS122_GPIO1_DAT_IN_BITOFFSET 1
69#define ADS122_GPIO1_DAT_IN_MASK (1 << 1)
71#define ADS122_GPIO0_DAT_IN_BITOFFSET 0
72#define ADS122_GPIO0_DAT_IN_MASK (1 << 0)
75#define ADS122_RESET_BITOFFSET 2
76#define ADS122_RESET_MASK (1 << 7) | (1 << 6) | (1 << 5) | (1 << 4) | (1 << 3) | (1 << 2)
78#define ADS122_START_BITOFFSET 1
79#define ADS122_START_MASK (1 << 1)
81#define ADS122_STOP_BITOFFSET 0
82#define ADS122_STOP_MASK (1 << 0)
86#define ADS122_REG_DEVICE_CFG_DEFAULT ((uint8_t)0x04)
88#define ADS122_PWDN_BITOFFSET 7
89#define ADS122_PWDN_MASK (1 << 7)
91#define ADS122_STBY_MODE_BITOFFSET 6
92#define ADS122_STBY_MODE_MASK (1 << 6)
94#define ADS122_BOCS_BITOFFSET 4
95#define ADS122_BOCS_MASK (1 << 5) | (1 << 4)
97#define ADS122_CLK_SEL_BITOFFSET 3
98#define ADS122_CLK_SEL_MASK (1 << 3)
100#define ADS122_CONV_MODE_BITOFFSET 2
101#define ADS122_CONV_MODE_MASK (1 << 2)
103#define ADS122_SPEED_MODE_BITOFFSET 0
104#define ADS122_SPEED_MODE_MASK (1 << 1) | (1 << 0)
107#define ADS122_REG_DATA_RATE_CFG_DEFAULT ((uint8_t)0x00)
109#define ADS122_DELAY_BITOFFSET 4
110#define ADS122_DELAY_MASK (1 << 7) | (1 << 6) || (1 << 5) || (1 << 4)
112#define ADS122_GC_EN_BITOFFSET 3
113#define ADS122_GC_EN_MASK (1 << 3)
115#define ADS122_FLTR_OSR_BITOFFSET 0
116#define ADS122_FLTR_OSR_MASK (1 << 2) | (1 << 1) | (1 << 0)
119#define ADS122_REG_MUX_CFG_DEFAULT ((uint8_t)0x00)
121#define ADS122_AINP_BITOFFSET 4
122#define ADS122_AINP_MASK (1 << 7) | (1 << 6) | (1 << 5) | (1 << 4)
124#define ADS122_AINN_BITOFFSET 0
125#define ADS122_AINN_MASK (1 << 3) | (1 << 2) | (1 << 1) | (1 << 0)
128#define ADS122_REG_GAIN_CFG_DEFAULT ((uint8_t)0x00)
130#define ADS122_SYS_MON_BITOFFSET 4
131#define ADS122_SYS_MON_MASK (1 << 6) | (1 << 5) | (1 << 4)
133#define ADS122_GAIN_BITOFFSET 0
134#define ADS122_GAIN_MASK (1 << 3) | (1 << 2) | (1 << 1) | (1 << 0)
137#define ADS122_REG_REFERENCE_CFG_DEFAULT ((uint8_t)0x00)
139#define ADS122_REF_UV_EN_BITOFFSET 7
140#define ADS122_REF_UV_EN_MASK (1 << 7)
142#define ADS122_REFP_BUF_EN_BITOFFSET 5
143#define ADS122_REFP_BUF_EN_MASK (1 << 5)
145#define ADS122_REFN_BUF_EN_BITOFFSET 4
146#define ADS122_REFN_BUF_EN_MASK (1 << 4)
148#define ADS122_REF_VAL_BITOFFSET 2
149#define ADS122_REF_VAL_MASK (1 << 2)
151#define ADS122_REF_SEL_BITOFFSET 0
152#define ADS122_REF_SEL_MASK (1 << 1) | (1 << 0)
155#define ADS122_REG_DIGITAL_CFG_DEFAULT ((uint8_t)0x00)
157#define ADS122_REG_MAP_CRC_EN_BITOFFSET 6
158#define ADS122_REG_MAP_CRC_EN_MASK (1 << 6)
160#define ADS122_I2C_CRC_EN_BITOFFSET 5
161#define ADS122_I2C_CRC_EN_MASK (1 << 5)
163#define ADS122_STATUS_EN_BITOFFSET 4
164#define ADS122_STATUS_EN_MASK (1 << 4)
166#define ADS122_FAULT_PIN_BEHAVIOR_BITOFFSET 3
167#define ADS122_FAULT_PIN_BEHAVIOR_MASK (1 << 3)
169#define ADS122_CODING_BITOFFSET 1
170#define ADS122_CODING_MASK (1 << 1)
173#define ADS122_REG_GPIO_CFG_DEFAULT ((uint8_t)0x00)
175#define ADS122_GPIO3_CFG_BITOFFSET 6
176#define ADS122_GPIO3_CFG_MASK (1 << 7) | (1 << 6)
178#define ADS122_GPIO2_CFG_BITOFFSET 4
179#define ADS122_GPIO2_CFG_MASK (1 << 5) | (1 << 4)
181#define ADS122_GPIO1_CFG_BITOFFSET 2
182#define ADS122_GPIO1_CFGR_MASK (1 << 3) | (1 << 2)
184#define ADS122_GPIO0_CFG_BITOFFSET 0
185#define ADS122_GPIO0_CFG_MASK (1 << 1) | (1 << 0)
188#define ADS122_REG_GPIO_DATA_OUTPUT_DEFAULT ((uint8_t)0x00)
190#define ADS122_GPIO3_SRC_BITOFFSET 7
191#define ADS122_GPIO3_SRC_MASK (1 << 7)
193#define ADS122_GPIO2_SRC_BITOFFSET 6
194#define ADS122_GPIO2_SRC_MASK (1 << 6)
196#define ADS122_GPIO3_DAT_OUT_BITOFFSET 3
197#define ADS122_GPIO3_DAT_OUT_MASK (1 << 3)
199#define ADS122_GPIO2_DAT_OUT_BITOFFSET 2
200#define ADS122_GPIO2_DAT_OUT_MASK (1 << 2)
202#define ADS122_GPIO1_DAT_OUT_BITOFFSET 1
203#define ADS122_GPIO1_DAT_OUT_MASK (1 << 1)
205#define ADS122_GPIO0_DAT_OUT_BITOFFSET 0
206#define ADS122_GPIO0_DAT_OUT_MASK (1 << 0)
209#define ADS122_REG_IDAC_MAG_CFG_DEFAULT ((uint8_t)0x00)
211#define ADS122_I2MAG_BITOFFSET 4
212#define ADS122_I2MAG_MASK (1 << 7) | (1 << 6) | (1 << 5) | (1 << 4)
214#define ADS122_I1MAG_BITOFFSET 0
215#define ADS122_I1MAG_MASK (1 << 3) | (1 << 2) | (1 << 1) | (1 << 0)
217#define ADS122_IUNIT_Length 4
220#define ADS122_REG_IDAC_MUX_CFG_DEFAULT ((uint8_t)0x10)
222#define ADS122_IUNIT_BITOFFSET 7
223#define ADS122_IUNIT_MASK (1 << 7)
225#define ADS122_I2MUX_BITOFFSET 4
226#define ADS122_I2MUX_MASK (1 << 6) | (1 << 5) | (1 << 4)
228#define ADS122_I1MUX_BITOFFSET 0
229#define ADS122_I1MUX_MASK (1 << 2) | (1 << 1) | (1 << 0)
232#define ADS122_REG_REG_MAP_CRC_DEFAULT ((uint8_t)0x00)
236 ADS122_REG_DEVICE_ID = 0b00000000,
237 ADS122_REG_REVISION_ID = 0b00000001,
238 ADS122_REG_STATUS_MSB = 0b00000010,
239 ADS122_REG_STATUS_LSB = 0b00000011,
240 ADS122_REG_CONVERSION_CTRL = 0b00000100,
241 ADS122_REG_DEVICE_CFG = 0b00000101,
242 ADS122_REG_DATA_RATE_CFG = 0b00000110,
243 ADS122_REG_MUX_CFG = 0b00000111,
244 ADS122_REG_GAIN_CFG = 0b00001000,
245 ADS122_REG_REFERENCE_CFG = 0b00001001,
246 ADS122_REG_DIGITAL_CFG = 0b00001010,
247 ADS122_REG_GPIO_CFG = 0b00001011,
248 ADS122_REG_GPIO_DATA_OUTPUT = 0b00001100,
249 ADS122_REG_IDAC_MAG_CFG = 0b00001101,
250 ADS122_REG_IDAC_MUX_CFG = 0b00001110,
251 ADS122_REG_REG_MAP_CRC = 0b00001111,
252} ADS122C14ITER_Register;
256 ADS122_WRITE_COMMAND = 0b10000000,
257 ADS122_READ_COMMAND = 0b01000000,
258 ADS122_READ_CONVERSION_COMMAND = 0b00000000,
259} ADS122C14ITER_Command;
268static uint8_t ADS122_CONFIG_REGISTERS[] = { ADS122_REG_DEVICE_CFG, ADS122_REG_DATA_RATE_CFG, ADS122_REG_MUX_CFG, ADS122_REG_GAIN_CFG, ADS122_REG_REFERENCE_CFG, ADS122_REG_DIGITAL_CFG,
269 ADS122_REG_GPIO_CFG, ADS122_REG_GPIO_DATA_OUTPUT, ADS122_REG_IDAC_MAG_CFG, ADS122_REG_IDAC_MUX_CFG, ADS122_REG_REG_MAP_CRC };
StatusCode ads122_change_MUX(ADS122Storage *storage, uint8_t MUX_CFG)
Change the MUX of the ADS122 driver.
Definition: current_ads122c14irter.c:102
StatusCode ads122_get_conversion_data(ADS122Storage *storage, uint8_t rx_data[])
Get the conversion data.
Definition: current_ads122c14irter.c:159
StatusCode ads122_configure(ADS122Storage *storage, uint8_t register_map[])
Configure (or re-configure) the ADS122 device registers.
Definition: current_ads122c14irter.c:120
StatusCode ads122_start_conversion(ADS122Storage *storage)
Start the conversion of the ADS122 driver.
Definition: current_ads122c14irter.c:78
StatusCode ads122_change_gain(ADS122Storage *storage, uint8_t GAIN_CFG)
Change the PGA gain of the ADS122 driver.
Definition: current_ads122c14irter.c:111
StatusCode ads122_init(ADS122Storage *storage, I2CPort i2c_port_storage, I2CAddress i2c_address_storage, uint8_t register_map[], I2CSettings *i2c_settings_storage)
Initialize the ADS122 driver.
Definition: current_ads122c14irter.c:145
uint8_t I2CAddress
I2C address type.
Definition: i2c.h:34
I2CPort
I2C Port selection.
Definition: i2c.h:37
StatusCode
StatusCodes for various errors.
Definition: status.h:27
Definition: current_ads122c14irter.h:261
I2C settings struct.
Definition: i2c.h:56