adc17 2.0.0.0
adc17.h
Go to the documentation of this file.
1/****************************************************************************
2** Copyright (C) 2020 MikroElektronika d.o.o.
3** Contact: https://www.mikroe.com/contact
4**
5** Permission is hereby granted, free of charge, to any person obtaining a copy
6** of this software and associated documentation files (the "Software"), to deal
7** in the Software without restriction, including without limitation the rights
8** to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9** copies of the Software, and to permit persons to whom the Software is
10** furnished to do so, subject to the following conditions:
11** The above copyright notice and this permission notice shall be
12** included in all copies or substantial portions of the Software.
13**
14** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
16** OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
17** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
18** DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT
19** OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
20** USE OR OTHER DEALINGS IN THE SOFTWARE.
21****************************************************************************/
22
28#ifndef ADC17_H
29#define ADC17_H
30
31#ifdef __cplusplus
32extern "C"{
33#endif
34
35#include "drv_digital_out.h"
36#include "drv_digital_in.h"
37#include "drv_i2c_master.h"
38
59#define ADC17_REG_SETUP 0x80
60#define ADC17_SETUP_VREF_VDD_REF_NC_OFF 0x00
61#define ADC17_SETUP_VREF_EXT_REF_IN_OFF 0x20
62#define ADC17_SETUP_VREF_INT_REF_NC_OFF 0x40
63#define ADC17_SETUP_VREF_INT_REF_NC_ON 0x50
64#define ADC17_SETUP_VREF_INT_REF_OUT_OFF 0x60
65#define ADC17_SETUP_VREF_INT_REF_OUT_ON 0x70
66#define ADC17_SETUP_CLK_INT 0x00
67#define ADC17_SETUP_CLK_EXT 0x08
68#define ADC17_SETUP_UNIPOLAR 0x00
69#define ADC17_SETUP_BIPOLAR 0x04
70#define ADC17_SETUP_RST_RESET 0x00
71#define ADC17_SETUP_RST_NO_ACTION 0x02
72
77#define ADC17_REG_CONFIG 0x00
78#define ADC17_CONFIG_SCAN_AIN0_TO_CS0 0x00
79#define ADC17_CONFIG_SCAN_CS0_8_TIMES 0x20
80#define ADC17_CONFIG_SCAN_CS0 0x60
81#define ADC17_CONFIG_CS0_AIN0 0x00
82#define ADC17_CONFIG_CS0_AIN1 0x02
83#define ADC17_CONFIG_DIFFERENTIAL 0x00
84#define ADC17_CONFIG_SINGLE_ENDED 0x01
85
90#define ADC17_REG_BIT_MASK 0x80
91#define ADC17_SETUP_VREF_BIT_MASK 0x70
92#define ADC17_SETUP_CLK_BIT_MASK 0x08
93#define ADC17_SETUP_UNI_BIP_BIT_MASK 0x04
94#define ADC17_SETUP_RST_BIT_MASK 0x02
95#define ADC17_CONFIG_SCAN_BIT_MASK 0x60
96#define ADC17_CONFIG_CS0_BIT_MASK 0x02
97#define ADC17_CONFIG_SGL_DIF_BIT_MASK 0x01
98
103#define ADC17_CHANNEL_0 0
104#define ADC17_CHANNEL_1 1
105
110#define ADC17_RESOLUTION 0x0FFF
111#define ADC17_VREF 2.048
112
118#define ADC17_SET_DEV_ADDR 0x36
119 // adc17_set
121
136#define ADC17_MAP_MIKROBUS( cfg, mikrobus ) \
137 cfg.scl = MIKROBUS( mikrobus, MIKROBUS_SCL ); \
138 cfg.sda = MIKROBUS( mikrobus, MIKROBUS_SDA );
139 // adc17_map // adc17
142
147typedef struct
148{
149 // Modules
150 i2c_master_t i2c;
152 // I2C slave address
155 uint8_t setup_byte;
156 uint8_t config_byte;
158} adc17_t;
159
164typedef struct
165{
166 pin_name_t scl;
167 pin_name_t sda;
169 uint32_t i2c_speed;
170 uint8_t i2c_address;
173
178typedef enum
179{
181 ADC17_ERROR = -1
182
184
201
216err_t adc17_init ( adc17_t *ctx, adc17_cfg_t *cfg );
217
232
245err_t adc17_write_setup_byte ( adc17_t *ctx, uint8_t setup_byte );
246
259err_t adc17_write_config_byte ( adc17_t *ctx, uint8_t config_byte );
260
273err_t adc17_set_channel ( adc17_t *ctx, uint8_t channel );
274
288err_t adc17_get_voltage ( adc17_t *ctx, float *voltage );
289
290#ifdef __cplusplus
291}
292#endif
293#endif // ADC17_H
294 // adc17
296
297// ------------------------------------------------------------------------ END
adc17_return_value_t
ADC 17 Click return value data.
Definition: adc17.h:179
@ ADC17_OK
Definition: adc17.h:180
@ ADC17_ERROR
Definition: adc17.h:181
err_t adc17_init(adc17_t *ctx, adc17_cfg_t *cfg)
ADC 17 initialization function.
err_t adc17_set_channel(adc17_t *ctx, uint8_t channel)
ADC 17 set channel function.
err_t adc17_default_cfg(adc17_t *ctx)
ADC 17 default configuration function.
void adc17_cfg_setup(adc17_cfg_t *cfg)
ADC 17 configuration object setup function.
err_t adc17_write_setup_byte(adc17_t *ctx, uint8_t setup_byte)
ADC 17 write setup byte function.
err_t adc17_get_voltage(adc17_t *ctx, float *voltage)
ADC 17 get voltage function.
err_t adc17_write_config_byte(adc17_t *ctx, uint8_t config_byte)
ADC 17 write config byte function.
ADC 17 Click configuration object.
Definition: adc17.h:165
uint32_t i2c_speed
Definition: adc17.h:169
pin_name_t scl
Definition: adc17.h:166
pin_name_t sda
Definition: adc17.h:167
uint8_t i2c_address
Definition: adc17.h:170
ADC 17 Click context object.
Definition: adc17.h:148
uint8_t config_byte
Definition: adc17.h:156
i2c_master_t i2c
Definition: adc17.h:150
uint8_t setup_byte
Definition: adc17.h:155
uint8_t slave_address
Definition: adc17.h:153