no-OS
All Classes Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
ad7746.h
Go to the documentation of this file.
1/***************************************************************************/
34#ifndef _AD7746_H_
35#define _AD7746_H_
36
37#include <stdint.h>
38#include <stdbool.h>
39#include "no_os_util.h"
40#include "no_os_i2c.h"
41
42/* AD7746 Slave Address */
43#define AD7746_ADDRESS 0x48
44
45/* AD7746 Reset command */
46#define AD7746_RESET_CMD 0xBF
47
48/* AD7746 Register Definition */
49#define AD7746_REG_STATUS 0u
50#define AD7746_REG_CAP_DATA_HIGH 1u
51#define AD7746_REG_CAP_DATA_MID 2u
52#define AD7746_REG_CAP_DATA_LOW 3u
53#define AD7746_REG_VT_DATA_HIGH 4u
54#define AD7746_REG_VT_DATA_MID 5u
55#define AD7746_REG_VT_DATA_LOW 6u
56#define AD7746_REG_CAP_SETUP 7u
57#define AD7746_REG_VT_SETUP 8u
58#define AD7746_REG_EXC_SETUP 9u
59#define AD7746_REG_CFG 10u
60#define AD7746_REG_CAPDACA 11u
61#define AD7746_REG_CAPDACB 12u
62#define AD7746_REG_CAP_OFFH 13u
63#define AD7746_REG_CAP_OFFL 14u
64#define AD7746_REG_CAP_GAINH 15u
65#define AD7746_REG_CAP_GAINL 16u
66#define AD7746_REG_VOLT_GAINH 17u
67#define AD7746_REG_VOLT_GAINL 18u
68
69#define AD7746_NUM_REGISTERS (AD7746_REG_VOLT_GAINL + 1u)
70
71/* AD7746_REG_STATUS bits */
72#define AD7746_STATUS_EXCERR_MSK NO_OS_BIT(3)
73#define AD7746_STATUS_RDY_MSK NO_OS_BIT(2)
74#define AD7746_STATUS_RDYVT_MSK NO_OS_BIT(1)
75#define AD7746_STATUS_RDYCAP_MSK NO_OS_BIT(0)
76
77/* AD7746_REG_CAP_SETUP bits */
78#define AD7746_CAPSETUP_CAPEN_MSK NO_OS_BIT(7)
79#define AD7746_CAPSETUP_CIN2_MSK NO_OS_BIT(6)
80#define AD7746_CAPSETUP_CAPDIFF_MSK NO_OS_BIT(5)
81#define AD7746_CAPSETUP_CAPCHOP_MSK NO_OS_BIT(0)
82
83/* AD7746_REG_VT_SETUP bits */
84#define AD7746_VTSETUP_VTEN_MSK NO_OS_BIT(7)
85#define AD7746_VTSETUP_VTMD_MSK NO_OS_GENMASK(6,5)
86#define AD7746_VTSETUP_EXTREF_MSK NO_OS_BIT(4)
87#define AD7746_VTSETUP_VTSHORT_MSK NO_OS_BIT(1)
88#define AD7746_VTSETUP_VTCHOP_MSK NO_OS_BIT(0)
89
90/* AD7746_REG_EXC_SETUP bits */
91#define AD7746_EXCSETUP_CLKCTRL_MSK NO_OS_BIT(7)
92#define AD7746_EXCSETUP_EXCON_MSK NO_OS_BIT(6)
93#define AD7746_EXCSETUP_EXCB_MSK NO_OS_GENMASK(5,4)
94#define AD7746_EXCSETUP_EXCA_MSK NO_OS_GENMASK(3,2)
95#define AD7746_EXCSETUP_EXCLVL_MSK NO_OS_GENMASK(1,0)
96
97/* AD7746_REG_CFG bits */
98#define AD7746_CONF_VTF_MSK NO_OS_GENMASK(7,6)
99#define AD7746_CONF_CAPF_MSK NO_OS_GENMASK(5,3)
100#define AD7746_CONF_MD_MSK NO_OS_GENMASK(2,0)
101
102/* AD7746_REG_CAPDACx bits */
103#define AD7746_CAPDAC_DACEN_MSK NO_OS_BIT(7)
104#define AD7746_CAPDAC_DACP_MSK NO_OS_GENMASK(6,0)
105
111
113 bool capen;
114 bool cin2;
117};
118
125
126struct ad7746_vt {
127 bool vten;
129 bool extref;
131 bool vtchop;
132};
133
139
146
154
163
165 uint8_t vtf;
166 uint8_t capf;
168};
169
176
182
189
190int32_t ad7746_init(struct ad7746_dev **device,
192int32_t ad7746_reg_write(struct ad7746_dev *dev, uint8_t reg,
193 uint8_t* data, uint16_t bytes_number);
194int32_t ad7746_reg_read(struct ad7746_dev *dev, uint8_t reg,
195 uint8_t* data, uint16_t bytes_number);
196int32_t ad7746_reset(struct ad7746_dev *dev);
197int32_t ad7746_remove(struct ad7746_dev *dev);
198int32_t ad7746_set_cap(struct ad7746_dev *dev, struct ad7746_cap cap);
199int32_t ad7746_set_vt(struct ad7746_dev *dev, struct ad7746_vt vt);
200int32_t ad7746_set_exc(struct ad7746_dev *dev, struct ad7746_exc exc);
201int32_t ad7746_set_config(struct ad7746_dev *dev, struct ad7746_config config);
202int32_t ad7746_set_cap_dac_a(struct ad7746_dev *dev, bool enable, uint8_t code);
203int32_t ad7746_set_cap_dac_b(struct ad7746_dev *dev, bool enable, uint8_t code);
204int32_t ad7746_set_cap_offset(struct ad7746_dev *dev, uint16_t offset);
205int32_t ad7746_set_cap_gain(struct ad7746_dev *dev, uint16_t gain);
206int32_t ad7746_set_volt_gain(struct ad7746_dev *dev, uint16_t gain);
207int32_t ad7746_get_vt_data(struct ad7746_dev *dev, uint32_t *vt_data);
208int32_t ad7746_get_cap_data(struct ad7746_dev *dev, uint32_t *cap_data);
209int32_t ad7746_calibrate(struct ad7746_dev *dev, enum ad7746_md md);
210
211#endif // _AD7746_H
struct ad7616_init_param init_param
Definition ad7616_sdz.c:107
int32_t ad7746_set_cap(struct ad7746_dev *dev, struct ad7746_cap cap)
Configure the capacitive setup register.
Definition ad7746.c:203
int32_t ad7746_reg_write(struct ad7746_dev *dev, uint8_t reg, uint8_t *data, uint16_t bytes_number)
Writes data into AD7746 registers, starting from the selected register address pointer.
Definition ad7746.c:115
int32_t ad7746_init(struct ad7746_dev **device, struct ad7746_init_param *init_param)
Initialize the ad7606 device structure.
Definition ad7746.c:53
int32_t ad7746_set_cap_gain(struct ad7746_dev *dev, uint16_t gain)
Set the capacitive gain.
Definition ad7746.c:409
int32_t ad7746_set_cap_offset(struct ad7746_dev *dev, uint16_t offset)
Set the capacitive offset.
Definition ad7746.c:394
ad7746_id
Definition ad7746.h:106
@ ID_AD7746
Definition ad7746.h:108
@ ID_AD7745
Definition ad7746.h:107
@ ID_AD7747
Definition ad7746.h:109
#define AD7746_NUM_REGISTERS
Definition ad7746.h:69
int32_t ad7746_set_cap_dac_a(struct ad7746_dev *dev, bool enable, uint8_t code)
Set the DAC code and enable state for EXCA.
Definition ad7746.c:333
int32_t ad7746_set_exc(struct ad7746_dev *dev, struct ad7746_exc exc)
Configure the excitation setup register.
Definition ad7746.c:268
int32_t ad7746_set_config(struct ad7746_dev *dev, struct ad7746_config config)
Set the configuration register.
Definition ad7746.c:301
int32_t ad7746_calibrate(struct ad7746_dev *dev, enum ad7746_md md)
Perform offset/gain calibration.
Definition ad7746.c:524
int32_t ad7746_reg_read(struct ad7746_dev *dev, uint8_t reg, uint8_t *data, uint16_t bytes_number)
Reads data from AD7746 registers, starting from the selected register address pointer.
Definition ad7746.c:140
ad7746_exc_pin
Definition ad7746.h:134
@ AD7746_EXC_PIN_NORMAL
Definition ad7746.h:137
@ AD7746_EXC_PIN_INVERTED
Definition ad7746.h:136
@ AD7746_EXC_PIN_DISABLED
Definition ad7746.h:135
int32_t ad7746_set_vt(struct ad7746_dev *dev, struct ad7746_vt vt)
Configure the voltage/temperature setup register.
Definition ad7746.c:235
int32_t ad7746_get_vt_data(struct ad7746_dev *dev, uint32_t *vt_data)
Waits until a conversion on a voltage/temperature channel has been finished and returns the output da...
Definition ad7746.c:441
int32_t ad7746_set_volt_gain(struct ad7746_dev *dev, uint16_t gain)
Set the voltage gain.
Definition ad7746.c:424
int32_t ad7746_set_cap_dac_b(struct ad7746_dev *dev, bool enable, uint8_t code)
Set the DAC code and enable state for EXCB.
Definition ad7746.c:357
ad7746_md
Definition ad7746.h:155
@ AD7746_MODE_GAIN_CALIB
Definition ad7746.h:161
@ AD7746_MODE_SINGLE
Definition ad7746.h:158
@ AD7746_MODE_CONT
Definition ad7746.h:157
@ AD7746_MODE_OFFSET_CALIB
Definition ad7746.h:160
@ AD7746_MODE_IDLE
Definition ad7746.h:156
@ AD7746_MODE_POWERDOWN
Definition ad7746.h:159
int32_t ad7746_remove(struct ad7746_dev *dev)
Deinitialize the ad7746 driver and free all allocated resources.
Definition ad7746.c:181
int32_t ad7746_get_cap_data(struct ad7746_dev *dev, uint32_t *cap_data)
Waits until a conversion on the capacitive channel has been finished and returns the output data.
Definition ad7746.c:483
ad7746_vtmd
Definition ad7746.h:119
@ AD7746_VTMD_VDD_MON
Definition ad7746.h:122
@ AD7746_VIN_EXT_VIN
Definition ad7746.h:123
@ AD7746_VTMD_INT_TEMP
Definition ad7746.h:120
@ AD7746_VTMD_EXT_TEMP
Definition ad7746.h:121
int32_t ad7746_reset(struct ad7746_dev *dev)
Resets the AD7746.
Definition ad7746.c:165
ad7746_exclvl
Definition ad7746.h:140
@ AD7746_EXCLVL_4_DIV_8
Definition ad7746.h:144
@ AD7746_EXCLVL_2_DIV_8
Definition ad7746.h:142
@ AD7746_EXCLVL_3_DIV_8
Definition ad7746.h:143
@ AD7746_EXCLVL_1_DIV_8
Definition ad7746.h:141
Header file of I2C Interface.
Header file of utility functions.
Definition ad7746.h:112
bool capen
Definition ad7746.h:113
bool capdiff
Definition ad7746.h:115
bool cin2
Definition ad7746.h:114
bool capchop
Definition ad7746.h:116
Definition ad7746.h:164
uint8_t capf
Definition ad7746.h:166
uint8_t vtf
Definition ad7746.h:165
enum ad7746_md md
Definition ad7746.h:167
Definition ad7746.h:183
uint8_t buf[AD7746_NUM_REGISTERS+1u]
Definition ad7746.h:186
struct ad7746_setup setup
Definition ad7746.h:187
enum ad7746_id id
Definition ad7746.h:185
struct no_os_i2c_desc * i2c_dev
Definition ad7746.h:184
Definition ad7746.h:147
bool excon
Definition ad7746.h:149
enum ad7746_exc_pin excb
Definition ad7746.h:150
enum ad7746_exclvl exclvl
Definition ad7746.h:152
enum ad7746_exc_pin exca
Definition ad7746.h:151
bool clkctrl
Definition ad7746.h:148
Definition ad7746.h:177
struct ad7746_setup setup
Definition ad7746.h:180
enum ad7746_id id
Definition ad7746.h:179
struct no_os_i2c_init_param i2c_init
Definition ad7746.h:178
Definition ad7746.h:170
struct ad7746_exc exc
Definition ad7746.h:173
struct ad7746_vt vt
Definition ad7746.h:172
struct ad7746_cap cap
Definition ad7746.h:171
struct ad7746_config config
Definition ad7746.h:174
Definition ad7746.h:126
bool extref
Definition ad7746.h:129
bool vtchop
Definition ad7746.h:131
bool vten
Definition ad7746.h:127
bool vtshort
Definition ad7746.h:130
enum ad7746_vtmd vtmd
Definition ad7746.h:128
Definition ad9361_util.h:63
Structure holding I2C address descriptor.
Definition no_os_i2c.h:89
Structure holding the parameters for I2C initialization.
Definition no_os_i2c.h:52