ads1x1x.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 
32 #ifdef __cplusplus
33 extern "C" {
34 #endif
35 
36 #include "periph/i2c.h"
37 #include "periph/gpio.h"
38 
42 enum {
43  ADS1X1X_OK = 0,
48  ADS1X1X_GPIO_ERROR = -5
49 };
50 
54 typedef struct {
56  uint8_t addr;
57  uint8_t mux;
58  uint8_t pga;
59  uint8_t mode;
60  uint8_t dr;
61  uint8_t bits_res;
63 
67 typedef struct ads1x1x_alert_params {
69  uint8_t addr;
70  uint8_t comp_mode;
71  uint8_t comp_polarity;
72  uint8_t comp_latch;
73  uint8_t comp_queue;
74  gpio_t alert_pin;
75  int16_t low_limit;
76  int16_t high_limit;
78 
82 typedef struct ads1x1x {
85 
89 typedef void (*ads1x1x_alert_cb_t)(void *);
90 
94 typedef struct ads1x1x_alert {
97  void *arg;
99 
108 int ads1x1x_init(ads1x1x_t *dev, const ads1x1x_params_t *params);
109 
119 
129  const ads1x1x_alert_params_t *params);
130 
142 int ads1x1x_set_mux(ads1x1x_t *dev, uint8_t mux);
143 
152 int ads1x1x_read_raw(const ads1x1x_t *dev, int16_t *raw);
153 
167  ads1x1x_alert_cb_t cb, void *arg, uint8_t nb_assert);
168 
188 int ads1x1x_convert_to_mv(const ads1x1x_t *dev, int16_t value);
189 
200 
201 #ifdef __cplusplus
202 }
203 #endif
204 
Low-level GPIO peripheral driver interface definitions.
int ads1x1x_reset(i2c_t i2c)
Reset the ADS1X1X devices on the I2C bus.
int ads1x1x_init(ads1x1x_t *dev, const ads1x1x_params_t *params)
Initialize an ADS101x/111x ADC device (ADC only)
int ads1x1x_enable_alert(ads1x1x_alert_t *dev, ads1x1x_alert_cb_t cb, void *arg, uint8_t nb_assert)
Enable alert interrupt.
int ads1x1x_set_mux(ads1x1x_t *dev, uint8_t mux)
Set mux.
struct ads1x1x ads1x1x_t
ADS101x/111x device descriptor.
int ads1x1x_set_alert_parameters(ads1x1x_alert_t *dev, const ads1x1x_alert_params_t *params)
Set the alert parameters.
struct ads1x1x_alert_params ads1x1x_alert_params_t
ADS101x/111x alert params.
int ads1x1x_set_parameters(ads1x1x_t *dev, const ads1x1x_params_t *params)
Set ADS101x/111x parameters.
int ads1x1x_read_raw(const ads1x1x_t *dev, int16_t *raw)
Read a raw ADC value.
struct ads1x1x_alert ads1x1x_alert_t
ADS101x/111x alert device descriptor.
void(* ads1x1x_alert_cb_t)(void *)
ADS101x/111x alert callback.
Definition: ads1x1x.h:89
int ads1x1x_convert_to_mv(const ads1x1x_t *dev, int16_t value)
Converts the digital value from an ADS101x/111x device to millivolts.
int ads1x1x_alert_init(ads1x1x_alert_t *dev, const ads1x1x_alert_params_t *params)
Initialize an ADS101x/111x alert device.
@ ADS1X1X_NODATA
No data available.
Definition: ads1x1x.h:46
@ ADS1X1X_NOI2C
I2C communication error.
Definition: ads1x1x.h:44
@ ADS1X1X_OK
Operation successful.
Definition: ads1x1x.h:43
@ ADS1X1X_NODEV
No device found on the bus.
Definition: ads1x1x.h:45
@ ADS1X1X_GPIO_ERROR
GPIO error.
Definition: ads1x1x.h:48
@ ADS1X1X_INVALID_ARG
Invalid argument.
Definition: ads1x1x.h:47
uint_fast8_t i2c_t
Default i2c_t type definition.
Definition: i2c.h:144
Low-level I2C peripheral driver interface definition.
ADS101x/111x alert params.
Definition: ads1x1x.h:67
uint8_t comp_mode
Comparator mode.
Definition: ads1x1x.h:70
int16_t low_limit
alert low value
Definition: ads1x1x.h:75
int16_t high_limit
alert high value
Definition: ads1x1x.h:76
uint8_t addr
i2c address
Definition: ads1x1x.h:69
uint8_t comp_latch
Comparator latch.
Definition: ads1x1x.h:72
gpio_t alert_pin
alert pin (GPIO_UNDEF if not connected)
Definition: ads1x1x.h:74
uint8_t comp_polarity
Comparator polarity.
Definition: ads1x1x.h:71
i2c_t i2c
i2c device
Definition: ads1x1x.h:68
uint8_t comp_queue
Comparator queue.
Definition: ads1x1x.h:73
ADS101x/111x alert device descriptor.
Definition: ads1x1x.h:94
void * arg
alert callback param
Definition: ads1x1x.h:97
ads1x1x_alert_params_t params
device driver configuration
Definition: ads1x1x.h:95
ads1x1x_alert_cb_t cb
alert callback
Definition: ads1x1x.h:96
ADS101x/111x params.
Definition: ads1x1x.h:54
uint8_t bits_res
Bit resolution (12 or 16 bits)
Definition: ads1x1x.h:61
uint8_t dr
Data rate configuration.
Definition: ads1x1x.h:60
uint8_t addr
I2C address.
Definition: ads1x1x.h:56
i2c_t i2c
I2C device.
Definition: ads1x1x.h:55
uint8_t mode
Device mode.
Definition: ads1x1x.h:59
uint8_t pga
Programmable gain amplifier configuration.
Definition: ads1x1x.h:58
uint8_t mux
Input multiplexer configuration.
Definition: ads1x1x.h:57
ADS101x/111x device descriptor.
Definition: ads1x1x.h:82
ads1x1x_params_t params
device driver configuration
Definition: ads1x1x.h:83