no-OS
ad7293.h
Go to the documentation of this file.
1 /***************************************************************************/
40 #ifndef AD7293_H_
41 #define AD7293_H_
42 
43 /******************************************************************************/
44 /***************************** Include Files **********************************/
45 /******************************************************************************/
46 #include <stdint.h>
47 #include <stdbool.h>
48 #include "no_os_spi.h"
49 #include "no_os_gpio.h"
50 #include "no_os_util.h"
51 
52 /******************************************************************************/
53 /********************** Macros and Constants Definitions **********************/
54 /******************************************************************************/
55 
56 #define AD7293_R1B NO_OS_BIT(16)
57 #define AD7293_R2B NO_OS_BIT(17)
58 #define AD7293_PAGE_ADDR_MSK NO_OS_GENMASK(15, 8)
59 #define AD7293_PAGE(x) no_os_field_prep(AD7293_PAGE_ADDR_MSK, x)
60 
61 /* AD7293 Register Map Common */
62 #define AD7293_REG_NO_OP (AD7293_R1B | AD7293_PAGE(0x0) | 0x0)
63 #define AD7293_REG_PAGE_SELECT (AD7293_R1B | AD7293_PAGE(0x0) | 0x1)
64 #define AD7293_REG_CONV_CMD (AD7293_R2B | AD7293_PAGE(0x0) | 0x2)
65 #define AD7293_REG_RESULT (AD7293_R1B | AD7293_PAGE(0x0) | 0x3)
66 #define AD7293_REG_DAC_EN (AD7293_R1B | AD7293_PAGE(0x0) | 0x4)
67 #define AD7293_REG_DEVICE_ID (AD7293_R2B | AD7293_PAGE(0x0) | 0xC)
68 #define AD7293_REG_SOFT_RESET (AD7293_R2B | AD7293_PAGE(0x0) | 0xF)
69 
70 /* AD7293 Register Map Page 0x0 */
71 #define AD7293_REG_VIN0 (AD7293_R2B | AD7293_PAGE(0x0) | 0x10)
72 #define AD7293_REG_VIN1 (AD7293_R2B | AD7293_PAGE(0x0) | 0x11)
73 #define AD7293_REG_VIN2 (AD7293_R2B | AD7293_PAGE(0x0) | 0x12)
74 #define AD7293_REG_VIN3 (AD7293_R2B | AD7293_PAGE(0x0) | 0x13)
75 #define AD7293_REG_TSENSE_INT (AD7293_R2B | AD7293_PAGE(0x0) | 0x20)
76 #define AD7293_REG_TSENSE_D0 (AD7293_R2B | AD7293_PAGE(0x0) | 0x21)
77 #define AD7293_REG_TSENSE_D1 (AD7293_R2B | AD7293_PAGE(0x0) | 0x22)
78 #define AD7293_REG_ISENSE_0 (AD7293_R2B | AD7293_PAGE(0x0) | 0x28)
79 #define AD7293_REG_ISENSE_1 (AD7293_R2B | AD7293_PAGE(0x0) | 0x29)
80 #define AD7293_REG_ISENSE_2 (AD7293_R2B | AD7293_PAGE(0x0) | 0x2A)
81 #define AD7293_REG_ISENSE_3 (AD7293_R2B | AD7293_PAGE(0x0) | 0x2B)
82 #define AD7293_REG_UNI_VOUT0 (AD7293_R2B | AD7293_PAGE(0x0) | 0x30)
83 #define AD7293_REG_UNI_VOUT1 (AD7293_R2B | AD7293_PAGE(0x0) | 0x31)
84 #define AD7293_REG_UNI_VOUT2 (AD7293_R2B | AD7293_PAGE(0x0) | 0x32)
85 #define AD7293_REG_UNI_VOUT3 (AD7293_R2B | AD7293_PAGE(0x0) | 0x33)
86 #define AD7293_REG_BI_VOUT0 (AD7293_R2B | AD7293_PAGE(0x0) | 0x34)
87 #define AD7293_REG_BI_VOUT1 (AD7293_R2B | AD7293_PAGE(0x0) | 0x35)
88 #define AD7293_REG_BI_VOUT2 (AD7293_R2B | AD7293_PAGE(0x0) | 0x36)
89 #define AD7293_REG_BI_VOUT3 (AD7293_R2B | AD7293_PAGE(0x0) | 0x37)
90 
91 /* AD7293 Register Map Page 0x01 */
92 #define AD7293_REG_AVDD (AD7293_R2B | AD7293_PAGE(0x01) | 0x10)
93 #define AD7293_REG_DACVDD_UNI (AD7293_R2B | AD7293_PAGE(0x01) | 0x11)
94 #define AD7293_REG_DACVDD_BI (AD7293_R2B | AD7293_PAGE(0x01) | 0x12)
95 #define AD7293_REG_AVSS (AD7293_R2B | AD7293_PAGE(0x01) | 0x13)
96 #define AD7293_REG_BI_VOUT0_MON (AD7293_R2B | AD7293_PAGE(0x01) | 0x14)
97 #define AD7293_REG_BI_VIOU1_MON (AD7293_R2B | AD7293_PAGE(0x01) | 0x15)
98 #define AD7293_REG_BI_VOUT2_MON (AD7293_R2B | AD7293_PAGE(0x01) | 0x16)
99 #define AD7293_REG_BI_VOUT3_MON (AD7293_R2B | AD7293_PAGE(0x01) | 0x17)
100 #define AD7293_REG_RS0_MON (AD7293_R2B | AD7293_PAGE(0x01) | 0x28)
101 #define AD7293_REG_RS1_MON (AD7293_R2B | AD7293_PAGE(0x01) | 0x29)
102 #define AD7293_REG_RS2_MON (AD7293_R2B | AD7293_PAGE(0x01) | 0x2A)
103 #define AD7293_REG_RS3_MON (AD7293_R2B | AD7293_PAGE(0x01) | 0x2B)
104 
105 /* AD7293 Register Map Page 0x2 */
106 #define AD7293_REG_DIGITAL_OUT_EN (AD7293_R2B | AD7293_PAGE(0x2) | 0x11)
107 #define AD7293_REG_DIGITAL_INOUT_FUNC (AD7293_R2B | AD7293_PAGE(0x2) | 0x12)
108 #define AD7293_REG_DIGITAL_FUNC_POL (AD7293_R2B | AD7293_PAGE(0x2) | 0x13)
109 #define AD7293_REG_GENERAL (AD7293_R2B | AD7293_PAGE(0x2) | 0x14)
110 #define AD7293_REG_VINX_RANGE0 (AD7293_R2B | AD7293_PAGE(0x2) | 0x15)
111 #define AD7293_REG_VINX_RANGE1 (AD7293_R2B | AD7293_PAGE(0x2) | 0x16)
112 #define AD7293_REG_VINX_DIFF_SE (AD7293_R2B | AD7293_PAGE(0x2) | 0x17)
113 #define AD7293_REG_VINX_FILTER (AD7293_R2B | AD7293_PAGE(0x2) | 0x18)
114 #define AD7293_REG_BG_EN (AD7293_R2B | AD7293_PAGE(0x2) | 0x19)
115 #define AD7293_REG_CONV_DELAY (AD7293_R2B | AD7293_PAGE(0x2) | 0x1A)
116 #define AD7293_REG_TSENSE_BG_EN (AD7293_R2B | AD7293_PAGE(0x2) | 0x1B)
117 #define AD7293_REG_ISENSE_BG_EN (AD7293_R2B | AD7293_PAGE(0x2) | 0x1C)
118 #define AD7293_REG_ISENSE_GAIN (AD7293_R2B | AD7293_PAGE(0x2) | 0x1D)
119 #define AD7293_REG_DAC_SNOOZE_O (AD7293_R2B | AD7293_PAGE(0x2) | 0x1F)
120 #define AD7293_REG_DAC_SNOOZE_1 (AD7293_R2B | AD7293_PAGE(0x2) | 0x20)
121 #define AD7293_REG_RSX_MON_BG_EN (AD7293_R2B | AD7293_PAGE(0x2) | 0x23)
122 #define AD7293_REG_INTEGR_CL (AD7293_R2B | AD7293_PAGE(0x2) | 0x28)
123 #define AD7293_REG_PA_ON_CTRL (AD7293_R2B | AD7293_PAGE(0x2) | 0x29)
124 #define AD7293_REG_RAMP_TIME_0 (AD7293_R2B | AD7293_PAGE(0x2) | 0x2A)
125 #define AD7293_REG_RAMP_TIME_1 (AD7293_R2B | AD7293_PAGE(0x2) | 0x2B)
126 #define AD7293_REG_RAMP_TIME_2 (AD7293_R2B | AD7293_PAGE(0x2) | 0x2C)
127 #define AD7293_REG_RAMP_TIME_3 (AD7293_R2B | AD7293_PAGE(0x2) | 0x2D)
128 #define AD7293_REG_CL_FR_IT (AD7293_R2B | AD7293_PAGE(0x2) | 0x2E)
129 #define AD7293_REG_INTX_AVSS_AVDD (AD7293_R2B | AD7293_PAGE(0x2) | 0x2F)
130 
131 /* AD7293 Register Map Page 0x3 */
132 #define AD7293_REG_VINX_SEQ (AD7293_R2B | AD7293_PAGE(0x3) | 0x10)
133 #define AD7293_REG_ISENSEX_TSENSEX_SEQ (AD7293_R2B | AD7293_PAGE(0x3) | 0x11)
134 #define AD7293_REG_RSX_MON_BI_VOUTX_SEQ (AD7293_R2B | AD7293_PAGE(0x3) | 0x12)
135 
136 /* AD7293 Register Map Page 0x05 */
137 #define AD7293_REG_AVDD_HL (AD7293_R2B | AD7293_PAGE(0x05) | 0x10)
138 #define AD7293_REG_DACVDD_UNI_HL (AD7293_R2B | AD7293_PAGE(0x05) | 0x11)
139 #define AD7293_REG_DACVDD_BI_HL (AD7293_R2B | AD7293_PAGE(0x05) | 0x12)
140 #define AD7293_REG_AVSS_HL (AD7293_R2B | AD7293_PAGE(0x05) | 0x13)
141 #define AD7293_REG_BI_VOUT0_MON_HL (AD7293_R2B | AD7293_PAGE(0x05) | 0x14)
142 #define AD7293_REG_BI_VOUT1_MON_HL (AD7293_R2B | AD7293_PAGE(0x05) | 0x15)
143 #define AD7293_REG_BI_VOUT2_MON_HL (AD7293_R2B | AD7293_PAGE(0x05) | 0x16)
144 #define AD7293_REG_BI_VOUT3_MON_HL (AD7293_R2B | AD7293_PAGE(0x05) | 0x17)
145 #define AD7293_REG_RS0_MON_HL (AD7293_R2B | AD7293_PAGE(0x05) | 0x28)
146 #define AD7293_REG_RS1_MON_HL (AD7293_R2B | AD7293_PAGE(0x05) | 0x29)
147 #define AD7293_REG_RS2_MON_HL (AD7293_R2B | AD7293_PAGE(0x05) | 0x2A)
148 #define AD7293_REG_RS3_MON_HL (AD7293_R2B | AD7293_PAGE(0x05) | 0x2B)
149 
150 /* AD7293 Register Map Page 0x06 */
151 #define AD7293_REG_VIN0_LL (AD7293_R2B | AD7293_PAGE(0x06) | 0x10)
152 #define AD7293_REG_VIN1_LL (AD7293_R2B | AD7293_PAGE(0x06) | 0x11)
153 #define AD7293_REG_VIN2_LL (AD7293_R2B | AD7293_PAGE(0x06) | 0x12)
154 #define AD7293_REG_VIN3_LL (AD7293_R2B | AD7293_PAGE(0x06) | 0x13)
155 #define AD7293_REG_TSENSE_D0_LL (AD7293_R2B | AD7293_PAGE(0x06) | 0x20)
156 #define AD7293_REG_TSENSE_D1_LL (AD7293_R2B | AD7293_PAGE(0x06) | 0x21)
157 #define AD7293_REG_TSENSE_D2_LL (AD7293_R2B | AD7293_PAGE(0x06) | 0x22)
158 #define AD7293_REG_ISENSE0_LL (AD7293_R2B | AD7293_PAGE(0x06) | 0x28)
159 #define AD7293_REG_ISENSE1_LL (AD7293_R2B | AD7293_PAGE(0x06) | 0x29)
160 #define AD7293_REG_ISENSE2_LL (AD7293_R2B | AD7293_PAGE(0x06) | 0x2A)
161 #define AD7293_REG_ISENSE3_LL (AD7293_R2B | AD7293_PAGE(0x06) | 0x2B)
162 
163 /* AD7293 Register Map Page 0x07 */
164 #define AD7293_REG_AVDD_LL (AD7293_R2B | AD7293_PAGE(0x07) | 0x10)
165 #define AD7293_REG_DACVDD_UNI_LL (AD7293_R2B | AD7293_PAGE(0x07) | 0x11)
166 #define AD7293_REG_DACVDD_BI_LL (AD7293_R2B | AD7293_PAGE(0x07) | 0x12)
167 #define AD7293_REG_AVSS_LL (AD7293_R2B | AD7293_PAGE(0x07) | 0x13)
168 #define AD7293_REG_BI_VOUT0_MON_LL (AD7293_R2B | AD7293_PAGE(0x07) | 0x14)
169 #define AD7293_REG_BI_VOUT1_MON_LL (AD7293_R2B | AD7293_PAGE(0x07) | 0x15)
170 #define AD7293_REG_BI_VOUT2_MON_LL (AD7293_R2B | AD7293_PAGE(0x07) | 0x16)
171 #define AD7293_REG_BI_VOUT3_MON_LL (AD7293_R2B | AD7293_PAGE(0x07) | 0x17)
172 #define AD7293_REG_RS0_MON_LL (AD7293_R2B | AD7293_PAGE(0x07) | 0x28)
173 #define AD7293_REG_RS1_MON_LL (AD7293_R2B | AD7293_PAGE(0x07) | 0x29)
174 #define AD7293_REG_RS2_MON_LL (AD7293_R2B | AD7293_PAGE(0x07) | 0x2A)
175 #define AD7293_REG_RS3_MON_LL (AD7293_R2B | AD7293_PAGE(0x07) | 0x2B)
176 
177 /* AD7293 Register Map Page 0x08 */
178 #define AD7293_REG_VIN0_HYS (AD7293_R2B | AD7293_PAGE(0x08) | 0x10)
179 #define AD7293_REG_VIN1_HYS (AD7293_R2B | AD7293_PAGE(0x08) | 0x11)
180 #define AD7293_REG_VIN2_HYS (AD7293_R2B | AD7293_PAGE(0x08) | 0x12)
181 #define AD7293_REG_VIN3_HYS (AD7293_R2B | AD7293_PAGE(0x08) | 0x13)
182 #define AD7293_REG_TSENSE_INT_HYS (AD7293_R2B | AD7293_PAGE(0x08) | 0x20)
183 #define AD7293_REG_TSENSE_D0_HYS (AD7293_R2B | AD7293_PAGE(0x08) | 0x21)
184 #define AD7293_REG_TSENSE_D1_HYS (AD7293_R2B | AD7293_PAGE(0x08) | 0x22)
185 #define AD7293_REG_ISENSE0_HYS (AD7293_R2B | AD7293_PAGE(0x08) | 0x28)
186 #define AD7293_REG_ISENSE1_HYS (AD7293_R2B | AD7293_PAGE(0x08) | 0x29)
187 #define AD7293_REG_ISENSE2_HYS (AD7293_R2B | AD7293_PAGE(0x08) | 0x2A)
188 #define AD7293_REG_ISENSE3_HYS (AD7293_R2B | AD7293_PAGE(0x08) | 0x2B)
189 
190 /* AD7293 Register Map Page 0x09 */
191 #define AD7293_REG_AVDD_HYS (AD7293_R2B | AD7293_PAGE(0x09) | 0x10)
192 #define AD7293_REG_DACVDD_UNI_HYS (AD7293_R2B | AD7293_PAGE(0x09) | 0x11)
193 #define AD7293_REG_DACVDD_BI_HYS (AD7293_R2B | AD7293_PAGE(0x09) | 0x12)
194 #define AD7293_REG_AVSS_HYS (AD7293_R2B | AD7293_PAGE(0x09) | 0x13)
195 #define AD7293_REG_BI_VOUT0_MON_HYS (AD7293_R2B | AD7293_PAGE(0x09) | 0x14)
196 #define AD7293_REG_BI_VOUT1_MON_HYS (AD7293_R2B | AD7293_PAGE(0x09) | 0x15)
197 #define AD7293_REG_BI_VOUT2_MON_HYS (AD7293_R2B | AD7293_PAGE(0x09) | 0x16)
198 #define AD7293_REG_BI_VOUT3_MON_HYS (AD7293_R2B | AD7293_PAGE(0x09) | 0x17)
199 #define AD7293_REG_RS0_MON_HYS (AD7293_R2B | AD7293_PAGE(0x09) | 0x28)
200 #define AD7293_REG_RS1_MON_HYS (AD7293_R2B | AD7293_PAGE(0x09) | 0x29)
201 #define AD7293_REG_RS2_MON_HYS (AD7293_R2B | AD7293_PAGE(0x09) | 0x2A)
202 #define AD7293_REG_RS3_MON_HYS (AD7293_R2B | AD7293_PAGE(0x09) | 0x2B)
203 
204 /* AD7293 Register Map Page 0x0A */
205 #define AD7293_REG_VIN0_MIN (AD7293_R2B | AD7293_PAGE(0x0A) | 0x10)
206 #define AD7293_REG_VIN1_MIN (AD7293_R2B | AD7293_PAGE(0x0A) | 0x11)
207 #define AD7293_REG_VIN2_MIN (AD7293_R2B | AD7293_PAGE(0x0A) | 0x12)
208 #define AD7293_REG_VIN3_MIN (AD7293_R2B | AD7293_PAGE(0x0A) | 0x13)
209 #define AD7293_REG_TSENSE_INT_MIN (AD7293_R2B | AD7293_PAGE(0x0A) | 0x20)
210 #define AD7293_REG_TSENSE_D0_MIN (AD7293_R2B | AD7293_PAGE(0x0A) | 0x21)
211 #define AD7293_REG_TSENSE_D1_MIN (AD7293_R2B | AD7293_PAGE(0x0A) | 0x22)
212 #define AD7293_REG_ISENSE0_MIN (AD7293_R2B | AD7293_PAGE(0x0A) | 0x28)
213 #define AD7293_REG_ISENSE1_MIN (AD7293_R2B | AD7293_PAGE(0x0A) | 0x29)
214 #define AD7293_REG_ISENSE2_MIN (AD7293_R2B | AD7293_PAGE(0x0A) | 0x2A)
215 #define AD7293_REG_ISENSE3_MIN (AD7293_R2B | AD7293_PAGE(0x0A) | 0x2B)
216 
217 /* AD7293 Register Map Page 0x0B */
218 #define AD7293_REG_AVDD_MIN (AD7293_R2B | AD7293_PAGE(0x0B) | 0x10)
219 #define AD7293_REG_DACVDD_UNI_MIN (AD7293_R2B | AD7293_PAGE(0x0B) | 0x11)
220 #define AD7293_REG_DACVDD_BI_MIN (AD7293_R2B | AD7293_PAGE(0x0B) | 0x12)
221 #define AD7293_REG_AVSS_MIN (AD7293_R2B | AD7293_PAGE(0x0B) | 0x13)
222 #define AD7293_REG_BI_VOUT0_MON_MIN (AD7293_R2B | AD7293_PAGE(0x0B) | 0x14)
223 #define AD7293_REG_BI_VOUT1_MON_MIN (AD7293_R2B | AD7293_PAGE(0x0B) | 0x15)
224 #define AD7293_REG_BI_VOUT2_MON_MIN (AD7293_R2B | AD7293_PAGE(0x0B) | 0x16)
225 #define AD7293_REG_BI_VOUT3_MON_MIN (AD7293_R2B | AD7293_PAGE(0x0B) | 0x17)
226 #define AD7293_REG_RS0_MON_MIN (AD7293_R2B | AD7293_PAGE(0x0B) | 0x28)
227 #define AD7293_REG_RS1_MON_MIN (AD7293_R2B | AD7293_PAGE(0x0B) | 0x29)
228 #define AD7293_REG_RS2_MON_MIN (AD7293_R2B | AD7293_PAGE(0x0B) | 0x2A)
229 #define AD7293_REG_RS3_MON_MIN (AD7293_R2B | AD7293_PAGE(0x0B) | 0x2B)
230 
231 /* AD7293 Register Map Page 0x0C */
232 #define AD7293_REG_VIN0_MAX (AD7293_R2B | AD7293_PAGE(0x0C) | 0x10)
233 #define AD7293_REG_VIN1_MAX (AD7293_R2B | AD7293_PAGE(0x0C) | 0x11)
234 #define AD7293_REG_VIN2_MAX (AD7293_R2B | AD7293_PAGE(0x0C) | 0x12)
235 #define AD7293_REG_VIN3_MAX (AD7293_R2B | AD7293_PAGE(0x0C) | 0x13)
236 #define AD7293_REG_TSENSE_INT_MAX (AD7293_R2B | AD7293_PAGE(0x0C) | 0x20)
237 #define AD7293_REG_TSENSE_D0_MAX (AD7293_R2B | AD7293_PAGE(0x0C) | 0x21)
238 #define AD7293_REG_TSENSE_D1_MAX (AD7293_R2B | AD7293_PAGE(0x0C) | 0x22)
239 #define AD7293_REG_ISENSE0_MAX (AD7293_R2B | AD7293_PAGE(0x0C) | 0x28)
240 #define AD7293_REG_ISENSE1_MAX (AD7293_R2B | AD7293_PAGE(0x0C) | 0x29)
241 #define AD7293_REG_ISENSE2_MAX (AD7293_R2B | AD7293_PAGE(0x0C) | 0x2A)
242 #define AD7293_REG_ISENSE3_MAX (AD7293_R2B | AD7293_PAGE(0x0C) | 0x2B)
243 
244 /* AD7293 Register Map Page 0x0D */
245 #define AD7293_REG_AVDD_MAX (AD7293_R2B | AD7293_PAGE(0x0D) | 0x10)
246 #define AD7293_REG_DACVDD_UNI_MAX (AD7293_R2B | AD7293_PAGE(0x0D) | 0x11)
247 #define AD7293_REG_DACVDD_BI_MAX (AD7293_R2B | AD7293_PAGE(0x0D) | 0x12)
248 #define AD7293_REG_AVSS_MAX (AD7293_R2B | AD7293_PAGE(0x0D) | 0x13)
249 #define AD7293_REG_BI_VOUT0_MON_MAX (AD7293_R2B | AD7293_PAGE(0x0D) | 0x14)
250 #define AD7293_REG_BI_VOUT1_MON_MAX (AD7293_R2B | AD7293_PAGE(0x0D) | 0x15)
251 #define AD7293_REG_BI_VOUT2_MON_MAX (AD7293_R2B | AD7293_PAGE(0x0D) | 0x16)
252 #define AD7293_REG_BI_VOUT3_MON_MAX (AD7293_R2B | AD7293_PAGE(0x0D) | 0x17)
253 #define AD7293_REG_RS0_MON_MAX (AD7293_R2B | AD7293_PAGE(0x0D) | 0x28)
254 #define AD7293_REG_RS1_MON_MAX (AD7293_R2B | AD7293_PAGE(0x0D) | 0x29)
255 #define AD7293_REG_RS2_MON_MAX (AD7293_R2B | AD7293_PAGE(0x0D) | 0x2A)
256 #define AD7293_REG_RS3_MON_MAX (AD7293_R2B | AD7293_PAGE(0x0D) | 0x2B)
257 
258 /* AD7293 Register Map Page 0xE */
259 #define AD7293_REG_VIN0_OFFSET (AD7293_R1B | AD7293_PAGE(0xE) | 0x10)
260 #define AD7293_REG_VIN1_OFFSET (AD7293_R1B | AD7293_PAGE(0xE) | 0x11)
261 #define AD7293_REG_VIN2_OFFSET (AD7293_R1B | AD7293_PAGE(0xE) | 0x12)
262 #define AD7293_REG_VIN3_OFFSET (AD7293_R1B | AD7293_PAGE(0xE) | 0x13)
263 #define AD7293_REG_TSENSE_INT_OFFSET (AD7293_R1B | AD7293_PAGE(0xE) | 0x20)
264 #define AD7293_REG_TSENSE_D0_OFFSET (AD7293_R1B | AD7293_PAGE(0xE) | 0x21)
265 #define AD7293_REG_TSENSE_D1_OFFSET (AD7293_R1B | AD7293_PAGE(0xE) | 0x22)
266 #define AD7293_REG_ISENSE0_OFFSET (AD7293_R1B | AD7293_PAGE(0xE) | 0x28)
267 #define AD7293_REG_ISENSE1_OFFSET (AD7293_R1B | AD7293_PAGE(0xE) | 0x29)
268 #define AD7293_REG_ISENSE2_OFFSET (AD7293_R1B | AD7293_PAGE(0xE) | 0x2A)
269 #define AD7293_REG_ISENSE3_OFFSET (AD7293_R1B | AD7293_PAGE(0xE) | 0x2B)
270 #define AD7293_REG_UNI_VOUT0_OFFSET (AD7293_R1B | AD7293_PAGE(0xE) | 0x30)
271 #define AD7293_REG_UNI_VOUT1_OFFSET (AD7293_R1B | AD7293_PAGE(0xE) | 0x31)
272 #define AD7293_REG_UNI_VOUT2_OFFSET (AD7293_R1B | AD7293_PAGE(0xE) | 0x32)
273 #define AD7293_REG_UNI_VOUT3_OFFSET (AD7293_R1B | AD7293_PAGE(0xE) | 0x33)
274 #define AD7293_REG_BI_VOUT0_OFFSET (AD7293_R1B | AD7293_PAGE(0xE) | 0x34)
275 #define AD7293_REG_BI_VOUT1_OFFSET (AD7293_R1B | AD7293_PAGE(0xE) | 0x35)
276 #define AD7293_REG_BI_VOUT2_OFFSET (AD7293_R1B | AD7293_PAGE(0xE) | 0x36)
277 #define AD7293_REG_BI_VOUT3_OFFSET (AD7293_R1B | AD7293_PAGE(0xE) | 0x37)
278 
279 /* AD7293 Register Map Page 0x0F */
280 #define AD7293_REG_AVDD_OFFSET (AD7293_R1B | AD7293_PAGE(0x0F) | 0x10)
281 #define AD7293_REG_DACVDD_UNI_OFFSET (AD7293_R1B | AD7293_PAGE(0x0F) | 0x11)
282 #define AD7293_REG_DACVDD_BI_OFFSET (AD7293_R1B | AD7293_PAGE(0x0F) | 0x12)
283 #define AD7293_REG_AVSS_OFFSET (AD7293_R1B | AD7293_PAGE(0x0F) | 0x13)
284 #define AD7293_REG_BI_VOUT0_MON_OFFSET (AD7293_R1B | AD7293_PAGE(0x0F) | 0x14)
285 #define AD7293_REG_BI_VOUT1_MON_OFFSET (AD7293_R1B | AD7293_PAGE(0x0F) | 0x15)
286 #define AD7293_REG_BI_VOUT2_MON_OFFSET (AD7293_R1B | AD7293_PAGE(0x0F) | 0x16)
287 #define AD7293_REG_BI_VOUT3_MON_OFFSET (AD7293_R1B | AD7293_PAGE(0x0F) | 0x17)
288 #define AD7293_REG_RS0_MON_OFFSET (AD7293_R1B | AD7293_PAGE(0x0F) | 0x28)
289 #define AD7293_REG_RS1_MON_OFFSET (AD7293_R1B | AD7293_PAGE(0x0F) | 0x29)
290 #define AD7293_REG_RS2_MON_OFFSET (AD7293_R1B | AD7293_PAGE(0x0F) | 0x2A)
291 #define AD7293_REG_RS3_MON_OFFSET (AD7293_R1B | AD7293_PAGE(0x0F) | 0x2B)
292 
293 /* AD7293 Register Map Page 0x10 */
294 #define AD7293_REG_ALERT_SUM (AD7293_R2B | AD7293_PAGE(0x10) | 0x10)
295 #define AD7293_REG_VINX_ALERT (AD7293_R2B | AD7293_PAGE(0x10) | 0x12)
296 #define AD7293_REG_TSENSEX_ALERT (AD7293_R2B | AD7293_PAGE(0x10) | 0x14)
297 #define AD7293_REG_ISENSEX_ALERT (AD7293_R2B | AD7293_PAGE(0x10) | 0x15)
298 #define AD7293_REG_BI_VOUTX_MON_ALERT (AD7293_R2B | AD7293_PAGE(0x10) | 0x18)
299 #define AD7293_REG_RSX_MON_ALERT (AD7293_R2B | AD7293_PAGE(0x10) | 0x19)
300 #define AD7293_REG_INT_LIMIT_AVSS_ALERT (AD7293_R2B | AD7293_PAGE(0x10) | 0x1A)
301 
302 /* AD7293 Register Map Page 0x11 */
303 #define AD7293_REG_VINX_ALERT0 (AD7293_R2B | AD7293_PAGE(0x11) | 0x12)
304 #define AD7293_REG_TSENSEX_ALERT0 (AD7293_R2B | AD7293_PAGE(0x11) | 0x14)
305 #define AD7293_REG_ISENSEX_ALERT0 (AD7293_R2B | AD7293_PAGE(0x11) | 0x15)
306 #define AD7293_REG_BI_VOUTX_MON_ALERT0 (AD7293_R2B | AD7293_PAGE(0x11) | 0x18)
307 #define AD7293_REG_RSX_MON_ALERT0 (AD7293_R2B | AD7293_PAGE(0x11) | 0x19)
308 #define AD7293_REG_INT_LIMIT_AVSS_ALERT0 (AD7293_R2B | AD7293_PAGE(0x11) | 0x1A)
309 
310 /* AD7293 Register Map Page 0x12 */
311 #define AD7293_REG_VINX_ALERT1 (AD7293_R2B | AD7293_PAGE(0x12) | 0x12)
312 #define AD7293_REG_TSENSEX_ALERT1 (AD7293_R2B | AD7293_PAGE(0x12) | 0x14)
313 #define AD7293_REG_ISENSEX_ALERT1 (AD7293_R2B | AD7293_PAGE(0x12) | 0x15)
314 #define AD7293_REG_BI_VOUTX_MON_ALERT1 (AD7293_R2B | AD7293_PAGE(0x12) | 0x18)
315 #define AD7293_REG_RSX_MON_ALERT1 (AD7293_R2B | AD7293_PAGE(0x12) | 0x19)
316 #define AD7293_REG_INT_LIMIT_AVSS_ALERT1 (AD7293_R2B | AD7293_PAGE(0x12) | 0x1A)
317 
318 /* AD7293 Miscellaneous Definitions */
319 #define AD7293_READ NO_OS_BIT(7)
320 #define AD7293_TRANSF_LEN_MSK NO_OS_GENMASK(17, 16)
321 #define AD7293_BUFF_SIZE_BYTES 3
322 #define AD7293_REG_ADDR_MSK NO_OS_GENMASK(7, 0)
323 #define AD7293_REG_VOUT_OFFSET_MSK NO_OS_GENMASK(5, 4)
324 #define AD7293_REG_DATA_RAW_MSK NO_OS_GENMASK(15, 4)
325 #define AD7293_REG_VINX_RANGE_GET_CH_MSK(x, ch) (((x) >> (ch)) & 0x1)
326 #define AD7293_REG_VINX_RANGE_SET_CH_MSK(x, ch) (((x) & 0x1) << (ch))
327 #define AD7293_CHIP_ID 0x18
328 #define AD7293_SOFT_RESET_VAL 0x7293
329 #define AD7293_SOFT_RESET_CLR_VAL 0x0000
330 #define AD7293_CONV_CMD_VAL 0x82
331 
341 };
342 
347 struct ad7293_dev {
351  uint8_t page_select;
352 };
353 
362 };
363 
364 /******************************************************************************/
365 /************************ Functions Declarations ******************************/
366 /******************************************************************************/
367 
369 int ad7293_spi_read(struct ad7293_dev *dev, unsigned int reg, uint16_t *val);
370 
372 int ad7293_spi_write(struct ad7293_dev *dev, unsigned int reg, uint16_t val);
373 
375 int ad7293_spi_update_bits(struct ad7293_dev *dev, unsigned int reg,
376  uint16_t mask, uint16_t val);
377 
379 int ad7293_adc_get_range(struct ad7293_dev *dev, unsigned int ch,
380  uint16_t *range);
381 
383 int ad7293_adc_set_range(struct ad7293_dev *dev, unsigned int ch,
384  uint16_t range);
385 
387 int ad7293_isense_set_gain(struct ad7293_dev *dev, unsigned int ch,
388  uint16_t gain);
389 
391 int ad7293_isense_get_gain(struct ad7293_dev *dev, unsigned int ch,
392  uint16_t *gain);
393 
395 int ad7293_get_offset(struct ad7293_dev *dev, enum ad7293_ch_type type,
396  unsigned int ch, uint16_t *offset);
397 
399 int ad7293_set_offset(struct ad7293_dev *dev, enum ad7293_ch_type type,
400  unsigned int ch, uint16_t offset);
401 
403 int ad7293_dac_write_raw(struct ad7293_dev *dev, unsigned int ch,
404  uint16_t raw);
405 
407 int ad7293_ch_read_raw(struct ad7293_dev *dev, enum ad7293_ch_type type,
408  unsigned int ch, uint16_t *raw);
409 
411 int ad7293_soft_reset(struct ad7293_dev *dev);
412 
414 int ad7293_reset(struct ad7293_dev *dev);
415 
417 int ad7293_init(struct ad7293_dev **device,
418  struct ad7293_init_param *init_param);
419 
421 int ad7293_remove(struct ad7293_dev *dev);
422 
423 #endif /* AD7293_H_ */
ad7293_remove
int ad7293_remove(struct ad7293_dev *dev)
AD7293 Resources Deallocation.
Definition: ad7293.c:521
no_os_put_unaligned_be16
void no_os_put_unaligned_be16(uint16_t val, uint8_t *buf)
ad7293_reset
int ad7293_reset(struct ad7293_dev *dev)
Perform both hardware and software reset.
Definition: ad7293.c:443
no_os_gpio_init_param
Structure holding the parameters for GPIO initialization.
Definition: no_os_gpio.h:85
ad7293_isense_get_gain
int ad7293_isense_get_gain(struct ad7293_dev *dev, unsigned int ch, uint16_t *gain)
Get the gain value for ISENSE channels.
Definition: ad7293.c:237
AD7293_REG_VINX_RANGE1
#define AD7293_REG_VINX_RANGE1
Definition: ad7293.h:111
AD7293_REG_ISENSE_0
#define AD7293_REG_ISENSE_0
Definition: ad7293.h:78
AD7293_REG_VINX_RANGE_SET_CH_MSK
#define AD7293_REG_VINX_RANGE_SET_CH_MSK(x, ch)
Definition: ad7293.h:326
AD7293_REG_VINX_RANGE_GET_CH_MSK
#define AD7293_REG_VINX_RANGE_GET_CH_MSK(x, ch)
Definition: ad7293.h:325
ad7293_set_offset
int ad7293_set_offset(struct ad7293_dev *dev, enum ad7293_ch_type type, unsigned int ch, uint16_t offset)
Set offset value for specific channel and channel type.
Definition: ad7293.c:296
AD7293_REG_VIN0
#define AD7293_REG_VIN0
Definition: ad7293.h:71
AD7293_REG_UNI_VOUT0_OFFSET
#define AD7293_REG_UNI_VOUT0_OFFSET
Definition: ad7293.h:270
ad7293_ch_read_raw
int ad7293_ch_read_raw(struct ad7293_dev *dev, enum ad7293_ch_type type, unsigned int ch, uint16_t *raw)
Read raw value for specific channel and channel type.
Definition: ad7293.c:354
no_os_spi_write_and_read
int32_t no_os_spi_write_and_read(struct no_os_spi_desc *desc, uint8_t *data, uint16_t bytes_number)
Write and read data to/from SPI.
Definition: no_os_spi.c:83
ad7293_adc_get_range
int ad7293_adc_get_range(struct ad7293_dev *dev, unsigned int ch, uint16_t *range)
Get the range value for ADC channels.
Definition: ad7293.c:171
AD7293_REG_TSENSE_INT
#define AD7293_REG_TSENSE_INT
Definition: ad7293.h:75
ad7293_init_param
AD7293 Initialization Parameters structure.
Definition: ad7293.h:358
no_os_spi.h
Header file of SPI Interface.
AD7293_ADC_TSENSE
@ AD7293_ADC_TSENSE
Definition: ad7293.h:338
AD7293_SOFT_RESET_VAL
#define AD7293_SOFT_RESET_VAL
Definition: ad7293.h:328
ad7293_init_param::gpio_reset
struct no_os_gpio_init_param * gpio_reset
Definition: ad7293.h:361
ad7293_isense_set_gain
int ad7293_isense_set_gain(struct ad7293_dev *dev, unsigned int ch, uint16_t gain)
Set the gain value for ISENSE channels.
Definition: ad7293.c:221
ad7293.h
Header file for ad7293 Driver.
ad7293_adc_set_range
int ad7293_adc_set_range(struct ad7293_dev *dev, unsigned int ch, uint16_t range)
Set the range value for ADC channels.
Definition: ad7293.c:199
AD7293_CHIP_ID
#define AD7293_CHIP_ID
Definition: ad7293.h:327
AD7293_REG_CONV_CMD
#define AD7293_REG_CONV_CMD
Definition: ad7293.h:64
no_os_delay.h
Header file of Delay functions.
AD7293_REG_VINX_RANGE0
#define AD7293_REG_VINX_RANGE0
Definition: ad7293.h:110
ad7293_set_offset
int ad7293_set_offset(struct ad7293_dev *dev, enum ad7293_ch_type type, unsigned int ch, uint16_t offset)
Set offset value for specific channel and channel type.
Definition: ad7293.c:296
device
Definition: ad9361_util.h:75
ad7293_spi_update_bits
int ad7293_spi_update_bits(struct ad7293_dev *dev, unsigned int reg, uint16_t mask, uint16_t val)
Update AD7293 register.
Definition: ad7293.c:149
ad7293_spi_read
int ad7293_spi_read(struct ad7293_dev *dev, unsigned int reg, uint16_t *val)
Reads data from AD7293 over SPI.
Definition: ad7293.c:84
NO_OS_GPIO_HIGH
@ NO_OS_GPIO_HIGH
Definition: no_os_gpio.h:123
AD7293_PAGE_ADDR_MSK
#define AD7293_PAGE_ADDR_MSK
Definition: ad7293.h:58
AD7293_ADC_ISENSE
@ AD7293_ADC_ISENSE
Definition: ad7293.h:339
NO_OS_GPIO_LOW
@ NO_OS_GPIO_LOW
Definition: no_os_gpio.h:121
ad7293_spi_write
int ad7293_spi_write(struct ad7293_dev *dev, unsigned int reg, uint16_t val)
Writes data to AD7293 over SPI.
Definition: ad7293.c:119
ad7293_dev
AD7293 Device Descriptor.
Definition: ad7293.h:347
AD7293_REG_ADDR_MSK
#define AD7293_REG_ADDR_MSK
Definition: ad7293.h:322
no_os_mdelay
void no_os_mdelay(uint32_t msecs)
Wait until msecs milliseconds passed.
Definition: aducm3029_delay.c:132
AD7293_SOFT_RESET_CLR_VAL
#define AD7293_SOFT_RESET_CLR_VAL
Definition: ad7293.h:329
no_os_field_prep
uint32_t no_os_field_prep(uint32_t mask, uint32_t val)
AD7293_CONV_CMD_VAL
#define AD7293_CONV_CMD_VAL
Definition: ad7293.h:330
no_os_error.h
Error codes definition.
AD7293_ADC_VINX
@ AD7293_ADC_VINX
Definition: ad7293.h:337
AD7293_REG_ISENSE0_OFFSET
#define AD7293_REG_ISENSE0_OFFSET
Definition: ad7293.h:266
AD7293_DAC
@ AD7293_DAC
Definition: ad7293.h:340
ad7293_remove
int ad7293_remove(struct ad7293_dev *dev)
AD7293 Resources Deallocation.
Definition: ad7293.c:521
ad7293_reset
int ad7293_reset(struct ad7293_dev *dev)
Perform both hardware and software reset.
Definition: ad7293.c:443
ad7293_isense_get_gain
int ad7293_isense_get_gain(struct ad7293_dev *dev, unsigned int ch, uint16_t *gain)
Get the gain value for ISENSE channels.
Definition: ad7293.c:237
no_os_gpio_remove
int32_t no_os_gpio_remove(struct no_os_gpio_desc *desc)
Free the resources allocated by no_os_gpio_get().
Definition: no_os_gpio.c:95
no_os_spi_desc
Structure holding SPI descriptor.
Definition: no_os_spi.h:134
ad7293_spi_update_bits
int ad7293_spi_update_bits(struct ad7293_dev *dev, unsigned int reg, uint16_t mask, uint16_t val)
Update AD7293 register.
Definition: ad7293.c:149
ad7293_dev::page_select
uint8_t page_select
Definition: ad7293.h:351
no_os_gpio_desc
Structure holding the GPIO descriptor.
Definition: no_os_gpio.h:102
ad7293_ch_read_raw
int ad7293_ch_read_raw(struct ad7293_dev *dev, enum ad7293_ch_type type, unsigned int ch, uint16_t *raw)
Read raw value for specific channel and channel type.
Definition: ad7293.c:354
AD7293_REG_TSENSE_BG_EN
#define AD7293_REG_TSENSE_BG_EN
Definition: ad7293.h:116
ad7293_soft_reset
int ad7293_soft_reset(struct ad7293_dev *dev)
Perform software reset.
Definition: ad7293.c:427
ad7293_adc_get_range
int ad7293_adc_get_range(struct ad7293_dev *dev, unsigned int ch, uint16_t *range)
Get the range value for ADC channels.
Definition: ad7293.c:171
ad7293_init_param::spi_init
struct no_os_spi_init_param * spi_init
Definition: ad7293.h:360
AD7293_REG_SOFT_RESET
#define AD7293_REG_SOFT_RESET
Definition: ad7293.h:68
ad7293_isense_set_gain
int ad7293_isense_set_gain(struct ad7293_dev *dev, unsigned int ch, uint16_t gain)
Set the gain value for ISENSE channels.
Definition: ad7293.c:221
AD7293_BUFF_SIZE_BYTES
#define AD7293_BUFF_SIZE_BYTES
Definition: ad7293.h:321
AD7293_REG_DAC_EN
#define AD7293_REG_DAC_EN
Definition: ad7293.h:66
AD7293_REG_ISENSE_GAIN
#define AD7293_REG_ISENSE_GAIN
Definition: ad7293.h:118
no_os_field_get
uint32_t no_os_field_get(uint32_t mask, uint32_t word)
ad7293_dac_write_raw
int ad7293_dac_write_raw(struct ad7293_dev *dev, unsigned int ch, uint16_t raw)
Set the DAC output raw value.
Definition: ad7293.c:332
NO_OS_BIT
#define NO_OS_BIT(x)
Definition: no_os_util.h:51
AD7293_REG_UNI_VOUT0
#define AD7293_REG_UNI_VOUT0
Definition: ad7293.h:82
ad7293_get_offset
int ad7293_get_offset(struct ad7293_dev *dev, enum ad7293_ch_type type, unsigned int ch, uint16_t *offset)
Set offset value for specific channel and channel type.
Definition: ad7293.c:259
ad7293_soft_reset
int ad7293_soft_reset(struct ad7293_dev *dev)
Perform software reset.
Definition: ad7293.c:427
ad7293_dac_write_raw
int ad7293_dac_write_raw(struct ad7293_dev *dev, unsigned int ch, uint16_t raw)
Set the DAC output raw value.
Definition: ad7293.c:332
no_os_udelay
void no_os_udelay(uint32_t usecs)
Wait until usecs microseconds passed.
Definition: aducm3029_delay.c:120
ad7293_dev::gpio_reset
struct no_os_gpio_desc * gpio_reset
Definition: ad7293.h:350
ad7293_spi_read
int ad7293_spi_read(struct ad7293_dev *dev, unsigned int reg, uint16_t *val)
Reads data from AD7293 over SPI.
Definition: ad7293.c:84
ad7293_init
int ad7293_init(struct ad7293_dev **device, struct ad7293_init_param *init_param)
Initializes the ad7293.
Definition: ad7293.c:466
AD7293_REG_DATA_RAW_MSK
#define AD7293_REG_DATA_RAW_MSK
Definition: ad7293.h:324
init_param
struct ad7616_init_param init_param
Definition: ad7616_sdz.c:96
AD7293_REG_VIN0_OFFSET
#define AD7293_REG_VIN0_OFFSET
Definition: ad7293.h:259
ad7293_init
int ad7293_init(struct ad7293_dev **device, struct ad7293_init_param *init_param)
Initializes the ad7293.
Definition: ad7293.c:466
AD7293_REG_ISENSE_BG_EN
#define AD7293_REG_ISENSE_BG_EN
Definition: ad7293.h:117
no_os_spi_remove
int32_t no_os_spi_remove(struct no_os_spi_desc *desc)
Free the resources allocated by no_os_spi_init().
Definition: no_os_spi.c:71
ad7293_adc_set_range
int ad7293_adc_set_range(struct ad7293_dev *dev, unsigned int ch, uint16_t range)
Set the range value for ADC channels.
Definition: ad7293.c:199
AD7293_REG_TSENSE_INT_OFFSET
#define AD7293_REG_TSENSE_INT_OFFSET
Definition: ad7293.h:263
no_os_gpio.h
Header file of GPIO Interface.
ad7293_spi_write
int ad7293_spi_write(struct ad7293_dev *dev, unsigned int reg, uint16_t val)
Writes data to AD7293 over SPI.
Definition: ad7293.c:119
AD7293_REG_ISENSEX_TSENSEX_SEQ
#define AD7293_REG_ISENSEX_TSENSEX_SEQ
Definition: ad7293.h:133
ad7293_get_offset
int ad7293_get_offset(struct ad7293_dev *dev, enum ad7293_ch_type type, unsigned int ch, uint16_t *offset)
Set offset value for specific channel and channel type.
Definition: ad7293.c:259
no_os_spi_init
int32_t no_os_spi_init(struct no_os_spi_desc **desc, const struct no_os_spi_init_param *param)
Initialize the SPI communication peripheral.
Definition: no_os_spi.c:51
no_os_get_unaligned_be16
uint16_t no_os_get_unaligned_be16(uint8_t *buf)
AD7293_REG_PAGE_SELECT
#define AD7293_REG_PAGE_SELECT
Definition: ad7293.h:63
no_os_util.h
Header file of utility functions.
ad7293_ch_type
ad7293_ch_type
AD7293 Channel Type.
Definition: ad7293.h:336
ad7293_dev::spi_desc
struct no_os_spi_desc * spi_desc
Definition: ad7293.h:349
AD7293_TRANSF_LEN_MSK
#define AD7293_TRANSF_LEN_MSK
Definition: ad7293.h:320
no_os_gpio_direction_output
int32_t no_os_gpio_direction_output(struct no_os_gpio_desc *desc, uint8_t value)
Enable the output direction of the specified GPIO.
Definition: no_os_gpio.c:124
AD7293_READ
#define AD7293_READ
Definition: ad7293.h:319
AD7293_REG_VINX_SEQ
#define AD7293_REG_VINX_SEQ
Definition: ad7293.h:132
AD7293_REG_DEVICE_ID
#define AD7293_REG_DEVICE_ID
Definition: ad7293.h:67
chip_id
chip_id
Definition: ad9172.h:57
no_os_spi_init_param
Structure holding the parameters for SPI initialization.
Definition: no_os_spi.h:112
no_os_gpio_get_optional
int32_t no_os_gpio_get_optional(struct no_os_gpio_desc **desc, const struct no_os_gpio_init_param *param)
Get the value of an optional GPIO.
Definition: no_os_gpio.c:75