29#define _PACKED __attribute__((packed))
31#define ADS122_NUM_REG 16U
34#define ADS122_RESETn_BITOFFSET 7
35#define ADS122_RESETn_MASK (1 << 7)
37#define ADS122_AVDD_UV_BITOFFSET 6
38#define ADS122_AVDD_UV_MASK (1 << 6)
40#define ADS122_REF_UV_BITOFFSET 5
41#define ADS122_REF_UV_MASK (1 << 5)
43#define ADS122_REG_MAP_CRC_FAULT_BITOFFSET 3
44#define ADS122_REG_MAP_CRC_FAULT_MASK (1 << 3)
46#define ADS122_MEM_FAULT_BITOFFSET 2
47#define ADS122_MEM_FAULT_MASK (1 << 2)
49#define ADS122_REG_WRITE_FAULT_BITOFFSET 1
50#define ADS122_REG_WRITE_FAULT_MASK (1 << 1)
52#define ADS122_DRDY_BITOFFSET 0
53#define ADS122_DRDY_MASK (1 << 0)
56#define ADS122_CONV_COUNT_BITOFFSET 4
57#define ADS122_CONV_COUNT_MASK (1 << 7) | (1 << 6) | (1 << 5) | (1 << 4)
59#define ADS122_GPIO3_DAT_IN_BITOFFSET 3
60#define ADS122_GPIO3_DAT_IN_MASK (1 << 3)
62#define ADS122_GPIO2_DAT_IN_BITOFFSET 2
63#define ADS122_GPIO2_DAT_IN_MASK (1 << 2)
65#define ADS122_GPIO1_DAT_IN_BITOFFSET 1
66#define ADS122_GPIO1_DAT_IN_MASK (1 << 1)
68#define ADS122_GPIO0_DAT_IN_BITOFFSET 0
69#define ADS122_GPIO0_DAT_IN_MASK (1 << 0)
72#define ADS122_RESET_BITOFFSET 2
73#define ADS122_RESET_MASK (1 << 7) | (1 << 6) | (1 << 5) | (1 << 4) | (1 << 3) | (1 << 2)
75#define ADS122_START_BITOFFSET 1
76#define ADS122_START_MASK (1 << 1)
78#define ADS122_STOP_BITOFFSET 0
79#define ADS122_STOP_MASK (1 << 0)
83#define ADS122_REG_DEVICE_CFG_DEFAULT ((uint8_t)0x04)
85#define ADS122_PWDN_BITOFFSET 7
86#define ADS122_PWDN_MASK (1 << 7)
88#define ADS122_STBY_MODE_BITOFFSET 6
89#define ADS122_STBY_MODE_MASK (1 << 6)
91#define ADS122_BOCS_BITOFFSET 4
92#define ADS122_BOCS_MASK (1 << 5) | (1 << 4)
94#define ADS122_CLK_SEL_BITOFFSET 3
95#define ADS122_CLK_SEL_MASK (1 << 3)
97#define ADS122_CONV_MODE_BITOFFSET 2
98#define ADS122_CONV_MODE_MASK (1 << 2)
100#define ADS122_SPEED_MODE_BITOFFSET 0
101#define ADS122_SPEED_MODE_MASK (1 << 1) | (1 << 0)
104#define ADS122_REG_DATA_RATE_CFG_DEFAULT ((uint8_t)0x00)
106#define ADS122_DELAY_BITOFFSET 4
107#define ADS122_DELAY_MASK (1 << 7) | (1 << 6) || (1 << 5) || (1 << 4)
109#define ADS122_GC_EN_BITOFFSET 3
110#define ADS122_GC_EN_MASK (1 << 3)
112#define ADS122_FLTR_OSR_BITOFFSET 0
113#define ADS122_FLTR_OSR_MASK (1 << 2) | (1 << 1) | (1 << 0)
116#define ADS122_REG_MUX_CFG_DEFAULT ((uint8_t)0x00)
118#define ADS122_AINP_BITOFFSET 4
119#define ADS122_AINP_MASK (1 << 7) | (1 << 6) | (1 << 5) | (1 << 4)
121#define ADS122_AINN_BITOFFSET 0
122#define ADS122_AINN_MASK (1 << 3) | (1 << 2) | (1 << 1) | (1 << 0)
125#define ADS122_REG_GAIN_CFG_DEFAULT ((uint8_t)0x00)
127#define ADS122_SYS_MON_BITOFFSET 4
128#define ADS122_SYS_MON_MASK (1 << 6) | (1 << 5) | (1 << 4)
130#define ADS122_GAIN_BITOFFSET 0
131#define ADS122_GAIN_MASK (1 << 3) | (1 << 2) | (1 << 1) | (1 << 0)
134#define ADS122_REG_REFERENCE_CFG_DEFAULT ((uint8_t)0x00)
136#define ADS122_REF_UV_EN_BITOFFSET 7
137#define ADS122_REF_UV_EN_MASK (1 << 7)
139#define ADS122_REFP_BUF_EN_BITOFFSET 5
140#define ADS122_REFP_BUF_EN_MASK (1 << 5)
142#define ADS122_REFN_BUF_EN_BITOFFSET 4
143#define ADS122_REFN_BUF_EN_MASK (1 << 4)
145#define ADS122_REF_VAL_BITOFFSET 2
146#define ADS122_REF_VAL_MASK (1 << 2)
148#define ADS122_REF_SEL_BITOFFSET 0
149#define ADS122_REF_SEL_MASK (1 << 1) | (1 << 0)
152#define ADS122_REG_DIGITAL_CFG_DEFAULT ((uint8_t)0x00)
154#define ADS122_REG_MAP_CRC_EN_BITOFFSET 6
155#define ADS122_REG_MAP_CRC_EN_MASK (1 << 6)
157#define ADS122_I2C_CRC_EN_BITOFFSET 5
158#define ADS122_I2C_CRC_EN_MASK (1 << 5)
160#define ADS122_STATUS_EN_BITOFFSET 4
161#define ADS122_STATUS_EN_MASK (1 << 4)
163#define ADS122_FAULT_PIN_BEHAVIOR_BITOFFSET 3
164#define ADS122_FAULT_PIN_BEHAVIOR_MASK (1 << 3)
166#define ADS122_CODING_BITOFFSET 1
167#define ADS122_CODING_MASK (1 << 1)
170#define ADS122_REG_GPIO_CFG_DEFAULT ((uint8_t)0x00)
172#define ADS122_GPIO3_CFG_BITOFFSET 6
173#define ADS122_GPIO3_CFG_MASK (1 << 7) | (1 << 6)
175#define ADS122_GPIO2_CFG_BITOFFSET 4
176#define ADS122_GPIO2_CFG_MASK (1 << 5) | (1 << 4)
178#define ADS122_GPIO1_CFG_BITOFFSET 2
179#define ADS122_GPIO1_CFGR_MASK (1 << 3) | (1 << 2)
181#define ADS122_GPIO0_CFG_BITOFFSET 0
182#define ADS122_GPIO0_CFG_MASK (1 << 1) | (1 << 0)
185#define ADS122_REG_GPIO_DATA_OUTPUT_DEFAULT ((uint8_t)0x00)
187#define ADS122_GPIO3_SRC_BITOFFSET 7
188#define ADS122_GPIO3_SRC_MASK (1 << 7)
190#define ADS122_GPIO2_SRC_BITOFFSET 6
191#define ADS122_GPIO2_SRC_MASK (1 << 6)
193#define ADS122_GPIO3_DAT_OUT_BITOFFSET 3
194#define ADS122_GPIO3_DAT_OUT_MASK (1 << 3)
196#define ADS122_GPIO2_DAT_OUT_BITOFFSET 2
197#define ADS122_GPIO2_DAT_OUT_MASK (1 << 2)
199#define ADS122_GPIO1_DAT_OUT_BITOFFSET 1
200#define ADS122_GPIO1_DAT_OUT_MASK (1 << 1)
202#define ADS122_GPIO0_DAT_OUT_BITOFFSET 0
203#define ADS122_GPIO0_DAT_OUT_MASK (1 << 0)
206#define ADS122_REG_IDAC_MAG_CFG_DEFAULT ((uint8_t)0x00)
208#define ADS122_I2MAG_BITOFFSET 4
209#define ADS122_I2MAG_MASK (1 << 7) | (1 << 6) | (1 << 5) | (1 << 4)
211#define ADS122_I1MAG_BITOFFSET 0
212#define ADS122_I1MAG_MASK (1 << 3) | (1 << 2) | (1 << 1) | (1 << 0)
214#define ADS122_IUNIT_Length 4
217#define ADS122_REG_IDAC_MUX_CFG_DEFAULT ((uint8_t)0x10)
219#define ADS122_IUNIT_BITOFFSET 7
220#define ADS122_IUNIT_MASK (1 << 7)
222#define ADS122_I2MUX_BITOFFSET 4
223#define ADS122_I2MUX_MASK (1 << 6) | (1 << 5) | (1 << 4)
225#define ADS122_I1MUX_BITOFFSET 0
226#define ADS122_I1MUX_MASK (1 << 2) | (1 << 1) | (1 << 0)
229#define ADS122_REG_REG_MAP_CRC_DEFAULT ((uint8_t)0x00)
233 ADS122_REG_DEVICE_ID = 0b00000000,
234 ADS122_REG_REVISION_ID = 0b00000001,
235 ADS122_REG_STATUS_MSB = 0b00000010,
236 ADS122_REG_STATUS_LSB = 0b00000011,
237 ADS122_REG_CONVERSION_CTRL = 0b00000100,
238 ADS122_REG_DEVICE_CFG = 0b00000101,
239 ADS122_REG_DATA_RATE_CFG = 0b00000110,
240 ADS122_REG_MUX_CFG = 0b00000111,
241 ADS122_REG_GAIN_CFG = 0b00001000,
242 ADS122_REG_REFERENCE_CFG = 0b00001001,
243 ADS122_REG_DIGITAL_CFG = 0b00001010,
244 ADS122_REG_GPIO_CFG = 0b00001011,
245 ADS122_REG_GPIO_DATA_OUTPUT = 0b00001100,
246 ADS122_REG_IDAC_MAG_CFG = 0b00001101,
247 ADS122_REG_IDAC_MUX_CFG = 0b00001110,
248 ADS122_REG_REG_MAP_CRC = 0b00001111,
249} ADS122C14ITER_Register;
253 ADS122_WRITE_COMMAND = 0b10000000,
254 ADS122_READ_COMMAND = 0b01000000,
255 ADS122_READ_CONVERSION_COMMAND = 0b00000000,
256} ADS122C14ITER_Command;
265static 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,
266 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:92
StatusCode ads122_get_conversion_data(ADS122Storage *storage, uint8_t rx_data[])
Get the conversion data.
Definition: current_ads122c14irter.c:131
StatusCode ads122_start_conversion(ADS122Storage *storage)
Start the conversion of the ADS122 driver.
Definition: current_ads122c14irter.c:78
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:97
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:258
I2C settings struct.
Definition: i2c.h:56