1 //----------------------------------------------------------------------------- 2 // Copyright 2012 (c) Silicon Laboratories Inc. 3 // 4 // SPDX-License-Identifier: Zlib 5 // 6 // This siHAL software is provided 'as-is', without any express or implied 7 // warranty. In no event will the authors be held liable for any damages 8 // arising from the use of this software. 9 // 10 // Permission is granted to anyone to use this software for any purpose, 11 // including commercial applications, and to alter it and redistribute it 12 // freely, subject to the following restrictions: 13 // 14 // 1. The origin of this software must not be misrepresented; you must not 15 // claim that you wrote the original software. If you use this software 16 // in a product, an acknowledgment in the product documentation would be 17 // appreciated but is not required. 18 // 2. Altered source versions must be plainly marked as such, and must not be 19 // misrepresented as being the original software. 20 // 3. This notice may not be removed or altered from any source distribution. 21 //----------------------------------------------------------------------------- 22 // 23 // Script: 0.61 24 // Version: 1 25 26 #ifndef __SI32_IDAC_A_REGISTERS_H__ 27 #define __SI32_IDAC_A_REGISTERS_H__ 28 29 #include <stdint.h> 30 31 #ifdef __cplusplus 32 extern "C" { 33 #endif 34 35 struct SI32_IDAC_A_CONTROL_Struct 36 { 37 union 38 { 39 struct 40 { 41 // Output Update Trigger 42 volatile uint32_t OUPDT: 3; 43 // Edge Trigger Source Select 44 volatile uint32_t ETRIG: 3; 45 // Output Mode 46 volatile uint32_t OUTMD: 2; 47 // Data Input Format 48 volatile uint32_t INFMT: 2; 49 // DMA Run 50 volatile uint32_t DMARUN: 1; 51 // Data Justification Select 52 volatile uint32_t JSEL: 1; 53 // Data Buffer Reset 54 volatile uint32_t BUFRESET: 1; 55 // Trigger Source Inhibit 56 volatile uint32_t TRIGINH: 1; 57 uint32_t reserved0: 2; 58 // Wrap Mode Enable 59 volatile uint32_t WRAPEN: 1; 60 uint32_t reserved1: 3; 61 // FIFO Overrun Interrupt Enable 62 volatile uint32_t ORIEN: 1; 63 // FIFO Underrun Interrupt Enable 64 volatile uint32_t URIEN: 1; 65 // FIFO Went Empty Interrupt Enable 66 volatile uint32_t WEIEN: 1; 67 uint32_t reserved2: 6; 68 // IDAC Debug Mode 69 volatile uint32_t DBGMD: 1; 70 // Load Resistor Enable 71 volatile uint32_t LOADEN: 1; 72 // IDAC Enable 73 volatile uint32_t IDACEN: 1; 74 }; 75 volatile uint32_t U32; 76 }; 77 }; 78 79 #define SI32_IDAC_A_CONTROL_OUPDT_MASK 0x00000007 80 #define SI32_IDAC_A_CONTROL_OUPDT_SHIFT 0 81 // The IDAC output updates using the DACnT8 trigger source. 82 #define SI32_IDAC_A_CONTROL_OUPDT_DACNT8_VALUE 0 83 #define SI32_IDAC_A_CONTROL_OUPDT_DACNT8_U32 \ 84 (SI32_IDAC_A_CONTROL_OUPDT_DACNT8_VALUE << SI32_IDAC_A_CONTROL_OUPDT_SHIFT) 85 // The IDAC output updates using the DACnT9 trigger source. 86 #define SI32_IDAC_A_CONTROL_OUPDT_DACNT9_VALUE 1 87 #define SI32_IDAC_A_CONTROL_OUPDT_DACNT9_U32 \ 88 (SI32_IDAC_A_CONTROL_OUPDT_DACNT9_VALUE << SI32_IDAC_A_CONTROL_OUPDT_SHIFT) 89 // The IDAC output updates using the DACnT10 trigger source. 90 #define SI32_IDAC_A_CONTROL_OUPDT_DACNT10_VALUE 2 91 #define SI32_IDAC_A_CONTROL_OUPDT_DACNT10_U32 \ 92 (SI32_IDAC_A_CONTROL_OUPDT_DACNT10_VALUE << SI32_IDAC_A_CONTROL_OUPDT_SHIFT) 93 // The IDAC output updates using the DACnT11 trigger source. 94 #define SI32_IDAC_A_CONTROL_OUPDT_DACNT11_VALUE 3 95 #define SI32_IDAC_A_CONTROL_OUPDT_DACNT11_U32 \ 96 (SI32_IDAC_A_CONTROL_OUPDT_DACNT11_VALUE << SI32_IDAC_A_CONTROL_OUPDT_SHIFT) 97 // The IDAC output updates on the rising edge of the trigger source selected by 98 // ETRIG. 99 #define SI32_IDAC_A_CONTROL_OUPDT_DACNT12_VALUE 4 100 #define SI32_IDAC_A_CONTROL_OUPDT_DACNT12_U32 \ 101 (SI32_IDAC_A_CONTROL_OUPDT_DACNT12_VALUE << SI32_IDAC_A_CONTROL_OUPDT_SHIFT) 102 // The IDAC output updates on the falling edge of the trigger source selected by 103 // ETRIG. 104 #define SI32_IDAC_A_CONTROL_OUPDT_DACNT13_VALUE 5 105 #define SI32_IDAC_A_CONTROL_OUPDT_DACNT13_U32 \ 106 (SI32_IDAC_A_CONTROL_OUPDT_DACNT13_VALUE << SI32_IDAC_A_CONTROL_OUPDT_SHIFT) 107 // The IDAC output updates on any edge of the trigger source selected by ETRIG. 108 #define SI32_IDAC_A_CONTROL_OUPDT_DACNT14_VALUE 6 109 #define SI32_IDAC_A_CONTROL_OUPDT_DACNT14_U32 \ 110 (SI32_IDAC_A_CONTROL_OUPDT_DACNT14_VALUE << SI32_IDAC_A_CONTROL_OUPDT_SHIFT) 111 // The IDAC output updates on write to DATA register (On Demand). 112 #define SI32_IDAC_A_CONTROL_OUPDT_DACNT15_VALUE 7 113 #define SI32_IDAC_A_CONTROL_OUPDT_DACNT15_U32 \ 114 (SI32_IDAC_A_CONTROL_OUPDT_DACNT15_VALUE << SI32_IDAC_A_CONTROL_OUPDT_SHIFT) 115 116 #define SI32_IDAC_A_CONTROL_ETRIG_MASK 0x00000038 117 #define SI32_IDAC_A_CONTROL_ETRIG_SHIFT 3 118 // Select DACnT0 as the IDAC external trigger source. 119 #define SI32_IDAC_A_CONTROL_ETRIG_DACNT0_VALUE 0 120 #define SI32_IDAC_A_CONTROL_ETRIG_DACNT0_U32 \ 121 (SI32_IDAC_A_CONTROL_ETRIG_DACNT0_VALUE << SI32_IDAC_A_CONTROL_ETRIG_SHIFT) 122 // Select DACnT1 as the IDAC external trigger source. 123 #define SI32_IDAC_A_CONTROL_ETRIG_DACNT1_VALUE 1 124 #define SI32_IDAC_A_CONTROL_ETRIG_DACNT1_U32 \ 125 (SI32_IDAC_A_CONTROL_ETRIG_DACNT1_VALUE << SI32_IDAC_A_CONTROL_ETRIG_SHIFT) 126 // Select DACnT2 as the IDAC external trigger source. 127 #define SI32_IDAC_A_CONTROL_ETRIG_DACNT2_VALUE 2 128 #define SI32_IDAC_A_CONTROL_ETRIG_DACNT2_U32 \ 129 (SI32_IDAC_A_CONTROL_ETRIG_DACNT2_VALUE << SI32_IDAC_A_CONTROL_ETRIG_SHIFT) 130 // Select DACnT3 as the IDAC external trigger source. 131 #define SI32_IDAC_A_CONTROL_ETRIG_DACNT3_VALUE 3 132 #define SI32_IDAC_A_CONTROL_ETRIG_DACNT3_U32 \ 133 (SI32_IDAC_A_CONTROL_ETRIG_DACNT3_VALUE << SI32_IDAC_A_CONTROL_ETRIG_SHIFT) 134 // Select DACnT4 as the IDAC external trigger source. 135 #define SI32_IDAC_A_CONTROL_ETRIG_DACNT4_VALUE 4 136 #define SI32_IDAC_A_CONTROL_ETRIG_DACNT4_U32 \ 137 (SI32_IDAC_A_CONTROL_ETRIG_DACNT4_VALUE << SI32_IDAC_A_CONTROL_ETRIG_SHIFT) 138 // Select DACnT5 as the IDAC external trigger source. 139 #define SI32_IDAC_A_CONTROL_ETRIG_DACNT5_VALUE 5 140 #define SI32_IDAC_A_CONTROL_ETRIG_DACNT5_U32 \ 141 (SI32_IDAC_A_CONTROL_ETRIG_DACNT5_VALUE << SI32_IDAC_A_CONTROL_ETRIG_SHIFT) 142 // Select DACnT6 as the IDAC external trigger source. 143 #define SI32_IDAC_A_CONTROL_ETRIG_DACNT6_VALUE 6 144 #define SI32_IDAC_A_CONTROL_ETRIG_DACNT6_U32 \ 145 (SI32_IDAC_A_CONTROL_ETRIG_DACNT6_VALUE << SI32_IDAC_A_CONTROL_ETRIG_SHIFT) 146 // Select DACnT7 as the IDAC external trigger source. 147 #define SI32_IDAC_A_CONTROL_ETRIG_DACNT7_VALUE 7 148 #define SI32_IDAC_A_CONTROL_ETRIG_DACNT7_U32 \ 149 (SI32_IDAC_A_CONTROL_ETRIG_DACNT7_VALUE << SI32_IDAC_A_CONTROL_ETRIG_SHIFT) 150 151 #define SI32_IDAC_A_CONTROL_OUTMD_MASK 0x000000C0 152 #define SI32_IDAC_A_CONTROL_OUTMD_SHIFT 6 153 // The full-scale output current is 0.5 mA. 154 #define SI32_IDAC_A_CONTROL_OUTMD_0P5_MA_VALUE 0 155 #define SI32_IDAC_A_CONTROL_OUTMD_0P5_MA_U32 \ 156 (SI32_IDAC_A_CONTROL_OUTMD_0P5_MA_VALUE << SI32_IDAC_A_CONTROL_OUTMD_SHIFT) 157 // The full-scale output current is 1 mA. 158 #define SI32_IDAC_A_CONTROL_OUTMD_1_MA_VALUE 1 159 #define SI32_IDAC_A_CONTROL_OUTMD_1_MA_U32 \ 160 (SI32_IDAC_A_CONTROL_OUTMD_1_MA_VALUE << SI32_IDAC_A_CONTROL_OUTMD_SHIFT) 161 // The full-scale output current is 2 mA. 162 #define SI32_IDAC_A_CONTROL_OUTMD_2_MA_VALUE 2 163 #define SI32_IDAC_A_CONTROL_OUTMD_2_MA_U32 \ 164 (SI32_IDAC_A_CONTROL_OUTMD_2_MA_VALUE << SI32_IDAC_A_CONTROL_OUTMD_SHIFT) 165 166 #define SI32_IDAC_A_CONTROL_INFMT_MASK 0x00000300 167 #define SI32_IDAC_A_CONTROL_INFMT_SHIFT 8 168 // Writes are interpreted as one 10-bit sample. 169 #define SI32_IDAC_A_CONTROL_INFMT_1_10_BIT_VALUE 0 170 #define SI32_IDAC_A_CONTROL_INFMT_1_10_BIT_U32 \ 171 (SI32_IDAC_A_CONTROL_INFMT_1_10_BIT_VALUE << SI32_IDAC_A_CONTROL_INFMT_SHIFT) 172 // Writes are interpreted as two 10-bit samples. 173 #define SI32_IDAC_A_CONTROL_INFMT_2_10_BIT_VALUE 1 174 #define SI32_IDAC_A_CONTROL_INFMT_2_10_BIT_U32 \ 175 (SI32_IDAC_A_CONTROL_INFMT_2_10_BIT_VALUE << SI32_IDAC_A_CONTROL_INFMT_SHIFT) 176 // Writes are interpreted as four 8-bit samples. 177 #define SI32_IDAC_A_CONTROL_INFMT_4_8_BIT_VALUE 2 178 #define SI32_IDAC_A_CONTROL_INFMT_4_8_BIT_U32 \ 179 (SI32_IDAC_A_CONTROL_INFMT_4_8_BIT_VALUE << SI32_IDAC_A_CONTROL_INFMT_SHIFT) 180 181 #define SI32_IDAC_A_CONTROL_DMARUN_MASK 0x00000400 182 #define SI32_IDAC_A_CONTROL_DMARUN_SHIFT 10 183 // Read: No DMA operations are occurring or the DMA is done. Write: No effect. 184 #define SI32_IDAC_A_CONTROL_DMARUN_DISABLED_VALUE 0 185 #define SI32_IDAC_A_CONTROL_DMARUN_DISABLED_U32 \ 186 (SI32_IDAC_A_CONTROL_DMARUN_DISABLED_VALUE << SI32_IDAC_A_CONTROL_DMARUN_SHIFT) 187 // Read: A DMA operation is currently in progress. Write: Start a DMA operation. 188 #define SI32_IDAC_A_CONTROL_DMARUN_ENABLED_VALUE 1 189 #define SI32_IDAC_A_CONTROL_DMARUN_ENABLED_U32 \ 190 (SI32_IDAC_A_CONTROL_DMARUN_ENABLED_VALUE << SI32_IDAC_A_CONTROL_DMARUN_SHIFT) 191 192 #define SI32_IDAC_A_CONTROL_JSEL_MASK 0x00000800 193 #define SI32_IDAC_A_CONTROL_JSEL_SHIFT 11 194 // Data is right-justified. 195 #define SI32_IDAC_A_CONTROL_JSEL_RIGHT_VALUE 0 196 #define SI32_IDAC_A_CONTROL_JSEL_RIGHT_U32 \ 197 (SI32_IDAC_A_CONTROL_JSEL_RIGHT_VALUE << SI32_IDAC_A_CONTROL_JSEL_SHIFT) 198 // Data is left-justified. 199 #define SI32_IDAC_A_CONTROL_JSEL_LEFT_VALUE 1 200 #define SI32_IDAC_A_CONTROL_JSEL_LEFT_U32 \ 201 (SI32_IDAC_A_CONTROL_JSEL_LEFT_VALUE << SI32_IDAC_A_CONTROL_JSEL_SHIFT) 202 203 #define SI32_IDAC_A_CONTROL_BUFRESET_MASK 0x00001000 204 #define SI32_IDAC_A_CONTROL_BUFRESET_SHIFT 12 205 // Initiate a data buffer reset. 206 #define SI32_IDAC_A_CONTROL_BUFRESET_RESET_VALUE 1 207 #define SI32_IDAC_A_CONTROL_BUFRESET_RESET_U32 \ 208 (SI32_IDAC_A_CONTROL_BUFRESET_RESET_VALUE << SI32_IDAC_A_CONTROL_BUFRESET_SHIFT) 209 210 #define SI32_IDAC_A_CONTROL_TRIGINH_MASK 0x00002000 211 #define SI32_IDAC_A_CONTROL_TRIGINH_SHIFT 13 212 // The selected trigger source will cause the IDAC output to update. 213 #define SI32_IDAC_A_CONTROL_TRIGINH_INACTIVE_VALUE 0 214 #define SI32_IDAC_A_CONTROL_TRIGINH_INACTIVE_U32 \ 215 (SI32_IDAC_A_CONTROL_TRIGINH_INACTIVE_VALUE << SI32_IDAC_A_CONTROL_TRIGINH_SHIFT) 216 // The selected trigger source will not update the IDAC output, except for On- 217 // Demand DATA writes. 218 #define SI32_IDAC_A_CONTROL_TRIGINH_ACTIVE_VALUE 1 219 #define SI32_IDAC_A_CONTROL_TRIGINH_ACTIVE_U32 \ 220 (SI32_IDAC_A_CONTROL_TRIGINH_ACTIVE_VALUE << SI32_IDAC_A_CONTROL_TRIGINH_SHIFT) 221 222 #define SI32_IDAC_A_CONTROL_WRAPEN_MASK 0x00010000 223 #define SI32_IDAC_A_CONTROL_WRAPEN_SHIFT 16 224 // The IDAC will not wrap when it reaches the end of the data buffer. 225 #define SI32_IDAC_A_CONTROL_WRAPEN_DISABLED_VALUE 0 226 #define SI32_IDAC_A_CONTROL_WRAPEN_DISABLED_U32 \ 227 (SI32_IDAC_A_CONTROL_WRAPEN_DISABLED_VALUE << SI32_IDAC_A_CONTROL_WRAPEN_SHIFT) 228 // The IDAC will cycle through the data buffer contents. 229 #define SI32_IDAC_A_CONTROL_WRAPEN_ENABLED_VALUE 1 230 #define SI32_IDAC_A_CONTROL_WRAPEN_ENABLED_U32 \ 231 (SI32_IDAC_A_CONTROL_WRAPEN_ENABLED_VALUE << SI32_IDAC_A_CONTROL_WRAPEN_SHIFT) 232 233 #define SI32_IDAC_A_CONTROL_ORIEN_MASK 0x00100000 234 #define SI32_IDAC_A_CONTROL_ORIEN_SHIFT 20 235 // Disable the FIFO overrun interrupt (ORI). 236 #define SI32_IDAC_A_CONTROL_ORIEN_DISABLED_VALUE 0 237 #define SI32_IDAC_A_CONTROL_ORIEN_DISABLED_U32 \ 238 (SI32_IDAC_A_CONTROL_ORIEN_DISABLED_VALUE << SI32_IDAC_A_CONTROL_ORIEN_SHIFT) 239 // Enable the FIFO overrun interrupt (ORI). 240 #define SI32_IDAC_A_CONTROL_ORIEN_ENABLED_VALUE 1 241 #define SI32_IDAC_A_CONTROL_ORIEN_ENABLED_U32 \ 242 (SI32_IDAC_A_CONTROL_ORIEN_ENABLED_VALUE << SI32_IDAC_A_CONTROL_ORIEN_SHIFT) 243 244 #define SI32_IDAC_A_CONTROL_URIEN_MASK 0x00200000 245 #define SI32_IDAC_A_CONTROL_URIEN_SHIFT 21 246 // Disable the FIFO underrun interrupt (URI). 247 #define SI32_IDAC_A_CONTROL_URIEN_DISABLED_VALUE 0 248 #define SI32_IDAC_A_CONTROL_URIEN_DISABLED_U32 \ 249 (SI32_IDAC_A_CONTROL_URIEN_DISABLED_VALUE << SI32_IDAC_A_CONTROL_URIEN_SHIFT) 250 // Enable the FIFO underrun interrupt (URI). 251 #define SI32_IDAC_A_CONTROL_URIEN_ENABLED_VALUE 1 252 #define SI32_IDAC_A_CONTROL_URIEN_ENABLED_U32 \ 253 (SI32_IDAC_A_CONTROL_URIEN_ENABLED_VALUE << SI32_IDAC_A_CONTROL_URIEN_SHIFT) 254 255 #define SI32_IDAC_A_CONTROL_WEIEN_MASK 0x00400000 256 #define SI32_IDAC_A_CONTROL_WEIEN_SHIFT 22 257 // Disable the FIFO went empty interrupt (WEI). 258 #define SI32_IDAC_A_CONTROL_WEIEN_DISABLED_VALUE 0 259 #define SI32_IDAC_A_CONTROL_WEIEN_DISABLED_U32 \ 260 (SI32_IDAC_A_CONTROL_WEIEN_DISABLED_VALUE << SI32_IDAC_A_CONTROL_WEIEN_SHIFT) 261 // Enable the FIFO went empty interrupt (WEI). 262 #define SI32_IDAC_A_CONTROL_WEIEN_ENABLED_VALUE 1 263 #define SI32_IDAC_A_CONTROL_WEIEN_ENABLED_U32 \ 264 (SI32_IDAC_A_CONTROL_WEIEN_ENABLED_VALUE << SI32_IDAC_A_CONTROL_WEIEN_SHIFT) 265 266 #define SI32_IDAC_A_CONTROL_DBGMD_MASK 0x20000000 267 #define SI32_IDAC_A_CONTROL_DBGMD_SHIFT 29 268 // The IDAC module will continue to operate while the core is halted in debug mode. 269 #define SI32_IDAC_A_CONTROL_DBGMD_RUN_VALUE 0 270 #define SI32_IDAC_A_CONTROL_DBGMD_RUN_U32 \ 271 (SI32_IDAC_A_CONTROL_DBGMD_RUN_VALUE << SI32_IDAC_A_CONTROL_DBGMD_SHIFT) 272 // A debug breakpoint will cause the IDAC module to halt (ignore update triggers). 273 #define SI32_IDAC_A_CONTROL_DBGMD_HALT_VALUE 1 274 #define SI32_IDAC_A_CONTROL_DBGMD_HALT_U32 \ 275 (SI32_IDAC_A_CONTROL_DBGMD_HALT_VALUE << SI32_IDAC_A_CONTROL_DBGMD_SHIFT) 276 277 #define SI32_IDAC_A_CONTROL_LOADEN_MASK 0x40000000 278 #define SI32_IDAC_A_CONTROL_LOADEN_SHIFT 30 279 // Disable the internal load resistor. 280 #define SI32_IDAC_A_CONTROL_LOADEN_DISABLED_VALUE 0 281 #define SI32_IDAC_A_CONTROL_LOADEN_DISABLED_U32 \ 282 (SI32_IDAC_A_CONTROL_LOADEN_DISABLED_VALUE << SI32_IDAC_A_CONTROL_LOADEN_SHIFT) 283 // Enable the internal load resistor. 284 #define SI32_IDAC_A_CONTROL_LOADEN_ENABLED_VALUE 1 285 #define SI32_IDAC_A_CONTROL_LOADEN_ENABLED_U32 \ 286 (SI32_IDAC_A_CONTROL_LOADEN_ENABLED_VALUE << SI32_IDAC_A_CONTROL_LOADEN_SHIFT) 287 288 #define SI32_IDAC_A_CONTROL_IDACEN_MASK 0x80000000 289 #define SI32_IDAC_A_CONTROL_IDACEN_SHIFT 31 290 // Disable the IDAC. 291 #define SI32_IDAC_A_CONTROL_IDACEN_DISABLED_VALUE 0U 292 #define SI32_IDAC_A_CONTROL_IDACEN_DISABLED_U32 \ 293 (SI32_IDAC_A_CONTROL_IDACEN_DISABLED_VALUE << SI32_IDAC_A_CONTROL_IDACEN_SHIFT) 294 // Enable the IDAC. 295 #define SI32_IDAC_A_CONTROL_IDACEN_ENABLED_VALUE 1U 296 #define SI32_IDAC_A_CONTROL_IDACEN_ENABLED_U32 \ 297 (SI32_IDAC_A_CONTROL_IDACEN_ENABLED_VALUE << SI32_IDAC_A_CONTROL_IDACEN_SHIFT) 298 299 300 301 struct SI32_IDAC_A_DATA_Struct 302 { 303 union 304 { 305 struct 306 { 307 // Output Data 308 volatile uint32_t DATA_BITS; 309 }; 310 volatile uint32_t U32; 311 }; 312 }; 313 314 #define SI32_IDAC_A_DATA_DATA_MASK 0xFFFFFFFF 315 #define SI32_IDAC_A_DATA_DATA_SHIFT 0 316 317 318 319 struct SI32_IDAC_A_BUFSTATUS_Struct 320 { 321 union 322 { 323 struct 324 { 325 // FIFO Level 326 volatile uint32_t LEVEL: 3; 327 uint32_t reserved0: 1; 328 // FIFO Overrun Interrupt Flag 329 volatile uint32_t ORI: 1; 330 // FIFO Underrun Interrupt Flag 331 volatile uint32_t URI: 1; 332 // FIFO Went Empty Interrupt Flag 333 volatile uint32_t WEI: 1; 334 uint32_t reserved1: 25; 335 }; 336 volatile uint32_t U32; 337 }; 338 }; 339 340 #define SI32_IDAC_A_BUFSTATUS_LEVEL_MASK 0x00000007 341 #define SI32_IDAC_A_BUFSTATUS_LEVEL_SHIFT 0 342 // The data FIFO is empty. 343 #define SI32_IDAC_A_BUFSTATUS_LEVEL_EMPTY_VALUE 0 344 #define SI32_IDAC_A_BUFSTATUS_LEVEL_EMPTY_U32 \ 345 (SI32_IDAC_A_BUFSTATUS_LEVEL_EMPTY_VALUE << SI32_IDAC_A_BUFSTATUS_LEVEL_SHIFT) 346 // The data FIFO contains one word. 347 #define SI32_IDAC_A_BUFSTATUS_LEVEL_1WORD_VALUE 1 348 #define SI32_IDAC_A_BUFSTATUS_LEVEL_1WORD_U32 \ 349 (SI32_IDAC_A_BUFSTATUS_LEVEL_1WORD_VALUE << SI32_IDAC_A_BUFSTATUS_LEVEL_SHIFT) 350 // The data FIFO contains two words. 351 #define SI32_IDAC_A_BUFSTATUS_LEVEL_2WORDS_VALUE 2 352 #define SI32_IDAC_A_BUFSTATUS_LEVEL_2WORDS_U32 \ 353 (SI32_IDAC_A_BUFSTATUS_LEVEL_2WORDS_VALUE << SI32_IDAC_A_BUFSTATUS_LEVEL_SHIFT) 354 // The data FIFO contains three words. 355 #define SI32_IDAC_A_BUFSTATUS_LEVEL_3WORDS_VALUE 3 356 #define SI32_IDAC_A_BUFSTATUS_LEVEL_3WORDS_U32 \ 357 (SI32_IDAC_A_BUFSTATUS_LEVEL_3WORDS_VALUE << SI32_IDAC_A_BUFSTATUS_LEVEL_SHIFT) 358 // The data FIFO is full and contains four words. 359 #define SI32_IDAC_A_BUFSTATUS_LEVEL_4WORDS_VALUE 4 360 #define SI32_IDAC_A_BUFSTATUS_LEVEL_4WORDS_U32 \ 361 (SI32_IDAC_A_BUFSTATUS_LEVEL_4WORDS_VALUE << SI32_IDAC_A_BUFSTATUS_LEVEL_SHIFT) 362 363 #define SI32_IDAC_A_BUFSTATUS_ORI_MASK 0x00000010 364 #define SI32_IDAC_A_BUFSTATUS_ORI_SHIFT 4 365 // Read: A FIFO overrun has not occurred. Write: Clear the interrupt. 366 #define SI32_IDAC_A_BUFSTATUS_ORI_NOT_SET_VALUE 0 367 #define SI32_IDAC_A_BUFSTATUS_ORI_NOT_SET_U32 \ 368 (SI32_IDAC_A_BUFSTATUS_ORI_NOT_SET_VALUE << SI32_IDAC_A_BUFSTATUS_ORI_SHIFT) 369 // Read: A FIFO overrun occurred. Write: Force a FIFO overrun interrupt. 370 #define SI32_IDAC_A_BUFSTATUS_ORI_SET_VALUE 1 371 #define SI32_IDAC_A_BUFSTATUS_ORI_SET_U32 \ 372 (SI32_IDAC_A_BUFSTATUS_ORI_SET_VALUE << SI32_IDAC_A_BUFSTATUS_ORI_SHIFT) 373 374 #define SI32_IDAC_A_BUFSTATUS_URI_MASK 0x00000020 375 #define SI32_IDAC_A_BUFSTATUS_URI_SHIFT 5 376 // Read: A FIFO underrun has not occurred. Write: Clear the interrupt. 377 #define SI32_IDAC_A_BUFSTATUS_URI_NOT_SET_VALUE 0 378 #define SI32_IDAC_A_BUFSTATUS_URI_NOT_SET_U32 \ 379 (SI32_IDAC_A_BUFSTATUS_URI_NOT_SET_VALUE << SI32_IDAC_A_BUFSTATUS_URI_SHIFT) 380 // Read: A FIFO underrun occurred. Write: Force a FIFO underrun interrupt. 381 #define SI32_IDAC_A_BUFSTATUS_URI_SET_VALUE 1 382 #define SI32_IDAC_A_BUFSTATUS_URI_SET_U32 \ 383 (SI32_IDAC_A_BUFSTATUS_URI_SET_VALUE << SI32_IDAC_A_BUFSTATUS_URI_SHIFT) 384 385 #define SI32_IDAC_A_BUFSTATUS_WEI_MASK 0x00000040 386 #define SI32_IDAC_A_BUFSTATUS_WEI_SHIFT 6 387 // Read: A FIFO went empty condition has not occurred. Write: Clear the interrupt. 388 #define SI32_IDAC_A_BUFSTATUS_WEI_NOT_SET_VALUE 0 389 #define SI32_IDAC_A_BUFSTATUS_WEI_NOT_SET_U32 \ 390 (SI32_IDAC_A_BUFSTATUS_WEI_NOT_SET_VALUE << SI32_IDAC_A_BUFSTATUS_WEI_SHIFT) 391 // Read: The FIFO is empty. Write: Force a FIFO went empty interrupt. 392 #define SI32_IDAC_A_BUFSTATUS_WEI_SET_VALUE 1 393 #define SI32_IDAC_A_BUFSTATUS_WEI_SET_U32 \ 394 (SI32_IDAC_A_BUFSTATUS_WEI_SET_VALUE << SI32_IDAC_A_BUFSTATUS_WEI_SHIFT) 395 396 397 398 struct SI32_IDAC_A_BUFFER10_Struct 399 { 400 union 401 { 402 struct 403 { 404 // FIFO Buffer Entry 0 405 volatile uint16_t BUFFER0; 406 // FIFO Buffer Entry 1 407 volatile uint16_t BUFFER1; 408 }; 409 volatile uint32_t U32; 410 }; 411 }; 412 413 #define SI32_IDAC_A_BUFFER10_BUFFER0_MASK 0x0000FFFF 414 #define SI32_IDAC_A_BUFFER10_BUFFER0_SHIFT 0 415 416 #define SI32_IDAC_A_BUFFER10_BUFFER1_MASK 0xFFFF0000 417 #define SI32_IDAC_A_BUFFER10_BUFFER1_SHIFT 16 418 419 420 421 struct SI32_IDAC_A_BUFFER32_Struct 422 { 423 union 424 { 425 struct 426 { 427 // FIFO Buffer Entry 2 428 volatile uint16_t BUFFER2; 429 // FIFO Buffer Entry 3 430 volatile uint16_t BUFFER3; 431 }; 432 volatile uint32_t U32; 433 }; 434 }; 435 436 #define SI32_IDAC_A_BUFFER32_BUFFER2_MASK 0x0000FFFF 437 #define SI32_IDAC_A_BUFFER32_BUFFER2_SHIFT 0 438 439 #define SI32_IDAC_A_BUFFER32_BUFFER3_MASK 0xFFFF0000 440 #define SI32_IDAC_A_BUFFER32_BUFFER3_SHIFT 16 441 442 443 444 struct SI32_IDAC_A_GAINADJ_Struct 445 { 446 union 447 { 448 struct 449 { 450 // Output Current Gain Adjust 451 volatile uint32_t GAINADJ_BITS: 5; 452 uint32_t reserved0: 27; 453 }; 454 volatile uint32_t U32; 455 }; 456 }; 457 458 #define SI32_IDAC_A_GAINADJ_GAINADJ_MASK 0x0000001F 459 #define SI32_IDAC_A_GAINADJ_GAINADJ_SHIFT 0 460 461 462 463 typedef struct SI32_IDAC_A_Struct 464 { 465 struct SI32_IDAC_A_CONTROL_Struct CONTROL ; // Base Address + 0x0 466 volatile uint32_t CONTROL_SET; 467 volatile uint32_t CONTROL_CLR; 468 uint32_t reserved0; 469 struct SI32_IDAC_A_DATA_Struct DATA ; // Base Address + 0x10 470 uint32_t reserved1; 471 uint32_t reserved2; 472 uint32_t reserved3; 473 struct SI32_IDAC_A_BUFSTATUS_Struct BUFSTATUS ; // Base Address + 0x20 474 volatile uint32_t BUFSTATUS_SET; 475 volatile uint32_t BUFSTATUS_CLR; 476 uint32_t reserved4; 477 struct SI32_IDAC_A_BUFFER10_Struct BUFFER10 ; // Base Address + 0x30 478 uint32_t reserved5; 479 uint32_t reserved6; 480 uint32_t reserved7; 481 struct SI32_IDAC_A_BUFFER32_Struct BUFFER32 ; // Base Address + 0x40 482 uint32_t reserved8; 483 uint32_t reserved9; 484 uint32_t reserved10; 485 struct SI32_IDAC_A_GAINADJ_Struct GAINADJ ; // Base Address + 0x50 486 uint32_t reserved11; 487 uint32_t reserved12; 488 uint32_t reserved13; 489 } SI32_IDAC_A_Type; 490 491 #ifdef __cplusplus 492 } 493 #endif 494 495 #endif // __SI32_IDAC_A_REGISTERS_H__ 496 497 //-eof-------------------------------------------------------------------------- 498 499