no-OS
ad7156.h
Go to the documentation of this file.
1 /***************************************************************************/
39 #ifndef __AD7156_H__
40 #define __AD7156_H__
41 
42 /******************************************************************************/
43 /***************************** Include Files **********************************/
44 /******************************************************************************/
45 #include <stdint.h>
46 #include "no_os_i2c.h"
47 
48 /******************************************************************************/
49 /*************************** AD7156 Definitions *******************************/
50 /******************************************************************************/
52 #define AD7156_ADDRESS 0x48
53 
55 #define AD7156_REG_STATUS 0x00
56 #define AD7156_REG_CH1_DATA_H 0x01
57 #define AD7156_REG_CH1_DATA_L 0x02
58 #define AD7156_REG_CH2_DATA_H 0x03
59 #define AD7156_REG_CH2_DATA_L 0x04
60 #define AD7156_REG_CH1_AVG_H 0x05
61 #define AD7156_REG_CH1_AVG_L 0x06
62 #define AD7156_REG_CH2_AVG_H 0x07
63 #define AD7156_REG_CH2_AVG_L 0x08
64 #define AD7156_REG_CH1_SENS_THRSH_H 0x09
65 #define AD7156_REG_CH1_TMO_THRSH_L 0x0A
66 #define AD7156_REG_CH1_SETUP 0x0B
67 #define AD7156_REG_CH2_SENS_THRSH_H 0x0C
68 #define AD7156_REG_CH2_TMO_THRSH_L 0x0D
69 #define AD7156_REG_CH2_SETUP 0x0E
70 #define AD7156_REG_CONFIG 0x0F
71 #define AD7156_REG_PWR_DWN_TMR 0x10
72 #define AD7156_REG_CH1_CAPDAC 0x11
73 #define AD7156_REG_CH2_CAPDAC 0x12
74 #define AD7156_REG_SERIAL_N3 0x13
75 #define AD7156_REG_SERIAL_N2 0x14
76 #define AD7156_REG_SERIAL_N1 0x15
77 #define AD7156_REG_SERIAL_N0 0x16
78 #define AD7156_REG_CHIP_ID 0x17
79 
81 #define AD7156_STATUS_PWR_DWN (1 << 7)
82 #define AD7156_STATUS_DAC_STEP2 (1 << 6)
83 #define AD7156_STATUS_OUT2 (1 << 5)
84 #define AD7156_STATUS_DAC_STEP1 (1 << 4)
85 #define AD7156_STATUS_OUT1 (1 << 3)
86 #define AD7156_STATUS_C1_C2 (1 << 2)
87 #define AD7156_STATUS_RDY2 (1 << 1)
88 #define AD7156_STATUS_RDY1 (1 << 0)
89 
91 #define AD7156_CH1_SETUP_RANGE(x) (((x) & 0x3) << 6)
92 #define AD7156_CH1_SETUP_HYST1 (1 << 4)
93 #define AD7156_CH1_SETUP_THR1(x) ((x) & 0xF)
94 
96 #define AD7156_CH2_SETUP_RANGE(x) (((x) & 0x3) << 6)
97 #define AD7156_CH2_SETUP_HYST2 (1 << 4)
98 #define AD7156_CH2_SETUP_THR2(x) ((x) & 0xF)
99 
101 #define AD7156_CDC_RANGE_2_PF 0
102 #define AD7156_CDC_RANGE_0_5_PF 1
103 #define AD7156_CDC_RANGE_1_PF 2
104 #define AD7156_CDC_RANGE_4_PF 3
105 
107 #define AD7156_CONFIG_THR_FIXED (1 << 7)
108 #define AD7156_CONFIG_THR_MD(x) (((x) & 0x3) << 5)
109 #define AD7156_CONFIG_EN_CH1 (1 << 4)
110 #define AD7156_CONFIG_EN_CH2 (1 << 3)
111 #define AD7156_CONFIG_MD(x) ((x) & 0x7)
112 
114 #define AD7156_ADAPTIVE_THRESHOLD 0
115 #define AD7156_FIXED_THRESHOLD 1
116 
118 #define AD7156_THR_MODE_NEGATIVE 0
119 #define AD7156_THR_MODE_POSITIVE 1
120 #define AD7156_THR_MODE_IN_WINDOW 2
121 #define AD7156_THR_MODE_OU_WINDOW 3
122 
124 #define AD7156_CONV_MODE_IDLE 0
125 #define AD7156_CONV_MODE_CONT_CONV 1
126 #define AD7156_CONV_MODE_SINGLE_CONV 2
127 #define AD7156_CONV_MODE_PWR_DWN 3
128 
130 #define AD7156_PWR_DWN_TMR_TIMEOUT(x) (((x) & 0x3F) | (1 << 6))
131 
133 #define AD7156_CH1_CAPDAC_DAC_EN1 (1 << 7)
134 #define AD7156_CH1_CAPDAC_DAC_AUTO1 (1 << 6)
135 #define AD7156_CH1_CAPDAC_DAC_VAL1(x) ((x) & 0x3F)
136 
138 #define AD7156_CH2_CAPDAC_DAC_EN2 (1 << 7)
139 #define AD7156_CH2_CAPDAC_DAC_AUTO2 (1 << 6)
140 #define AD7156_CH2_CAPDAC_DAC_VAL2(x) ((x) & 0x3F)
141 
143 #define AD7156_DEFAULT_ID 0x88
144 
146 #define AD7156_RESET_CMD 0xBF
147 
149 #define AD7156_CHANNEL1 1
150 #define AD7156_CHANNEL2 2
151 
152 /******************************************************************************/
153 /*************************** Types Declarations *******************************/
154 /******************************************************************************/
155 
156 struct ad7156_dev {
157  /* I2C */
159  /* Device Settings */
160  float ad7156_channel1_range;
162 };
163 
164 struct ad7156_init_param {
165  /* I2C */
167  /* Device Settings */
169  float ad7156_channel2_range;
170 };
171 
172 /******************************************************************************/
173 /************************ Functions Declarations ******************************/
174 /******************************************************************************/
175 
177 void ad7156_get_register_value(struct ad7156_dev *dev,
178  uint8_t* p_read_data,
179  uint8_t register_address,
180  uint8_t bytes_number);
181 
183 void ad7156_set_register_value(struct ad7156_dev *dev,
184  uint16_t register_value,
185  uint8_t register_address,
186  uint8_t bytes_number);
189 int8_t ad7156_init(struct ad7156_dev **device,
191 
193 int32_t ad7156_remove(struct ad7156_dev *dev);
194 
196 void ad7156_reset(struct ad7156_dev *dev);
197 
199 void ad7156_set_power_mode(struct ad7156_dev *dev,
200  uint8_t pwr_mode);
201 
203 void ad7156_channel_state(struct ad7156_dev *dev,
204  uint8_t channel,
205  uint8_t enable_conv);
206 
208 void ad7156_set_range(struct ad7156_dev *dev,
209  uint32_t channel,
210  uint8_t range);
211 
213 float ad7156_get_range(struct ad7156_dev *dev,
214  uint32_t channel);
215 
217 void ad7156_set_threshold_mode(struct ad7156_dev *dev,
218  uint8_t thr_mode,
219  uint8_t thr_fixed);
220 
222 void ad7156_set_threshold(struct ad7156_dev *dev,
223  uint8_t channel,
224  float p_fthr);
225 
228 void ad7156_set_sensitivity(struct ad7156_dev *dev,
229  uint8_t channel,
230  float p_fsensitivity);
231 
233 uint16_t ad7156_read_channel_data(struct ad7156_dev *dev,
234  uint8_t channel);
235 
238 uint16_t ad7156_wait_read_channel_data(struct ad7156_dev *dev,
239  uint8_t channel);
240 
244  uint8_t channel);
245 
249  uint8_t channel);
250 
251 #endif /* __AD7156_H__ */
AD7156_CONFIG_THR_FIXED
#define AD7156_CONFIG_THR_FIXED
Definition: ad7156.h:111
AD7156_REG_CHIP_ID
#define AD7156_REG_CHIP_ID
Definition: ad7156.h:78
AD7156_CDC_RANGE_0_5_PF
#define AD7156_CDC_RANGE_0_5_PF
Definition: ad7156.h:106
ad7156_read_channel_capacitance
float ad7156_read_channel_capacitance(struct ad7156_dev *dev, uint8_t channel)
Reads a sample the selected channel and converts the data to picofarads(pF).
Definition: ad7156.c:508
no_os_i2c_write
int32_t no_os_i2c_write(struct no_os_i2c_desc *desc, uint8_t *data, uint8_t bytes_number, uint8_t stop_bit)
I2C Write data to slave device.
Definition: no_os_i2c.c:85
no_os_i2c_init
int32_t no_os_i2c_init(struct no_os_i2c_desc **desc, const struct no_os_i2c_init_param *param)
Initialize the I2C communication peripheral.
Definition: no_os_i2c.c:51
ad7156_reset
void ad7156_reset(struct ad7156_dev *dev)
Resets the device.
Definition: ad7156.c:159
ad7156_set_range
void ad7156_set_range(struct ad7156_dev *dev, uint32_t channel, uint8_t range)
Sets the input range of the specified channel.
Definition: ad7156.c:247
ad7156_get_register_value
void ad7156_get_register_value(struct ad7156_dev *dev, uint8_t *p_read_data, uint8_t register_address, uint8_t bytes_number)
Performs a burst read of a specified number of registers.
Definition: ad7156.c:60
ad7156_set_power_mode
void ad7156_set_power_mode(struct ad7156_dev *dev, uint8_t pwr_mode)
Sets the converter mode of operation.
Definition: ad7156.c:179
AD7156_REG_CONFIG
#define AD7156_REG_CONFIG
Definition: ad7156.h:70
no_os_i2c_remove
int32_t no_os_i2c_remove(struct no_os_i2c_desc *desc)
Free the resources allocated by no_os_i2c_init().
Definition: no_os_i2c.c:70
ad7156_dev::ad7156_channel1_range
float ad7156_channel1_range
Definition: ad7156.h:172
AD7156_REG_CH1_DATA_H
#define AD7156_REG_CH1_DATA_H
Definition: ad7156.h:56
device
Definition: ad9361_util.h:75
ad7156_set_threshold_mode
void ad7156_set_threshold_mode(struct ad7156_dev *dev, uint8_t thr_mode, uint8_t thr_fixed)
Selects the threshold mode of operation.
Definition: ad7156.c:338
ad7156_set_sensitivity
void ad7156_set_sensitivity(struct ad7156_dev *dev, uint8_t channel, float p_fsensitivity)
Writes a value(pF) to the sensitivity register. This functions should be used when adaptive threshold...
Definition: ad7156.c:407
ad7156_set_register_value
void ad7156_set_register_value(struct ad7156_dev *dev, uint16_t register_value, uint8_t register_address, uint8_t bytes_number)
Writes data into one or two registers.
Definition: ad7156.c:79
AD7156_REG_CH1_SETUP
#define AD7156_REG_CH1_SETUP
Definition: ad7156.h:66
ad7156_wait_read_channel_data
uint16_t ad7156_wait_read_channel_data(struct ad7156_dev *dev, uint8_t channel)
Waits for a finished CDC conversion and reads a 12-bit sample from the selected channel.
Definition: ad7156.c:467
AD7156_CONFIG_THR_MD
#define AD7156_CONFIG_THR_MD(x)
Definition: ad7156.h:112
ad7156_set_threshold
void ad7156_set_threshold(struct ad7156_dev *dev, uint8_t channel, float p_fthr)
Writes to the threshold register when threshold fixed mode is enabled.
Definition: ad7156.c:371
ad7156_init
int8_t ad7156_init(struct ad7156_dev **device, struct ad7156_init_param init_param)
Initializes the communication peripheral and the initial Values for AD7156 Board.
Definition: ad7156.c:106
ad7156.h
Header file of AD7156 Driver.
ad7156_set_threshold_mode
void ad7156_set_threshold_mode(struct ad7156_dev *dev, uint8_t thr_mode, uint8_t thr_fixed)
Selects the threshold mode of operation.
Definition: ad7156.c:338
ad7156_remove
int32_t ad7156_remove(struct ad7156_dev *dev)
Free the resources allocated by ad7156_init().
Definition: ad7156.c:141
AD7156_REG_CH2_DATA_H
#define AD7156_REG_CH2_DATA_H
Definition: ad7156.h:58
AD7156_CONFIG_EN_CH2
#define AD7156_CONFIG_EN_CH2
Definition: ad7156.h:114
AD7156_REG_CH2_SETUP
#define AD7156_REG_CH2_SETUP
Definition: ad7156.h:69
ad7156_channel_state
void ad7156_channel_state(struct ad7156_dev *dev, uint8_t channel, uint8_t enable_conv)
Enables or disables conversion on the selected channel.
Definition: ad7156.c:210
ad7156_wait_read_channel_data
uint16_t ad7156_wait_read_channel_data(struct ad7156_dev *dev, uint8_t channel)
Waits for a finished CDC conversion and reads a 12-bit sample from the selected channel.
Definition: ad7156.c:467
ad7156_dev::i2c_desc
struct no_os_i2c_desc * i2c_desc
Definition: ad7156.h:170
AD7156_REG_CH2_SENS_THRSH_H
#define AD7156_REG_CH2_SENS_THRSH_H
Definition: ad7156.h:67
ad7156_read_channel_capacitance
float ad7156_read_channel_capacitance(struct ad7156_dev *dev, uint8_t channel)
Reads a sample the selected channel and converts the data to picofarads(pF).
Definition: ad7156.c:508
AD7156_CONFIG_MD
#define AD7156_CONFIG_MD(x)
Definition: ad7156.h:115
ad7156_dev
Definition: ad7156.h:168
AD7156_REG_CH1_SENS_THRSH_H
#define AD7156_REG_CH1_SENS_THRSH_H
Definition: ad7156.h:64
ad7156_get_range
float ad7156_get_range(struct ad7156_dev *dev, uint32_t channel)
Reads the range bits from the device and returns the range in pF.
Definition: ad7156.c:286
ad7156_channel_state
void ad7156_channel_state(struct ad7156_dev *dev, uint8_t channel, uint8_t enable_conv)
Enables or disables conversion on the selected channel.
Definition: ad7156.c:210
ad7156_dev::ad7156_channel2_range
float ad7156_channel2_range
Definition: ad7156.h:173
ad7156_read_channel_data
uint16_t ad7156_read_channel_data(struct ad7156_dev *dev, uint8_t channel)
Reads a 12-bit sample from the selected channel.
Definition: ad7156.c:436
no_os_i2c_desc
Structure holding I2C descriptor.
Definition: no_os_i2c.h:81
ad7156_set_power_mode
void ad7156_set_power_mode(struct ad7156_dev *dev, uint8_t pwr_mode)
Sets the converter mode of operation.
Definition: ad7156.c:179
AD7156_CDC_RANGE_1_PF
#define AD7156_CDC_RANGE_1_PF
Definition: ad7156.h:107
no_os_i2c_read
int32_t no_os_i2c_read(struct no_os_i2c_desc *desc, uint8_t *data, uint8_t bytes_number, uint8_t stop_bit)
I2C Read data from slave device.
Definition: no_os_i2c.c:104
AD7156_CH1_SETUP_RANGE
#define AD7156_CH1_SETUP_RANGE(x)
Definition: ad7156.h:91
ad7156_init_param::i2c_init
struct no_os_i2c_init_param i2c_init
Definition: ad7156.h:178
no_os_i2c.h
Header file of I2C Interface.
ad7156_init_param::ad7156_channel1_range
float ad7156_channel1_range
Definition: ad7156.h:180
ad7156_init_param::ad7156_channel2_range
float ad7156_channel2_range
Definition: ad7156.h:181
AD7156_STATUS_RDY1
#define AD7156_STATUS_RDY1
Definition: ad7156.h:88
AD7156_CDC_RANGE_4_PF
#define AD7156_CDC_RANGE_4_PF
Definition: ad7156.h:108
ad7156_init_param
Definition: ad7156.h:176
ad7156_remove
int32_t ad7156_remove(struct ad7156_dev *dev)
Free the resources allocated by ad7156_init().
Definition: ad7156.c:141
AD7156_RESET_CMD
#define AD7156_RESET_CMD
Definition: ad7156.h:158
ad7156_get_range
float ad7156_get_range(struct ad7156_dev *dev, uint32_t channel)
Reads the range bits from the device and returns the range in pF.
Definition: ad7156.c:286
AD7156_CDC_RANGE_2_PF
#define AD7156_CDC_RANGE_2_PF
Definition: ad7156.h:105
no_os_i2c_init_param
Structure holding the parameters for I2C initialization.
Definition: no_os_i2c.h:64
AD7156_REG_STATUS
#define AD7156_REG_STATUS
Definition: ad7156.h:55
init_param
struct ad7616_init_param init_param
Definition: ad7616_sdz.c:96
ad7156_read_channel_data
uint16_t ad7156_read_channel_data(struct ad7156_dev *dev, uint8_t channel)
Reads a 12-bit sample from the selected channel.
Definition: ad7156.c:436
ad7156_set_range
void ad7156_set_range(struct ad7156_dev *dev, uint32_t channel, uint8_t range)
Sets the input range of the specified channel.
Definition: ad7156.c:247
ad7156_wait_read_channel_capacitance
float ad7156_wait_read_channel_capacitance(struct ad7156_dev *dev, uint8_t channel)
Waits for a finished CDC conversion the selected channel, reads a sample and converts the data to pic...
Definition: ad7156.c:539
ad7156_set_register_value
void ad7156_set_register_value(struct ad7156_dev *dev, uint16_t register_value, uint8_t register_address, uint8_t bytes_number)
Writes data into one or two registers.
Definition: ad7156.c:79
AD7156_CONFIG_EN_CH1
#define AD7156_CONFIG_EN_CH1
Definition: ad7156.h:113
ad7156_set_threshold
void ad7156_set_threshold(struct ad7156_dev *dev, uint8_t channel, float p_fthr)
Writes to the threshold register when threshold fixed mode is enabled.
Definition: ad7156.c:371
ad7156_init
int8_t ad7156_init(struct ad7156_dev **device, struct ad7156_init_param init_param)
Initializes the communication peripheral and the initial Values for AD7156 Board.
Definition: ad7156.c:106
AD7156_DEFAULT_ID
#define AD7156_DEFAULT_ID
Definition: ad7156.h:155
ad7156_reset
void ad7156_reset(struct ad7156_dev *dev)
Resets the device.
Definition: ad7156.c:159
ad7156_set_sensitivity
void ad7156_set_sensitivity(struct ad7156_dev *dev, uint8_t channel, float p_fsensitivity)
Writes a value(pF) to the sensitivity register. This functions should be used when adaptive threshold...
Definition: ad7156.c:407
ad7156_wait_read_channel_capacitance
float ad7156_wait_read_channel_capacitance(struct ad7156_dev *dev, uint8_t channel)
Waits for a finished CDC conversion the selected channel, reads a sample and converts the data to pic...
Definition: ad7156.c:539
AD7156_STATUS_RDY2
#define AD7156_STATUS_RDY2
Definition: ad7156.h:87
ad7156_get_register_value
void ad7156_get_register_value(struct ad7156_dev *dev, uint8_t *p_read_data, uint8_t register_address, uint8_t bytes_number)
Performs a burst read of a specified number of registers.
Definition: ad7156.c:60