Loading...
Searching...
No Matches
adcxx1c.h
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2017 OTA keys S.A.
3 * SPDX-License-Identifier: LGPL-2.1-only
4 */
5
6#pragma once
7
24
25#ifdef __cplusplus
26extern "C" {
27#endif
28
29#include "periph/i2c.h"
30#include "periph/gpio.h"
31
35#ifndef ADCXX1C_I2C_ADDRESS
36#define ADCXX1C_I2C_ADDRESS (0x54)
37#endif
38
42enum {
46};
47
51#if defined(MODULE_ADC081C)
52#define ADCXX1C_RES_DEFAULT ADCXX1C_RES_8BITS
53#elif defined(MODULE_ADC101C)
54#define ADCXX1C_RES_DEFAULT ADCXX1C_RES_10BITS
55#elif defined(MODULE_ADC121C)
56#define ADCXX1C_RES_DEFAULT ADCXX1C_RES_12BITS
57#else
58#define ADCXX1C_RES_DEFAULT (-1)
59#error "ADCXX1C: Failed to select resolution: unknown ADCXX1C device variant!"
60#endif
61
65enum {
74};
75
79enum {
84};
85
89enum {
92};
93
97typedef struct adcxx1c_params {
99 uint8_t addr;
100 uint8_t bits;
101 uint8_t cycle;
102 gpio_t alert_pin;
103 int16_t low_limit;
104 int16_t high_limit;
105 int16_t hysteresis;
107
111typedef void (*adcxx1c_cb_t)(void *);
112
121
130int adcxx1c_init(adcxx1c_t *dev, const adcxx1c_params_t *params);
131
140int adcxx1c_read_raw(const adcxx1c_t *dev, int16_t *raw);
141
152
163int adcxx1c_set_alert_parameters(const adcxx1c_t *dev, int16_t low_limit,
164 int16_t high_limit, int16_t hysteresis);
165
175
176#ifdef __cplusplus
177}
178#endif
179
Low-level GPIO peripheral driver interface definitions.
int adcxx1c_get_and_clear_alert(const adcxx1c_t *dev)
Get alert source and clear it.
void(* adcxx1c_cb_t)(void *)
ADCxx1C alert callback.
Definition adcxx1c.h:111
int adcxx1c_set_alert_parameters(const adcxx1c_t *dev, int16_t low_limit, int16_t high_limit, int16_t hysteresis)
Set the alert parameters.
struct adcxx1c adcxx1c_t
ADCxx1C device descriptor.
int adcxx1c_init(adcxx1c_t *dev, const adcxx1c_params_t *params)
Initialize an ADCxx1C ADC device.
struct adcxx1c_params adcxx1c_params_t
ADCxx1C params.
int adcxx1c_read_raw(const adcxx1c_t *dev, int16_t *raw)
Read a raw ADC value.
int adcxx1c_enable_alert(adcxx1c_t *dev, adcxx1c_cb_t cb, void *arg)
Enable alert interrupt.
@ ADCXX1C_NODATA
no data available
Definition adcxx1c.h:83
@ ADCXX1C_NOI2C
I2C communication failed.
Definition adcxx1c.h:81
@ ADCXX1C_NODEV
no ADCXX1C device found on the bus
Definition adcxx1c.h:82
@ ADCXX1C_OK
everything was fine
Definition adcxx1c.h:80
@ ADCXX1C_CYCLE_2048
Conversion cycle = Tconvert x 2048.
Definition adcxx1c.h:73
@ ADCXX1C_CYCLE_512
Conversion cycle = Tconvert x 512.
Definition adcxx1c.h:71
@ ADCXX1C_CYCLE_128
Conversion cycle = Tconvert x 128.
Definition adcxx1c.h:69
@ ADCXX1C_CYCLE_DISABLED
No cycle conversion.
Definition adcxx1c.h:66
@ ADCXX1C_CYCLE_256
Conversion cycle = Tconvert x 256.
Definition adcxx1c.h:70
@ ADCXX1C_CYCLE_64
Conversion cycle = Tconvert x 64.
Definition adcxx1c.h:68
@ ADCXX1C_CYCLE_32
Conversion cycle = Tconvert x 32.
Definition adcxx1c.h:67
@ ADCXX1C_CYCLE_1024
Conversion cycle = Tconvert x 1024.
Definition adcxx1c.h:72
@ ADCXX1C_ALERT_OVER_RANGE
Measured voltage exceeded Vhigh.
Definition adcxx1c.h:91
@ ADCXX1C_ALERT_UNDER_RANGE
Measured voltage fell below Vlow.
Definition adcxx1c.h:90
@ ADCXX1C_RES_8BITS
8 bits resolution (ADC081C family)
Definition adcxx1c.h:43
@ ADCXX1C_RES_12BITS
12 bits resolution (ADC121C family)
Definition adcxx1c.h:45
@ ADCXX1C_RES_10BITS
10 bits resolution (ADC101C family)
Definition adcxx1c.h:44
uint_fast8_t i2c_t
Default i2c_t type definition.
Definition i2c.h:155
Low-level I2C peripheral driver interface definition.
ADCxx1C params.
Definition adcxx1c.h:97
uint8_t bits
resolution
Definition adcxx1c.h:100
gpio_t alert_pin
alert pin (GPIO_UNDEF if not connected)
Definition adcxx1c.h:102
int16_t hysteresis
alert hysteresis
Definition adcxx1c.h:105
int16_t low_limit
alert low value
Definition adcxx1c.h:103
i2c_t i2c
i2c device
Definition adcxx1c.h:98
uint8_t cycle
conversion interval
Definition adcxx1c.h:101
int16_t high_limit
alert high value
Definition adcxx1c.h:104
uint8_t addr
i2c address
Definition adcxx1c.h:99
ADCxx1C device descriptor.
Definition adcxx1c.h:116
adcxx1c_cb_t cb
alert callback
Definition adcxx1c.h:118
void * arg
alert callback param
Definition adcxx1c.h:119
adcxx1c_params_t params
device driver configuration
Definition adcxx1c.h:117