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.57 24 // Version: 1 25 26 #ifndef __SI32_I2S_A_REGISTERS_H__ 27 #define __SI32_I2S_A_REGISTERS_H__ 28 29 #include <stdint.h> 30 31 #ifdef __cplusplus 32 extern "C" { 33 #endif 34 35 struct SI32_I2S_A_TXCONTROL_Struct 36 { 37 union 38 { 39 struct 40 { 41 // DFS Generator Enable 42 volatile uint32_t FSGEN: 1; 43 // DFS Synchronize Enable 44 volatile uint32_t FSSEN: 1; 45 uint32_t reserved0: 3; 46 // Transmit Delay Disable 47 volatile uint32_t DDIS: 1; 48 // Transmit Initial Phase Delay 49 volatile uint32_t FSDEL: 8; 50 // Transmit Frame Sync Source Select 51 volatile uint32_t FSSRCSEL: 1; 52 // Transmit Data Fill Select 53 volatile uint32_t FILLSEL: 2; 54 // Transmit Data Justification Select 55 volatile uint32_t JSEL: 1; 56 uint32_t reserved1: 2; 57 // Transmit WS Inversion Enable 58 volatile uint32_t FSINVEN: 1; 59 // Transmit SCK Inversion Enable 60 volatile uint32_t SCLKINVEN: 1; 61 // Transmit Order 62 volatile uint32_t ORDER: 1; 63 uint32_t reserved2: 1; 64 // Transmit Mono Bit-Width Select 65 volatile uint32_t MBSEL: 3; 66 uint32_t reserved3: 2; 67 // Transmitter Enable 68 volatile uint32_t TXEN: 1; 69 uint32_t reserved4: 2; 70 }; 71 volatile uint32_t U32; 72 }; 73 }; 74 75 #define SI32_I2S_A_TXCONTROL_FSGEN_MASK 0x00000001 76 #define SI32_I2S_A_TXCONTROL_FSGEN_SHIFT 0 77 // Disable the internal DFS generator. 78 #define SI32_I2S_A_TXCONTROL_FSGEN_DISABLED_VALUE 0 79 #define SI32_I2S_A_TXCONTROL_FSGEN_DISABLED_U32 \ 80 (SI32_I2S_A_TXCONTROL_FSGEN_DISABLED_VALUE << SI32_I2S_A_TXCONTROL_FSGEN_SHIFT) 81 // Enable the internal DFS generator. 82 #define SI32_I2S_A_TXCONTROL_FSGEN_ENABLED_VALUE 1 83 #define SI32_I2S_A_TXCONTROL_FSGEN_ENABLED_U32 \ 84 (SI32_I2S_A_TXCONTROL_FSGEN_ENABLED_VALUE << SI32_I2S_A_TXCONTROL_FSGEN_SHIFT) 85 86 #define SI32_I2S_A_TXCONTROL_FSSEN_MASK 0x00000002 87 #define SI32_I2S_A_TXCONTROL_FSSEN_SHIFT 1 88 // The internal DFS generator starts immediately when FSGEN is set to 1. 89 #define SI32_I2S_A_TXCONTROL_FSSEN_DISABLED_VALUE 0 90 #define SI32_I2S_A_TXCONTROL_FSSEN_DISABLED_U32 \ 91 (SI32_I2S_A_TXCONTROL_FSSEN_DISABLED_VALUE << SI32_I2S_A_TXCONTROL_FSSEN_SHIFT) 92 // Synchronize the rising edge of the internally generated WS signal from the DFS 93 // generator to the rising edge of the external WS input signal. 94 #define SI32_I2S_A_TXCONTROL_FSSEN_ENABLED_VALUE 1 95 #define SI32_I2S_A_TXCONTROL_FSSEN_ENABLED_U32 \ 96 (SI32_I2S_A_TXCONTROL_FSSEN_ENABLED_VALUE << SI32_I2S_A_TXCONTROL_FSSEN_SHIFT) 97 98 #define SI32_I2S_A_TXCONTROL_DDIS_MASK 0x00000020 99 #define SI32_I2S_A_TXCONTROL_DDIS_SHIFT 5 100 // The first data bit is sent on the second or later rising edge of SCK after WS 101 // changes. 102 #define SI32_I2S_A_TXCONTROL_DDIS_INACTIVE_VALUE 0 103 #define SI32_I2S_A_TXCONTROL_DDIS_INACTIVE_U32 \ 104 (SI32_I2S_A_TXCONTROL_DDIS_INACTIVE_VALUE << SI32_I2S_A_TXCONTROL_DDIS_SHIFT) 105 // The first data bit is sent on the first rising edge of SCK after WS changes. 106 #define SI32_I2S_A_TXCONTROL_DDIS_ACTIVE_VALUE 1 107 #define SI32_I2S_A_TXCONTROL_DDIS_ACTIVE_U32 \ 108 (SI32_I2S_A_TXCONTROL_DDIS_ACTIVE_VALUE << SI32_I2S_A_TXCONTROL_DDIS_SHIFT) 109 110 #define SI32_I2S_A_TXCONTROL_FSDEL_MASK 0x00003FC0 111 #define SI32_I2S_A_TXCONTROL_FSDEL_SHIFT 6 112 113 #define SI32_I2S_A_TXCONTROL_FSSRCSEL_MASK 0x00004000 114 #define SI32_I2S_A_TXCONTROL_FSSRCSEL_SHIFT 14 115 // The word select or frame sync is input from the WS pin. 116 #define SI32_I2S_A_TXCONTROL_FSSRCSEL_FSIN_EXT_VALUE 0 117 #define SI32_I2S_A_TXCONTROL_FSSRCSEL_FSIN_EXT_U32 \ 118 (SI32_I2S_A_TXCONTROL_FSSRCSEL_FSIN_EXT_VALUE << SI32_I2S_A_TXCONTROL_FSSRCSEL_SHIFT) 119 // The word select or frame sync is input from the internal DFS generator. 120 #define SI32_I2S_A_TXCONTROL_FSSRCSEL_FSIN_INT_VALUE 1 121 #define SI32_I2S_A_TXCONTROL_FSSRCSEL_FSIN_INT_U32 \ 122 (SI32_I2S_A_TXCONTROL_FSSRCSEL_FSIN_INT_VALUE << SI32_I2S_A_TXCONTROL_FSSRCSEL_SHIFT) 123 124 #define SI32_I2S_A_TXCONTROL_FILLSEL_MASK 0x00018000 125 #define SI32_I2S_A_TXCONTROL_FILLSEL_SHIFT 15 126 // Send zeros during unused bit cycles. 127 #define SI32_I2S_A_TXCONTROL_FILLSEL_ZEROS_VALUE 0 128 #define SI32_I2S_A_TXCONTROL_FILLSEL_ZEROS_U32 \ 129 (SI32_I2S_A_TXCONTROL_FILLSEL_ZEROS_VALUE << SI32_I2S_A_TXCONTROL_FILLSEL_SHIFT) 130 // Send ones during unused bit cycles. 131 #define SI32_I2S_A_TXCONTROL_FILLSEL_ONES_VALUE 1 132 #define SI32_I2S_A_TXCONTROL_FILLSEL_ONES_U32 \ 133 (SI32_I2S_A_TXCONTROL_FILLSEL_ONES_VALUE << SI32_I2S_A_TXCONTROL_FILLSEL_SHIFT) 134 // Send the sign bit of the current sample (MSB-first format) or last sample (LSB- 135 // first format) during unused bit cycles. 136 #define SI32_I2S_A_TXCONTROL_FILLSEL_SIGN_VALUE 2 137 #define SI32_I2S_A_TXCONTROL_FILLSEL_SIGN_U32 \ 138 (SI32_I2S_A_TXCONTROL_FILLSEL_SIGN_VALUE << SI32_I2S_A_TXCONTROL_FILLSEL_SHIFT) 139 // Send pseudo-random data generated by an 8-bit LFSR during unused bit cycles. 140 #define SI32_I2S_A_TXCONTROL_FILLSEL_RANDOM_VALUE 3 141 #define SI32_I2S_A_TXCONTROL_FILLSEL_RANDOM_U32 \ 142 (SI32_I2S_A_TXCONTROL_FILLSEL_RANDOM_VALUE << SI32_I2S_A_TXCONTROL_FILLSEL_SHIFT) 143 144 #define SI32_I2S_A_TXCONTROL_JSEL_MASK 0x00020000 145 #define SI32_I2S_A_TXCONTROL_JSEL_SHIFT 17 146 // Use left-justified or I2S-style formats. 147 #define SI32_I2S_A_TXCONTROL_JSEL_LEFT_VALUE 0 148 #define SI32_I2S_A_TXCONTROL_JSEL_LEFT_U32 \ 149 (SI32_I2S_A_TXCONTROL_JSEL_LEFT_VALUE << SI32_I2S_A_TXCONTROL_JSEL_SHIFT) 150 // Use right-justified format. 151 #define SI32_I2S_A_TXCONTROL_JSEL_RIGHT_VALUE 1 152 #define SI32_I2S_A_TXCONTROL_JSEL_RIGHT_U32 \ 153 (SI32_I2S_A_TXCONTROL_JSEL_RIGHT_VALUE << SI32_I2S_A_TXCONTROL_JSEL_SHIFT) 154 155 #define SI32_I2S_A_TXCONTROL_FSINVEN_MASK 0x00100000 156 #define SI32_I2S_A_TXCONTROL_FSINVEN_SHIFT 20 157 // Don't invert the WS signal. Use this setting for I2S format. 158 #define SI32_I2S_A_TXCONTROL_FSINVEN_DISABLED_VALUE 0 159 #define SI32_I2S_A_TXCONTROL_FSINVEN_DISABLED_U32 \ 160 (SI32_I2S_A_TXCONTROL_FSINVEN_DISABLED_VALUE << SI32_I2S_A_TXCONTROL_FSINVEN_SHIFT) 161 // Invert the WS signal. 162 #define SI32_I2S_A_TXCONTROL_FSINVEN_ENABLED_VALUE 1 163 #define SI32_I2S_A_TXCONTROL_FSINVEN_ENABLED_U32 \ 164 (SI32_I2S_A_TXCONTROL_FSINVEN_ENABLED_VALUE << SI32_I2S_A_TXCONTROL_FSINVEN_SHIFT) 165 166 #define SI32_I2S_A_TXCONTROL_SCLKINVEN_MASK 0x00200000 167 #define SI32_I2S_A_TXCONTROL_SCLKINVEN_SHIFT 21 168 // Do not invert the transmitter bit clock. 169 #define SI32_I2S_A_TXCONTROL_SCLKINVEN_DISABLED_VALUE 0 170 #define SI32_I2S_A_TXCONTROL_SCLKINVEN_DISABLED_U32 \ 171 (SI32_I2S_A_TXCONTROL_SCLKINVEN_DISABLED_VALUE << SI32_I2S_A_TXCONTROL_SCLKINVEN_SHIFT) 172 // Invert the transmitter bit clock. 173 #define SI32_I2S_A_TXCONTROL_SCLKINVEN_ENABLED_VALUE 1 174 #define SI32_I2S_A_TXCONTROL_SCLKINVEN_ENABLED_U32 \ 175 (SI32_I2S_A_TXCONTROL_SCLKINVEN_ENABLED_VALUE << SI32_I2S_A_TXCONTROL_SCLKINVEN_SHIFT) 176 177 #define SI32_I2S_A_TXCONTROL_ORDER_MASK 0x00400000 178 #define SI32_I2S_A_TXCONTROL_ORDER_SHIFT 22 179 // Left sample transmitted first, right sample transmitted second. Use this setting 180 // for I2S format. 181 #define SI32_I2S_A_TXCONTROL_ORDER_LEFT_RIGHT_VALUE 0 182 #define SI32_I2S_A_TXCONTROL_ORDER_LEFT_RIGHT_U32 \ 183 (SI32_I2S_A_TXCONTROL_ORDER_LEFT_RIGHT_VALUE << SI32_I2S_A_TXCONTROL_ORDER_SHIFT) 184 // Right sample transmitted first, left sample transmitted second. 185 #define SI32_I2S_A_TXCONTROL_ORDER_RIGHT_LEFT_VALUE 1 186 #define SI32_I2S_A_TXCONTROL_ORDER_RIGHT_LEFT_U32 \ 187 (SI32_I2S_A_TXCONTROL_ORDER_RIGHT_LEFT_VALUE << SI32_I2S_A_TXCONTROL_ORDER_SHIFT) 188 189 #define SI32_I2S_A_TXCONTROL_MBSEL_MASK 0x07000000 190 #define SI32_I2S_A_TXCONTROL_MBSEL_SHIFT 24 191 // 8 bits are sent per mono sample. 192 #define SI32_I2S_A_TXCONTROL_MBSEL_8BITS_VALUE 0 193 #define SI32_I2S_A_TXCONTROL_MBSEL_8BITS_U32 \ 194 (SI32_I2S_A_TXCONTROL_MBSEL_8BITS_VALUE << SI32_I2S_A_TXCONTROL_MBSEL_SHIFT) 195 // 9 bits are sent per mono sample. 196 #define SI32_I2S_A_TXCONTROL_MBSEL_9BITS_VALUE 1 197 #define SI32_I2S_A_TXCONTROL_MBSEL_9BITS_U32 \ 198 (SI32_I2S_A_TXCONTROL_MBSEL_9BITS_VALUE << SI32_I2S_A_TXCONTROL_MBSEL_SHIFT) 199 // 16 bits are sent per mono sample. 200 #define SI32_I2S_A_TXCONTROL_MBSEL_16BITS_VALUE 2 201 #define SI32_I2S_A_TXCONTROL_MBSEL_16BITS_U32 \ 202 (SI32_I2S_A_TXCONTROL_MBSEL_16BITS_VALUE << SI32_I2S_A_TXCONTROL_MBSEL_SHIFT) 203 // 24 bits are sent per mono sample. 204 #define SI32_I2S_A_TXCONTROL_MBSEL_24BITS_VALUE 3 205 #define SI32_I2S_A_TXCONTROL_MBSEL_24BITS_U32 \ 206 (SI32_I2S_A_TXCONTROL_MBSEL_24BITS_VALUE << SI32_I2S_A_TXCONTROL_MBSEL_SHIFT) 207 // 32 bits are sent per mono sample. 208 #define SI32_I2S_A_TXCONTROL_MBSEL_32BITS_VALUE 4 209 #define SI32_I2S_A_TXCONTROL_MBSEL_32BITS_U32 \ 210 (SI32_I2S_A_TXCONTROL_MBSEL_32BITS_VALUE << SI32_I2S_A_TXCONTROL_MBSEL_SHIFT) 211 212 #define SI32_I2S_A_TXCONTROL_TXEN_MASK 0x20000000 213 #define SI32_I2S_A_TXCONTROL_TXEN_SHIFT 29 214 // Disable the I2S transmitter. 215 #define SI32_I2S_A_TXCONTROL_TXEN_DISABLED_VALUE 0 216 #define SI32_I2S_A_TXCONTROL_TXEN_DISABLED_U32 \ 217 (SI32_I2S_A_TXCONTROL_TXEN_DISABLED_VALUE << SI32_I2S_A_TXCONTROL_TXEN_SHIFT) 218 // Enable the I2S transmitter. 219 #define SI32_I2S_A_TXCONTROL_TXEN_ENABLED_VALUE 1 220 #define SI32_I2S_A_TXCONTROL_TXEN_ENABLED_U32 \ 221 (SI32_I2S_A_TXCONTROL_TXEN_ENABLED_VALUE << SI32_I2S_A_TXCONTROL_TXEN_SHIFT) 222 223 224 225 struct SI32_I2S_A_TXMODE_Struct 226 { 227 union 228 { 229 struct 230 { 231 // Transmit Clock Cycle Select 232 volatile uint32_t CYCLE: 12; 233 // Transmit Start Control 234 volatile uint32_t START: 8; 235 // Transmit Drive Select 236 volatile uint32_t SLOTS: 5; 237 // Transmit Drive Early Disable 238 volatile uint32_t DEDIS: 1; 239 // Transmit Drive Inactive Mode 240 volatile uint32_t DIMD: 1; 241 // Transmit Time Division Multiplexing Enable 242 volatile uint32_t TDMEN: 1; 243 uint32_t reserved0: 4; 244 }; 245 volatile uint32_t U32; 246 }; 247 }; 248 249 #define SI32_I2S_A_TXMODE_CYCLE_MASK 0x00000FFF 250 #define SI32_I2S_A_TXMODE_CYCLE_SHIFT 0 251 252 #define SI32_I2S_A_TXMODE_START_MASK 0x000FF000 253 #define SI32_I2S_A_TXMODE_START_SHIFT 12 254 255 #define SI32_I2S_A_TXMODE_SLOTS_MASK 0x01F00000 256 #define SI32_I2S_A_TXMODE_SLOTS_SHIFT 20 257 258 #define SI32_I2S_A_TXMODE_DEDIS_MASK 0x02000000 259 #define SI32_I2S_A_TXMODE_DEDIS_SHIFT 25 260 // Drive the output during every cycle of the transmitter's assigned slot(s), 261 // including the last clock cycle. 262 #define SI32_I2S_A_TXMODE_DEDIS_INACTIVE_VALUE 0 263 #define SI32_I2S_A_TXMODE_DEDIS_INACTIVE_U32 \ 264 (SI32_I2S_A_TXMODE_DEDIS_INACTIVE_VALUE << SI32_I2S_A_TXMODE_DEDIS_SHIFT) 265 // Drive the output for every cycle of the transmitter's assigned slot(s), except 266 // for the last clock cycle of the last slot. 267 #define SI32_I2S_A_TXMODE_DEDIS_ACTIVE_VALUE 1 268 #define SI32_I2S_A_TXMODE_DEDIS_ACTIVE_U32 \ 269 (SI32_I2S_A_TXMODE_DEDIS_ACTIVE_VALUE << SI32_I2S_A_TXMODE_DEDIS_SHIFT) 270 271 #define SI32_I2S_A_TXMODE_DIMD_MASK 0x04000000 272 #define SI32_I2S_A_TXMODE_DIMD_SHIFT 26 273 // Drive zero on the data output pin during non-active slots. 274 #define SI32_I2S_A_TXMODE_DIMD_ZERO_VALUE 0 275 #define SI32_I2S_A_TXMODE_DIMD_ZERO_U32 \ 276 (SI32_I2S_A_TXMODE_DIMD_ZERO_VALUE << SI32_I2S_A_TXMODE_DIMD_SHIFT) 277 // Don't drive the data output pin. The data output pin is tristated. 278 #define SI32_I2S_A_TXMODE_DIMD_HIGH_Z_VALUE 1 279 #define SI32_I2S_A_TXMODE_DIMD_HIGH_Z_U32 \ 280 (SI32_I2S_A_TXMODE_DIMD_HIGH_Z_VALUE << SI32_I2S_A_TXMODE_DIMD_SHIFT) 281 282 #define SI32_I2S_A_TXMODE_TDMEN_MASK 0x08000000 283 #define SI32_I2S_A_TXMODE_TDMEN_SHIFT 27 284 // Disable the time division multiplexing (TDM) feature. 285 #define SI32_I2S_A_TXMODE_TDMEN_DISABLED_VALUE 0 286 #define SI32_I2S_A_TXMODE_TDMEN_DISABLED_U32 \ 287 (SI32_I2S_A_TXMODE_TDMEN_DISABLED_VALUE << SI32_I2S_A_TXMODE_TDMEN_SHIFT) 288 // Enable the time division multiplexing (TDM) feature. 289 #define SI32_I2S_A_TXMODE_TDMEN_ENABLED_VALUE 1 290 #define SI32_I2S_A_TXMODE_TDMEN_ENABLED_U32 \ 291 (SI32_I2S_A_TXMODE_TDMEN_ENABLED_VALUE << SI32_I2S_A_TXMODE_TDMEN_SHIFT) 292 293 294 295 struct SI32_I2S_A_FSDUTY_Struct 296 { 297 union 298 { 299 struct 300 { 301 // Frame Sync Low Time 302 volatile uint16_t FSLOW; 303 // Frame Sync High Time 304 volatile uint16_t FSHIGH; 305 }; 306 volatile uint32_t U32; 307 }; 308 }; 309 310 #define SI32_I2S_A_FSDUTY_FSLOW_MASK 0x0000FFFF 311 #define SI32_I2S_A_FSDUTY_FSLOW_SHIFT 0 312 313 #define SI32_I2S_A_FSDUTY_FSHIGH_MASK 0xFFFF0000 314 #define SI32_I2S_A_FSDUTY_FSHIGH_SHIFT 16 315 316 317 318 struct SI32_I2S_A_RXCONTROL_Struct 319 { 320 union 321 { 322 struct 323 { 324 // Receive Initial Phase Delay 325 volatile uint8_t FSDEL; 326 // Receive Data Justification 327 volatile uint32_t JSEL: 1; 328 // Receive Delay Disable 329 volatile uint32_t DDIS: 1; 330 uint32_t reserved0: 1; 331 // Receive WS Inversion Enable 332 volatile uint32_t FSINVEN: 1; 333 // Receive SCK Inversion Enable 334 volatile uint32_t SCLKINVEN: 1; 335 // Receive Order 336 volatile uint32_t ORDER: 1; 337 uint32_t reserved1: 1; 338 // Receive Mono Bit-Width Select 339 volatile uint32_t MBSEL: 3; 340 uint32_t reserved2: 2; 341 // Receive Frame Sync Source Select 342 volatile uint32_t FSSRCSEL: 1; 343 // Receive Enable 344 volatile uint32_t RXEN: 1; 345 uint32_t reserved3: 10; 346 }; 347 volatile uint32_t U32; 348 }; 349 }; 350 351 #define SI32_I2S_A_RXCONTROL_FSDEL_MASK 0x000000FF 352 #define SI32_I2S_A_RXCONTROL_FSDEL_SHIFT 0 353 354 #define SI32_I2S_A_RXCONTROL_JSEL_MASK 0x00000100 355 #define SI32_I2S_A_RXCONTROL_JSEL_SHIFT 8 356 // Use left-justified or I2S-style formats. 357 #define SI32_I2S_A_RXCONTROL_JSEL_LEFT_VALUE 0 358 #define SI32_I2S_A_RXCONTROL_JSEL_LEFT_U32 \ 359 (SI32_I2S_A_RXCONTROL_JSEL_LEFT_VALUE << SI32_I2S_A_RXCONTROL_JSEL_SHIFT) 360 // Use right-justified format. 361 #define SI32_I2S_A_RXCONTROL_JSEL_RIGHT_VALUE 1 362 #define SI32_I2S_A_RXCONTROL_JSEL_RIGHT_U32 \ 363 (SI32_I2S_A_RXCONTROL_JSEL_RIGHT_VALUE << SI32_I2S_A_RXCONTROL_JSEL_SHIFT) 364 365 #define SI32_I2S_A_RXCONTROL_DDIS_MASK 0x00000200 366 #define SI32_I2S_A_RXCONTROL_DDIS_SHIFT 9 367 // The first data bit is captured on the second or later rising edge of SCK after 368 // WS changes. 369 #define SI32_I2S_A_RXCONTROL_DDIS_INACTIVE_VALUE 0 370 #define SI32_I2S_A_RXCONTROL_DDIS_INACTIVE_U32 \ 371 (SI32_I2S_A_RXCONTROL_DDIS_INACTIVE_VALUE << SI32_I2S_A_RXCONTROL_DDIS_SHIFT) 372 // The first data bit is captured by the receiver on the first rising edge of SCK 373 // after WS changes. 374 #define SI32_I2S_A_RXCONTROL_DDIS_ACTIVE_VALUE 1 375 #define SI32_I2S_A_RXCONTROL_DDIS_ACTIVE_U32 \ 376 (SI32_I2S_A_RXCONTROL_DDIS_ACTIVE_VALUE << SI32_I2S_A_RXCONTROL_DDIS_SHIFT) 377 378 #define SI32_I2S_A_RXCONTROL_FSINVEN_MASK 0x00000800 379 #define SI32_I2S_A_RXCONTROL_FSINVEN_SHIFT 11 380 // Don't invert the WS signal. Use this setting for I2S format. 381 #define SI32_I2S_A_RXCONTROL_FSINVEN_DISABLED_VALUE 0 382 #define SI32_I2S_A_RXCONTROL_FSINVEN_DISABLED_U32 \ 383 (SI32_I2S_A_RXCONTROL_FSINVEN_DISABLED_VALUE << SI32_I2S_A_RXCONTROL_FSINVEN_SHIFT) 384 // Invert the WS signal. 385 #define SI32_I2S_A_RXCONTROL_FSINVEN_ENABLED_VALUE 1 386 #define SI32_I2S_A_RXCONTROL_FSINVEN_ENABLED_U32 \ 387 (SI32_I2S_A_RXCONTROL_FSINVEN_ENABLED_VALUE << SI32_I2S_A_RXCONTROL_FSINVEN_SHIFT) 388 389 #define SI32_I2S_A_RXCONTROL_SCLKINVEN_MASK 0x00001000 390 #define SI32_I2S_A_RXCONTROL_SCLKINVEN_SHIFT 12 391 // Do not invert the receiver bit clock. 392 #define SI32_I2S_A_RXCONTROL_SCLKINVEN_DISABLED_VALUE 0 393 #define SI32_I2S_A_RXCONTROL_SCLKINVEN_DISABLED_U32 \ 394 (SI32_I2S_A_RXCONTROL_SCLKINVEN_DISABLED_VALUE << SI32_I2S_A_RXCONTROL_SCLKINVEN_SHIFT) 395 // Invert the receiver bit clock. 396 #define SI32_I2S_A_RXCONTROL_SCLKINVEN_ENABLED_VALUE 1 397 #define SI32_I2S_A_RXCONTROL_SCLKINVEN_ENABLED_U32 \ 398 (SI32_I2S_A_RXCONTROL_SCLKINVEN_ENABLED_VALUE << SI32_I2S_A_RXCONTROL_SCLKINVEN_SHIFT) 399 400 #define SI32_I2S_A_RXCONTROL_ORDER_MASK 0x00002000 401 #define SI32_I2S_A_RXCONTROL_ORDER_SHIFT 13 402 // Left sample received first, right sample received second. Use this setting for 403 // I2S format. 404 #define SI32_I2S_A_RXCONTROL_ORDER_LEFT_RIGHT_VALUE 0 405 #define SI32_I2S_A_RXCONTROL_ORDER_LEFT_RIGHT_U32 \ 406 (SI32_I2S_A_RXCONTROL_ORDER_LEFT_RIGHT_VALUE << SI32_I2S_A_RXCONTROL_ORDER_SHIFT) 407 // Right sample received first, left sample received second. 408 #define SI32_I2S_A_RXCONTROL_ORDER_RIGHT_LEFT_VALUE 1 409 #define SI32_I2S_A_RXCONTROL_ORDER_RIGHT_LEFT_U32 \ 410 (SI32_I2S_A_RXCONTROL_ORDER_RIGHT_LEFT_VALUE << SI32_I2S_A_RXCONTROL_ORDER_SHIFT) 411 412 #define SI32_I2S_A_RXCONTROL_MBSEL_MASK 0x00038000 413 #define SI32_I2S_A_RXCONTROL_MBSEL_SHIFT 15 414 // 8 bits are received per mono sample. 415 #define SI32_I2S_A_RXCONTROL_MBSEL_8BITS_VALUE 0 416 #define SI32_I2S_A_RXCONTROL_MBSEL_8BITS_U32 \ 417 (SI32_I2S_A_RXCONTROL_MBSEL_8BITS_VALUE << SI32_I2S_A_RXCONTROL_MBSEL_SHIFT) 418 // 9 bits are received per mono sample. 419 #define SI32_I2S_A_RXCONTROL_MBSEL_9BITS_VALUE 1 420 #define SI32_I2S_A_RXCONTROL_MBSEL_9BITS_U32 \ 421 (SI32_I2S_A_RXCONTROL_MBSEL_9BITS_VALUE << SI32_I2S_A_RXCONTROL_MBSEL_SHIFT) 422 // 16 bits are received per mono sample. 423 #define SI32_I2S_A_RXCONTROL_MBSEL_16BITS_VALUE 2 424 #define SI32_I2S_A_RXCONTROL_MBSEL_16BITS_U32 \ 425 (SI32_I2S_A_RXCONTROL_MBSEL_16BITS_VALUE << SI32_I2S_A_RXCONTROL_MBSEL_SHIFT) 426 // 24 bits are received per mono sample. 427 #define SI32_I2S_A_RXCONTROL_MBSEL_24BITS_VALUE 3 428 #define SI32_I2S_A_RXCONTROL_MBSEL_24BITS_U32 \ 429 (SI32_I2S_A_RXCONTROL_MBSEL_24BITS_VALUE << SI32_I2S_A_RXCONTROL_MBSEL_SHIFT) 430 // 32 bits are received per mono sample. 431 #define SI32_I2S_A_RXCONTROL_MBSEL_32BITS_VALUE 4 432 #define SI32_I2S_A_RXCONTROL_MBSEL_32BITS_U32 \ 433 (SI32_I2S_A_RXCONTROL_MBSEL_32BITS_VALUE << SI32_I2S_A_RXCONTROL_MBSEL_SHIFT) 434 435 #define SI32_I2S_A_RXCONTROL_FSSRCSEL_MASK 0x00100000 436 #define SI32_I2S_A_RXCONTROL_FSSRCSEL_SHIFT 20 437 // The word select or frame sync is input from the WS pin. 438 #define SI32_I2S_A_RXCONTROL_FSSRCSEL_FSIN_EXT_VALUE 0 439 #define SI32_I2S_A_RXCONTROL_FSSRCSEL_FSIN_EXT_U32 \ 440 (SI32_I2S_A_RXCONTROL_FSSRCSEL_FSIN_EXT_VALUE << SI32_I2S_A_RXCONTROL_FSSRCSEL_SHIFT) 441 // The word select or frame sync is input from the internal DFS generator. 442 #define SI32_I2S_A_RXCONTROL_FSSRCSEL_FSIN_INT_VALUE 1 443 #define SI32_I2S_A_RXCONTROL_FSSRCSEL_FSIN_INT_U32 \ 444 (SI32_I2S_A_RXCONTROL_FSSRCSEL_FSIN_INT_VALUE << SI32_I2S_A_RXCONTROL_FSSRCSEL_SHIFT) 445 446 #define SI32_I2S_A_RXCONTROL_RXEN_MASK 0x00200000 447 #define SI32_I2S_A_RXCONTROL_RXEN_SHIFT 21 448 // Disable the I2S receiver. 449 #define SI32_I2S_A_RXCONTROL_RXEN_DISABLED_VALUE 0 450 #define SI32_I2S_A_RXCONTROL_RXEN_DISABLED_U32 \ 451 (SI32_I2S_A_RXCONTROL_RXEN_DISABLED_VALUE << SI32_I2S_A_RXCONTROL_RXEN_SHIFT) 452 // Enable the I2S receiver. 453 #define SI32_I2S_A_RXCONTROL_RXEN_ENABLED_VALUE 1 454 #define SI32_I2S_A_RXCONTROL_RXEN_ENABLED_U32 \ 455 (SI32_I2S_A_RXCONTROL_RXEN_ENABLED_VALUE << SI32_I2S_A_RXCONTROL_RXEN_SHIFT) 456 457 458 459 struct SI32_I2S_A_RXMODE_Struct 460 { 461 union 462 { 463 struct 464 { 465 // Receive Clock Cycle Select 466 volatile uint32_t CYCLE: 12; 467 // Receive Start Control 468 volatile uint32_t START: 8; 469 // Receive Drive Select 470 volatile uint32_t SLOTS: 6; 471 uint32_t reserved0: 1; 472 // Receive Time Division Multiplexing Enable 473 volatile uint32_t TDMEN: 1; 474 uint32_t reserved1: 4; 475 }; 476 volatile uint32_t U32; 477 }; 478 }; 479 480 #define SI32_I2S_A_RXMODE_CYCLE_MASK 0x00000FFF 481 #define SI32_I2S_A_RXMODE_CYCLE_SHIFT 0 482 483 #define SI32_I2S_A_RXMODE_START_MASK 0x000FF000 484 #define SI32_I2S_A_RXMODE_START_SHIFT 12 485 486 #define SI32_I2S_A_RXMODE_SLOTS_MASK 0x03F00000 487 #define SI32_I2S_A_RXMODE_SLOTS_SHIFT 20 488 489 #define SI32_I2S_A_RXMODE_TDMEN_MASK 0x08000000 490 #define SI32_I2S_A_RXMODE_TDMEN_SHIFT 27 491 // Disable the time division multiplexing (TDM) feature. 492 #define SI32_I2S_A_RXMODE_TDMEN_DISABLED_VALUE 0 493 #define SI32_I2S_A_RXMODE_TDMEN_DISABLED_U32 \ 494 (SI32_I2S_A_RXMODE_TDMEN_DISABLED_VALUE << SI32_I2S_A_RXMODE_TDMEN_SHIFT) 495 // Enable the time division multiplexing (TDM) feature. 496 #define SI32_I2S_A_RXMODE_TDMEN_ENABLED_VALUE 1 497 #define SI32_I2S_A_RXMODE_TDMEN_ENABLED_U32 \ 498 (SI32_I2S_A_RXMODE_TDMEN_ENABLED_VALUE << SI32_I2S_A_RXMODE_TDMEN_SHIFT) 499 500 501 502 struct SI32_I2S_A_CLKCONTROL_Struct 503 { 504 union 505 { 506 struct 507 { 508 // Clock Divider Integer Value 509 volatile uint32_t INTDIV: 10; 510 // Clock Divider Fractional Value 511 volatile uint32_t FRACDIV: 8; 512 // Duty Cycle Adjustment Mode 513 volatile uint32_t DUTYMD: 1; 514 // Clock Divider Update 515 volatile uint32_t CLKUPD: 1; 516 // Clock Divider Enable 517 volatile uint32_t DIVEN: 1; 518 // Transmit Clock Select 519 volatile uint32_t TXCLKSEL: 1; 520 // Receive Clock Select 521 volatile uint32_t RXCLKSEL: 1; 522 // I2S Module Reset 523 volatile uint32_t RESET: 1; 524 // Receive Clock Enable 525 volatile uint32_t RXCLKEN: 1; 526 // Transmit Clock Enable 527 volatile uint32_t TXCLKEN: 1; 528 // Receive SCK Mode 529 volatile uint32_t RXSCLKMD: 1; 530 // Transmit SCK Mode 531 volatile uint32_t TXSCLKMD: 1; 532 uint32_t reserved0: 4; 533 }; 534 volatile uint32_t U32; 535 }; 536 }; 537 538 #define SI32_I2S_A_CLKCONTROL_INTDIV_MASK 0x000003FF 539 #define SI32_I2S_A_CLKCONTROL_INTDIV_SHIFT 0 540 541 #define SI32_I2S_A_CLKCONTROL_FRACDIV_MASK 0x0003FC00 542 #define SI32_I2S_A_CLKCONTROL_FRACDIV_SHIFT 10 543 544 #define SI32_I2S_A_CLKCONTROL_DUTYMD_MASK 0x00040000 545 #define SI32_I2S_A_CLKCONTROL_DUTYMD_SHIFT 18 546 // When the division is fractional, the clock high time will be greater than 50% 547 // (by half of the source clock period). 548 #define SI32_I2S_A_CLKCONTROL_DUTYMD_MORE_VALUE 0 549 #define SI32_I2S_A_CLKCONTROL_DUTYMD_MORE_U32 \ 550 (SI32_I2S_A_CLKCONTROL_DUTYMD_MORE_VALUE << SI32_I2S_A_CLKCONTROL_DUTYMD_SHIFT) 551 // When the division is fractional, the clock low time will be greater than 50% (by 552 // half of the source clock period). 553 #define SI32_I2S_A_CLKCONTROL_DUTYMD_LESS_VALUE 1 554 #define SI32_I2S_A_CLKCONTROL_DUTYMD_LESS_U32 \ 555 (SI32_I2S_A_CLKCONTROL_DUTYMD_LESS_VALUE << SI32_I2S_A_CLKCONTROL_DUTYMD_SHIFT) 556 557 #define SI32_I2S_A_CLKCONTROL_CLKUPD_MASK 0x00080000 558 #define SI32_I2S_A_CLKCONTROL_CLKUPD_SHIFT 19 559 // Update the clock divider with new values of INTDIV, FRACDIV, and DIVEN. 560 #define SI32_I2S_A_CLKCONTROL_CLKUPD_UPDATE_VALUE 1 561 #define SI32_I2S_A_CLKCONTROL_CLKUPD_UPDATE_U32 \ 562 (SI32_I2S_A_CLKCONTROL_CLKUPD_UPDATE_VALUE << SI32_I2S_A_CLKCONTROL_CLKUPD_SHIFT) 563 564 #define SI32_I2S_A_CLKCONTROL_DIVEN_MASK 0x00100000 565 #define SI32_I2S_A_CLKCONTROL_DIVEN_SHIFT 20 566 // Disable the clock divider. 567 #define SI32_I2S_A_CLKCONTROL_DIVEN_DISABLED_VALUE 0 568 #define SI32_I2S_A_CLKCONTROL_DIVEN_DISABLED_U32 \ 569 (SI32_I2S_A_CLKCONTROL_DIVEN_DISABLED_VALUE << SI32_I2S_A_CLKCONTROL_DIVEN_SHIFT) 570 // Enable the clock divider. 571 #define SI32_I2S_A_CLKCONTROL_DIVEN_ENABLED_VALUE 1 572 #define SI32_I2S_A_CLKCONTROL_DIVEN_ENABLED_U32 \ 573 (SI32_I2S_A_CLKCONTROL_DIVEN_ENABLED_VALUE << SI32_I2S_A_CLKCONTROL_DIVEN_SHIFT) 574 575 #define SI32_I2S_A_CLKCONTROL_TXCLKSEL_MASK 0x00200000 576 #define SI32_I2S_A_CLKCONTROL_TXCLKSEL_SHIFT 21 577 // The I2S transmitter is clocked from the internal clock divider. 578 #define SI32_I2S_A_CLKCONTROL_TXCLKSEL_INTERNAL_VALUE 0 579 #define SI32_I2S_A_CLKCONTROL_TXCLKSEL_INTERNAL_U32 \ 580 (SI32_I2S_A_CLKCONTROL_TXCLKSEL_INTERNAL_VALUE << SI32_I2S_A_CLKCONTROL_TXCLKSEL_SHIFT) 581 // The I2S transmitter is clocked from the SCK pin. 582 #define SI32_I2S_A_CLKCONTROL_TXCLKSEL_EXTERNAL_VALUE 1 583 #define SI32_I2S_A_CLKCONTROL_TXCLKSEL_EXTERNAL_U32 \ 584 (SI32_I2S_A_CLKCONTROL_TXCLKSEL_EXTERNAL_VALUE << SI32_I2S_A_CLKCONTROL_TXCLKSEL_SHIFT) 585 586 #define SI32_I2S_A_CLKCONTROL_RXCLKSEL_MASK 0x00400000 587 #define SI32_I2S_A_CLKCONTROL_RXCLKSEL_SHIFT 22 588 // The I2S receiver is clocked from the internal clock divider. 589 #define SI32_I2S_A_CLKCONTROL_RXCLKSEL_INTERNAL_VALUE 0 590 #define SI32_I2S_A_CLKCONTROL_RXCLKSEL_INTERNAL_U32 \ 591 (SI32_I2S_A_CLKCONTROL_RXCLKSEL_INTERNAL_VALUE << SI32_I2S_A_CLKCONTROL_RXCLKSEL_SHIFT) 592 // The I2S receiver is clocked from the SCK pin. 593 #define SI32_I2S_A_CLKCONTROL_RXCLKSEL_EXTERNAL_VALUE 1 594 #define SI32_I2S_A_CLKCONTROL_RXCLKSEL_EXTERNAL_U32 \ 595 (SI32_I2S_A_CLKCONTROL_RXCLKSEL_EXTERNAL_VALUE << SI32_I2S_A_CLKCONTROL_RXCLKSEL_SHIFT) 596 597 #define SI32_I2S_A_CLKCONTROL_RESET_MASK 0x00800000 598 #define SI32_I2S_A_CLKCONTROL_RESET_SHIFT 23 599 // Reset the I2S module. 600 #define SI32_I2S_A_CLKCONTROL_RESET_ACTIVE_VALUE 1 601 #define SI32_I2S_A_CLKCONTROL_RESET_ACTIVE_U32 \ 602 (SI32_I2S_A_CLKCONTROL_RESET_ACTIVE_VALUE << SI32_I2S_A_CLKCONTROL_RESET_SHIFT) 603 604 #define SI32_I2S_A_CLKCONTROL_RXCLKEN_MASK 0x01000000 605 #define SI32_I2S_A_CLKCONTROL_RXCLKEN_SHIFT 24 606 // Disable the I2S receiver clock. 607 #define SI32_I2S_A_CLKCONTROL_RXCLKEN_DISABLED_VALUE 0 608 #define SI32_I2S_A_CLKCONTROL_RXCLKEN_DISABLED_U32 \ 609 (SI32_I2S_A_CLKCONTROL_RXCLKEN_DISABLED_VALUE << SI32_I2S_A_CLKCONTROL_RXCLKEN_SHIFT) 610 // Enable the I2S receiver clock. 611 #define SI32_I2S_A_CLKCONTROL_RXCLKEN_ENABLED_VALUE 1 612 #define SI32_I2S_A_CLKCONTROL_RXCLKEN_ENABLED_U32 \ 613 (SI32_I2S_A_CLKCONTROL_RXCLKEN_ENABLED_VALUE << SI32_I2S_A_CLKCONTROL_RXCLKEN_SHIFT) 614 615 #define SI32_I2S_A_CLKCONTROL_TXCLKEN_MASK 0x02000000 616 #define SI32_I2S_A_CLKCONTROL_TXCLKEN_SHIFT 25 617 // Disable the I2S transmitter clock. 618 #define SI32_I2S_A_CLKCONTROL_TXCLKEN_DISABLED_VALUE 0 619 #define SI32_I2S_A_CLKCONTROL_TXCLKEN_DISABLED_U32 \ 620 (SI32_I2S_A_CLKCONTROL_TXCLKEN_DISABLED_VALUE << SI32_I2S_A_CLKCONTROL_TXCLKEN_SHIFT) 621 // Enable the I2S transmitter clock. 622 #define SI32_I2S_A_CLKCONTROL_TXCLKEN_ENABLED_VALUE 1 623 #define SI32_I2S_A_CLKCONTROL_TXCLKEN_ENABLED_U32 \ 624 (SI32_I2S_A_CLKCONTROL_TXCLKEN_ENABLED_VALUE << SI32_I2S_A_CLKCONTROL_TXCLKEN_SHIFT) 625 626 #define SI32_I2S_A_CLKCONTROL_RXSCLKMD_MASK 0x04000000 627 #define SI32_I2S_A_CLKCONTROL_RXSCLKMD_SHIFT 26 628 // The I2S receiver SCK signal is an output. 629 #define SI32_I2S_A_CLKCONTROL_RXSCLKMD_SCK_OUTPUT_VALUE 0 630 #define SI32_I2S_A_CLKCONTROL_RXSCLKMD_SCK_OUTPUT_U32 \ 631 (SI32_I2S_A_CLKCONTROL_RXSCLKMD_SCK_OUTPUT_VALUE << SI32_I2S_A_CLKCONTROL_RXSCLKMD_SHIFT) 632 // The I2S receiver SCK signal is an input. 633 #define SI32_I2S_A_CLKCONTROL_RXSCLKMD_SCK_INPUT_VALUE 1 634 #define SI32_I2S_A_CLKCONTROL_RXSCLKMD_SCK_INPUT_U32 \ 635 (SI32_I2S_A_CLKCONTROL_RXSCLKMD_SCK_INPUT_VALUE << SI32_I2S_A_CLKCONTROL_RXSCLKMD_SHIFT) 636 637 #define SI32_I2S_A_CLKCONTROL_TXSCLKMD_MASK 0x08000000 638 #define SI32_I2S_A_CLKCONTROL_TXSCLKMD_SHIFT 27 639 // The I2S transmitter SCK signal is an output. 640 #define SI32_I2S_A_CLKCONTROL_TXSCLKMD_SCK_OUTPUT_VALUE 0 641 #define SI32_I2S_A_CLKCONTROL_TXSCLKMD_SCK_OUTPUT_U32 \ 642 (SI32_I2S_A_CLKCONTROL_TXSCLKMD_SCK_OUTPUT_VALUE << SI32_I2S_A_CLKCONTROL_TXSCLKMD_SHIFT) 643 // The I2S transmitter SCK signal is an input. 644 #define SI32_I2S_A_CLKCONTROL_TXSCLKMD_SCK_INPUT_VALUE 1 645 #define SI32_I2S_A_CLKCONTROL_TXSCLKMD_SCK_INPUT_U32 \ 646 (SI32_I2S_A_CLKCONTROL_TXSCLKMD_SCK_INPUT_VALUE << SI32_I2S_A_CLKCONTROL_TXSCLKMD_SHIFT) 647 648 649 650 struct SI32_I2S_A_TXFIFO_Struct 651 { 652 union 653 { 654 // This is a FIFO register 655 volatile uint32_t U32; 656 }; 657 }; 658 659 #define SI32_I2S_A_TXFIFO_TXFIFO_MASK 0xFFFFFFFF 660 #define SI32_I2S_A_TXFIFO_TXFIFO_SHIFT 0 661 662 663 664 struct SI32_I2S_A_RXFIFO_Struct 665 { 666 union 667 { 668 // This is a FIFO register 669 volatile uint32_t U32; 670 }; 671 }; 672 673 #define SI32_I2S_A_RXFIFO_RXFIFO_MASK 0xFFFFFFFF 674 #define SI32_I2S_A_RXFIFO_RXFIFO_SHIFT 0 675 676 677 678 struct SI32_I2S_A_FIFOSTATUS_Struct 679 { 680 union 681 { 682 struct 683 { 684 // Transmit FIFO Status 685 volatile uint32_t TXFIFONUM: 4; 686 uint32_t reserved0: 12; 687 // Receive FIFO Status 688 volatile uint32_t RXFIFONUM: 4; 689 uint32_t reserved1: 12; 690 }; 691 volatile uint32_t U32; 692 }; 693 }; 694 695 #define SI32_I2S_A_FIFOSTATUS_TXFIFONUM_MASK 0x0000000F 696 #define SI32_I2S_A_FIFOSTATUS_TXFIFONUM_SHIFT 0 697 698 #define SI32_I2S_A_FIFOSTATUS_RXFIFONUM_MASK 0x000F0000 699 #define SI32_I2S_A_FIFOSTATUS_RXFIFONUM_SHIFT 16 700 701 702 703 struct SI32_I2S_A_FIFOCONTROL_Struct 704 { 705 union 706 { 707 struct 708 { 709 // Transmit FIFO Low Watermark 710 volatile uint32_t TXFIFOWM: 4; 711 uint32_t reserved0: 12; 712 // Receive FIFO High Watermark 713 volatile uint32_t RXFIFOWM: 4; 714 uint32_t reserved1: 1; 715 // Transmit FIFO Flush 716 volatile uint32_t TXFIFOFL: 1; 717 // Receive FIFO Flush 718 volatile uint32_t RXFIFOFL: 1; 719 uint32_t reserved2: 9; 720 }; 721 volatile uint32_t U32; 722 }; 723 }; 724 725 #define SI32_I2S_A_FIFOCONTROL_TXFIFOWM_MASK 0x0000000F 726 #define SI32_I2S_A_FIFOCONTROL_TXFIFOWM_SHIFT 0 727 728 #define SI32_I2S_A_FIFOCONTROL_RXFIFOWM_MASK 0x000F0000 729 #define SI32_I2S_A_FIFOCONTROL_RXFIFOWM_SHIFT 16 730 731 #define SI32_I2S_A_FIFOCONTROL_TXFIFOFL_MASK 0x00200000 732 #define SI32_I2S_A_FIFOCONTROL_TXFIFOFL_SHIFT 21 733 // Flush the I2S transmitter FIFO. 734 #define SI32_I2S_A_FIFOCONTROL_TXFIFOFL_SET_VALUE 1 735 #define SI32_I2S_A_FIFOCONTROL_TXFIFOFL_SET_U32 \ 736 (SI32_I2S_A_FIFOCONTROL_TXFIFOFL_SET_VALUE << SI32_I2S_A_FIFOCONTROL_TXFIFOFL_SHIFT) 737 738 #define SI32_I2S_A_FIFOCONTROL_RXFIFOFL_MASK 0x00400000 739 #define SI32_I2S_A_FIFOCONTROL_RXFIFOFL_SHIFT 22 740 // Flush the I2S receiver FIFO. 741 #define SI32_I2S_A_FIFOCONTROL_RXFIFOFL_SET_VALUE 1 742 #define SI32_I2S_A_FIFOCONTROL_RXFIFOFL_SET_U32 \ 743 (SI32_I2S_A_FIFOCONTROL_RXFIFOFL_SET_VALUE << SI32_I2S_A_FIFOCONTROL_RXFIFOFL_SHIFT) 744 745 746 747 struct SI32_I2S_A_INTCONTROL_Struct 748 { 749 union 750 { 751 struct 752 { 753 // Transmit Underflow Interrupt Enable 754 volatile uint32_t TXUFIEN: 1; 755 // Receive Overflow Interrupt Enable 756 volatile uint32_t RXOFIEN: 1; 757 // Transmit FIFO Low Watermark Interrupt Enable 758 volatile uint32_t TXLWMIEN: 1; 759 // Receive FIFO High Watermark Interrupt Enable 760 volatile uint32_t RXHWMIEN: 1; 761 uint32_t reserved0: 28; 762 }; 763 volatile uint32_t U32; 764 }; 765 }; 766 767 #define SI32_I2S_A_INTCONTROL_TXUFIEN_MASK 0x00000001 768 #define SI32_I2S_A_INTCONTROL_TXUFIEN_SHIFT 0 769 // Disable the transmit underflow interrupt. 770 #define SI32_I2S_A_INTCONTROL_TXUFIEN_DISABLED_VALUE 0 771 #define SI32_I2S_A_INTCONTROL_TXUFIEN_DISABLED_U32 \ 772 (SI32_I2S_A_INTCONTROL_TXUFIEN_DISABLED_VALUE << SI32_I2S_A_INTCONTROL_TXUFIEN_SHIFT) 773 // Enable the transmit underflow interrupt. 774 #define SI32_I2S_A_INTCONTROL_TXUFIEN_ENABLED_VALUE 1 775 #define SI32_I2S_A_INTCONTROL_TXUFIEN_ENABLED_U32 \ 776 (SI32_I2S_A_INTCONTROL_TXUFIEN_ENABLED_VALUE << SI32_I2S_A_INTCONTROL_TXUFIEN_SHIFT) 777 778 #define SI32_I2S_A_INTCONTROL_RXOFIEN_MASK 0x00000002 779 #define SI32_I2S_A_INTCONTROL_RXOFIEN_SHIFT 1 780 // Disable the receive overflow interrupt. 781 #define SI32_I2S_A_INTCONTROL_RXOFIEN_DISABLED_VALUE 0 782 #define SI32_I2S_A_INTCONTROL_RXOFIEN_DISABLED_U32 \ 783 (SI32_I2S_A_INTCONTROL_RXOFIEN_DISABLED_VALUE << SI32_I2S_A_INTCONTROL_RXOFIEN_SHIFT) 784 // Enable the receive overflow interrupt. 785 #define SI32_I2S_A_INTCONTROL_RXOFIEN_ENABLED_VALUE 1 786 #define SI32_I2S_A_INTCONTROL_RXOFIEN_ENABLED_U32 \ 787 (SI32_I2S_A_INTCONTROL_RXOFIEN_ENABLED_VALUE << SI32_I2S_A_INTCONTROL_RXOFIEN_SHIFT) 788 789 #define SI32_I2S_A_INTCONTROL_TXLWMIEN_MASK 0x00000004 790 #define SI32_I2S_A_INTCONTROL_TXLWMIEN_SHIFT 2 791 // Disable the transmit FIFO low watermark interrupt. 792 #define SI32_I2S_A_INTCONTROL_TXLWMIEN_DISABLED_VALUE 0 793 #define SI32_I2S_A_INTCONTROL_TXLWMIEN_DISABLED_U32 \ 794 (SI32_I2S_A_INTCONTROL_TXLWMIEN_DISABLED_VALUE << SI32_I2S_A_INTCONTROL_TXLWMIEN_SHIFT) 795 // Enable the transmit FIFO low watermark interrupt. 796 #define SI32_I2S_A_INTCONTROL_TXLWMIEN_ENABLED_VALUE 1 797 #define SI32_I2S_A_INTCONTROL_TXLWMIEN_ENABLED_U32 \ 798 (SI32_I2S_A_INTCONTROL_TXLWMIEN_ENABLED_VALUE << SI32_I2S_A_INTCONTROL_TXLWMIEN_SHIFT) 799 800 #define SI32_I2S_A_INTCONTROL_RXHWMIEN_MASK 0x00000008 801 #define SI32_I2S_A_INTCONTROL_RXHWMIEN_SHIFT 3 802 // Disable the receive FIFO high watermark interrupt. 803 #define SI32_I2S_A_INTCONTROL_RXHWMIEN_DISABLED_VALUE 0 804 #define SI32_I2S_A_INTCONTROL_RXHWMIEN_DISABLED_U32 \ 805 (SI32_I2S_A_INTCONTROL_RXHWMIEN_DISABLED_VALUE << SI32_I2S_A_INTCONTROL_RXHWMIEN_SHIFT) 806 // Enable the receive FIFO high watermark interrupt. 807 #define SI32_I2S_A_INTCONTROL_RXHWMIEN_ENABLED_VALUE 1 808 #define SI32_I2S_A_INTCONTROL_RXHWMIEN_ENABLED_U32 \ 809 (SI32_I2S_A_INTCONTROL_RXHWMIEN_ENABLED_VALUE << SI32_I2S_A_INTCONTROL_RXHWMIEN_SHIFT) 810 811 812 813 struct SI32_I2S_A_STATUS_Struct 814 { 815 union 816 { 817 struct 818 { 819 // Transmit Underflow Interrupt Flag 820 volatile uint32_t TXUFI: 1; 821 // Receive Overflow Interrupt Flag 822 volatile uint32_t RXOFI: 1; 823 // Transmit FIFO Low Watermark Interrupt Flag 824 volatile uint32_t TXLWMI: 1; 825 // Receive FIFO High Watermark Interrupt Flag 826 volatile uint32_t RXHWMI: 1; 827 // Clock Divider Busy Flag 828 volatile uint32_t CDBUSYF: 1; 829 // Clock Divider Counter Status 830 volatile uint32_t CDSTS: 1; 831 // Transmit Clock Select Ready Flag 832 volatile uint32_t TXCLKSELRF: 1; 833 // Receive Clock Select Ready Flag 834 volatile uint32_t RXCLKSELRF: 1; 835 // Transmit Clock Enable Ready Flag 836 volatile uint32_t TXCLKENRF: 1; 837 // Receive Clock Enable Ready Flag 838 volatile uint32_t RXCLKENRF: 1; 839 uint32_t reserved0: 22; 840 }; 841 volatile uint32_t U32; 842 }; 843 }; 844 845 #define SI32_I2S_A_STATUS_TXUFI_MASK 0x00000001 846 #define SI32_I2S_A_STATUS_TXUFI_SHIFT 0 847 // A transmit underflow has not occurred. 848 #define SI32_I2S_A_STATUS_TXUFI_NOT_SET_VALUE 0 849 #define SI32_I2S_A_STATUS_TXUFI_NOT_SET_U32 \ 850 (SI32_I2S_A_STATUS_TXUFI_NOT_SET_VALUE << SI32_I2S_A_STATUS_TXUFI_SHIFT) 851 // A transmit underflow occurred. 852 #define SI32_I2S_A_STATUS_TXUFI_SET_VALUE 1 853 #define SI32_I2S_A_STATUS_TXUFI_SET_U32 \ 854 (SI32_I2S_A_STATUS_TXUFI_SET_VALUE << SI32_I2S_A_STATUS_TXUFI_SHIFT) 855 856 #define SI32_I2S_A_STATUS_RXOFI_MASK 0x00000002 857 #define SI32_I2S_A_STATUS_RXOFI_SHIFT 1 858 // A receive overflow has not occurred. 859 #define SI32_I2S_A_STATUS_RXOFI_NOT_SET_VALUE 0 860 #define SI32_I2S_A_STATUS_RXOFI_NOT_SET_U32 \ 861 (SI32_I2S_A_STATUS_RXOFI_NOT_SET_VALUE << SI32_I2S_A_STATUS_RXOFI_SHIFT) 862 // A receive overflow occurred. 863 #define SI32_I2S_A_STATUS_RXOFI_SET_VALUE 1 864 #define SI32_I2S_A_STATUS_RXOFI_SET_U32 \ 865 (SI32_I2S_A_STATUS_RXOFI_SET_VALUE << SI32_I2S_A_STATUS_RXOFI_SHIFT) 866 867 #define SI32_I2S_A_STATUS_TXLWMI_MASK 0x00000004 868 #define SI32_I2S_A_STATUS_TXLWMI_SHIFT 2 869 // Transmit FIFO level is above the low watermark. 870 #define SI32_I2S_A_STATUS_TXLWMI_NOT_SET_VALUE 0 871 #define SI32_I2S_A_STATUS_TXLWMI_NOT_SET_U32 \ 872 (SI32_I2S_A_STATUS_TXLWMI_NOT_SET_VALUE << SI32_I2S_A_STATUS_TXLWMI_SHIFT) 873 // Transmit FIFO level is at or below the low watermark. 874 #define SI32_I2S_A_STATUS_TXLWMI_SET_VALUE 1 875 #define SI32_I2S_A_STATUS_TXLWMI_SET_U32 \ 876 (SI32_I2S_A_STATUS_TXLWMI_SET_VALUE << SI32_I2S_A_STATUS_TXLWMI_SHIFT) 877 878 #define SI32_I2S_A_STATUS_RXHWMI_MASK 0x00000008 879 #define SI32_I2S_A_STATUS_RXHWMI_SHIFT 3 880 // Receive FIFO level is below the high watermark. 881 #define SI32_I2S_A_STATUS_RXHWMI_NOT_SET_VALUE 0 882 #define SI32_I2S_A_STATUS_RXHWMI_NOT_SET_U32 \ 883 (SI32_I2S_A_STATUS_RXHWMI_NOT_SET_VALUE << SI32_I2S_A_STATUS_RXHWMI_SHIFT) 884 // Receive FIFO level is at or above the high watermark. 885 #define SI32_I2S_A_STATUS_RXHWMI_SET_VALUE 1 886 #define SI32_I2S_A_STATUS_RXHWMI_SET_U32 \ 887 (SI32_I2S_A_STATUS_RXHWMI_SET_VALUE << SI32_I2S_A_STATUS_RXHWMI_SHIFT) 888 889 #define SI32_I2S_A_STATUS_CDBUSYF_MASK 0x00000010 890 #define SI32_I2S_A_STATUS_CDBUSYF_SHIFT 4 891 // The divider is not busy and an update is not pending. 892 #define SI32_I2S_A_STATUS_CDBUSYF_NOT_BUSY_VALUE 0 893 #define SI32_I2S_A_STATUS_CDBUSYF_NOT_BUSY_U32 \ 894 (SI32_I2S_A_STATUS_CDBUSYF_NOT_BUSY_VALUE << SI32_I2S_A_STATUS_CDBUSYF_SHIFT) 895 // The divider is busy and an update is pending. 896 #define SI32_I2S_A_STATUS_CDBUSYF_BUSY_VALUE 1 897 #define SI32_I2S_A_STATUS_CDBUSYF_BUSY_U32 \ 898 (SI32_I2S_A_STATUS_CDBUSYF_BUSY_VALUE << SI32_I2S_A_STATUS_CDBUSYF_SHIFT) 899 900 #define SI32_I2S_A_STATUS_CDSTS_MASK 0x00000020 901 #define SI32_I2S_A_STATUS_CDSTS_SHIFT 5 902 // Divided clock output is running. 903 #define SI32_I2S_A_STATUS_CDSTS_RUNNING_VALUE 0 904 #define SI32_I2S_A_STATUS_CDSTS_RUNNING_U32 \ 905 (SI32_I2S_A_STATUS_CDSTS_RUNNING_VALUE << SI32_I2S_A_STATUS_CDSTS_SHIFT) 906 // Divided clock output is halted. 907 #define SI32_I2S_A_STATUS_CDSTS_HALTED_VALUE 1 908 #define SI32_I2S_A_STATUS_CDSTS_HALTED_U32 \ 909 (SI32_I2S_A_STATUS_CDSTS_HALTED_VALUE << SI32_I2S_A_STATUS_CDSTS_SHIFT) 910 911 #define SI32_I2S_A_STATUS_TXCLKSELRF_MASK 0x00000040 912 #define SI32_I2S_A_STATUS_TXCLKSELRF_SHIFT 6 913 // The transmit clock is not synchronized. 914 #define SI32_I2S_A_STATUS_TXCLKSELRF_NOT_SET_VALUE 0 915 #define SI32_I2S_A_STATUS_TXCLKSELRF_NOT_SET_U32 \ 916 (SI32_I2S_A_STATUS_TXCLKSELRF_NOT_SET_VALUE << SI32_I2S_A_STATUS_TXCLKSELRF_SHIFT) 917 // The transmit clock is synchronized and the transmitter is ready to send data. 918 #define SI32_I2S_A_STATUS_TXCLKSELRF_SET_VALUE 1 919 #define SI32_I2S_A_STATUS_TXCLKSELRF_SET_U32 \ 920 (SI32_I2S_A_STATUS_TXCLKSELRF_SET_VALUE << SI32_I2S_A_STATUS_TXCLKSELRF_SHIFT) 921 922 #define SI32_I2S_A_STATUS_RXCLKSELRF_MASK 0x00000080 923 #define SI32_I2S_A_STATUS_RXCLKSELRF_SHIFT 7 924 // The receive clock is not synchronized. 925 #define SI32_I2S_A_STATUS_RXCLKSELRF_NOT_SET_VALUE 0 926 #define SI32_I2S_A_STATUS_RXCLKSELRF_NOT_SET_U32 \ 927 (SI32_I2S_A_STATUS_RXCLKSELRF_NOT_SET_VALUE << SI32_I2S_A_STATUS_RXCLKSELRF_SHIFT) 928 // The receive clock is synchronized and the receiver is ready to accept data. 929 #define SI32_I2S_A_STATUS_RXCLKSELRF_SET_VALUE 1 930 #define SI32_I2S_A_STATUS_RXCLKSELRF_SET_U32 \ 931 (SI32_I2S_A_STATUS_RXCLKSELRF_SET_VALUE << SI32_I2S_A_STATUS_RXCLKSELRF_SHIFT) 932 933 #define SI32_I2S_A_STATUS_TXCLKENRF_MASK 0x00000100 934 #define SI32_I2S_A_STATUS_TXCLKENRF_SHIFT 8 935 // The transmit clock is not synchronized. 936 #define SI32_I2S_A_STATUS_TXCLKENRF_NOT_SET_VALUE 0 937 #define SI32_I2S_A_STATUS_TXCLKENRF_NOT_SET_U32 \ 938 (SI32_I2S_A_STATUS_TXCLKENRF_NOT_SET_VALUE << SI32_I2S_A_STATUS_TXCLKENRF_SHIFT) 939 // The transmit clock is synchronized and the transmitter is ready to send data. 940 #define SI32_I2S_A_STATUS_TXCLKENRF_SET_VALUE 1 941 #define SI32_I2S_A_STATUS_TXCLKENRF_SET_U32 \ 942 (SI32_I2S_A_STATUS_TXCLKENRF_SET_VALUE << SI32_I2S_A_STATUS_TXCLKENRF_SHIFT) 943 944 #define SI32_I2S_A_STATUS_RXCLKENRF_MASK 0x00000200 945 #define SI32_I2S_A_STATUS_RXCLKENRF_SHIFT 9 946 // The receive clock is not synchronized. 947 #define SI32_I2S_A_STATUS_RXCLKENRF_NOT_SET_VALUE 0 948 #define SI32_I2S_A_STATUS_RXCLKENRF_NOT_SET_U32 \ 949 (SI32_I2S_A_STATUS_RXCLKENRF_NOT_SET_VALUE << SI32_I2S_A_STATUS_RXCLKENRF_SHIFT) 950 // The receive clock is synchronized and the receiver is ready to accept data. 951 #define SI32_I2S_A_STATUS_RXCLKENRF_SET_VALUE 1 952 #define SI32_I2S_A_STATUS_RXCLKENRF_SET_U32 \ 953 (SI32_I2S_A_STATUS_RXCLKENRF_SET_VALUE << SI32_I2S_A_STATUS_RXCLKENRF_SHIFT) 954 955 956 957 struct SI32_I2S_A_DMACONTROL_Struct 958 { 959 union 960 { 961 struct 962 { 963 // Transmit DMA Enable 964 volatile uint32_t TXDMAEN: 1; 965 // Receive DMA Enable 966 volatile uint32_t RXDMAEN: 1; 967 // Transmit DMA Burst Mode 968 volatile uint32_t TXDMABMD: 1; 969 // Receive DMA Burst Mode 970 volatile uint32_t RXDMABMD: 1; 971 uint32_t reserved0: 28; 972 }; 973 volatile uint32_t U32; 974 }; 975 }; 976 977 #define SI32_I2S_A_DMACONTROL_TXDMAEN_MASK 0x00000001 978 #define SI32_I2S_A_DMACONTROL_TXDMAEN_SHIFT 0 979 // Disable transmitter DMA data requests. 980 #define SI32_I2S_A_DMACONTROL_TXDMAEN_DISABLED_VALUE 0 981 #define SI32_I2S_A_DMACONTROL_TXDMAEN_DISABLED_U32 \ 982 (SI32_I2S_A_DMACONTROL_TXDMAEN_DISABLED_VALUE << SI32_I2S_A_DMACONTROL_TXDMAEN_SHIFT) 983 // Enable transmitter DMA data requests. 984 #define SI32_I2S_A_DMACONTROL_TXDMAEN_ENABLED_VALUE 1 985 #define SI32_I2S_A_DMACONTROL_TXDMAEN_ENABLED_U32 \ 986 (SI32_I2S_A_DMACONTROL_TXDMAEN_ENABLED_VALUE << SI32_I2S_A_DMACONTROL_TXDMAEN_SHIFT) 987 988 #define SI32_I2S_A_DMACONTROL_RXDMAEN_MASK 0x00000002 989 #define SI32_I2S_A_DMACONTROL_RXDMAEN_SHIFT 1 990 // Disable receiver DMA data transfer requests. 991 #define SI32_I2S_A_DMACONTROL_RXDMAEN_DISABLED_VALUE 0 992 #define SI32_I2S_A_DMACONTROL_RXDMAEN_DISABLED_U32 \ 993 (SI32_I2S_A_DMACONTROL_RXDMAEN_DISABLED_VALUE << SI32_I2S_A_DMACONTROL_RXDMAEN_SHIFT) 994 // Enable receiver DMA data transfer requests. 995 #define SI32_I2S_A_DMACONTROL_RXDMAEN_ENABLED_VALUE 1 996 #define SI32_I2S_A_DMACONTROL_RXDMAEN_ENABLED_U32 \ 997 (SI32_I2S_A_DMACONTROL_RXDMAEN_ENABLED_VALUE << SI32_I2S_A_DMACONTROL_RXDMAEN_SHIFT) 998 999 #define SI32_I2S_A_DMACONTROL_TXDMABMD_MASK 0x00000004 1000 #define SI32_I2S_A_DMACONTROL_TXDMABMD_SHIFT 2 1001 // The transmitter transmits one word at a time. Whenever there is any room in the 1002 // transmit FIFO, a single word burst DMA data request is generated. 1003 #define SI32_I2S_A_DMACONTROL_TXDMABMD_ONE_WORD_VALUE 0 1004 #define SI32_I2S_A_DMACONTROL_TXDMABMD_ONE_WORD_U32 \ 1005 (SI32_I2S_A_DMACONTROL_TXDMABMD_ONE_WORD_VALUE << SI32_I2S_A_DMACONTROL_TXDMABMD_SHIFT) 1006 // The transmitter transmits four words at a time. Whenever the FIFO depth drops 1007 // below five, a DMA burst request is generated for four words. 1008 #define SI32_I2S_A_DMACONTROL_TXDMABMD_FOUR_WORDS_VALUE 1 1009 #define SI32_I2S_A_DMACONTROL_TXDMABMD_FOUR_WORDS_U32 \ 1010 (SI32_I2S_A_DMACONTROL_TXDMABMD_FOUR_WORDS_VALUE << SI32_I2S_A_DMACONTROL_TXDMABMD_SHIFT) 1011 1012 #define SI32_I2S_A_DMACONTROL_RXDMABMD_MASK 0x00000008 1013 #define SI32_I2S_A_DMACONTROL_RXDMABMD_SHIFT 3 1014 // The receiver receives one word at a time. Whenever there is at least one word in 1015 // the receive FIFO, a single word burst DMA request is generated. 1016 #define SI32_I2S_A_DMACONTROL_RXDMABMD_ONE_WORD_VALUE 0 1017 #define SI32_I2S_A_DMACONTROL_RXDMABMD_ONE_WORD_U32 \ 1018 (SI32_I2S_A_DMACONTROL_RXDMABMD_ONE_WORD_VALUE << SI32_I2S_A_DMACONTROL_RXDMABMD_SHIFT) 1019 // The receiver receives four words at a time. Whenever the FIFO depth rises above 1020 // three, a DMA burst request is generated for four words. 1021 #define SI32_I2S_A_DMACONTROL_RXDMABMD_FOUR_WORDS_VALUE 1 1022 #define SI32_I2S_A_DMACONTROL_RXDMABMD_FOUR_WORDS_U32 \ 1023 (SI32_I2S_A_DMACONTROL_RXDMABMD_FOUR_WORDS_VALUE << SI32_I2S_A_DMACONTROL_RXDMABMD_SHIFT) 1024 1025 1026 1027 struct SI32_I2S_A_DBGCONTROL_Struct 1028 { 1029 union 1030 { 1031 struct 1032 { 1033 // I2S Transmit DMA Debug Halt Enable 1034 volatile uint32_t TXDBGHEN: 1; 1035 // I2S Receive DMA Debug Halt Enable 1036 volatile uint32_t RXDBGHEN: 1; 1037 // I2S Transmit Debug Mode 1038 volatile uint32_t TXDBGMD: 1; 1039 // I2S Receive Debug Mode 1040 volatile uint32_t RXDBGMD: 1; 1041 uint32_t reserved0: 28; 1042 }; 1043 volatile uint32_t U32; 1044 }; 1045 }; 1046 1047 #define SI32_I2S_A_DBGCONTROL_TXDBGHEN_MASK 0x00000001 1048 #define SI32_I2S_A_DBGCONTROL_TXDBGHEN_SHIFT 0 1049 // Transmit DMA requests continue while the core is debug mode. 1050 #define SI32_I2S_A_DBGCONTROL_TXDBGHEN_DISABLED_VALUE 0 1051 #define SI32_I2S_A_DBGCONTROL_TXDBGHEN_DISABLED_U32 \ 1052 (SI32_I2S_A_DBGCONTROL_TXDBGHEN_DISABLED_VALUE << SI32_I2S_A_DBGCONTROL_TXDBGHEN_SHIFT) 1053 // Transmit DMA requests stop while the core is debug mode. 1054 #define SI32_I2S_A_DBGCONTROL_TXDBGHEN_ENABLED_VALUE 1 1055 #define SI32_I2S_A_DBGCONTROL_TXDBGHEN_ENABLED_U32 \ 1056 (SI32_I2S_A_DBGCONTROL_TXDBGHEN_ENABLED_VALUE << SI32_I2S_A_DBGCONTROL_TXDBGHEN_SHIFT) 1057 1058 #define SI32_I2S_A_DBGCONTROL_RXDBGHEN_MASK 0x00000002 1059 #define SI32_I2S_A_DBGCONTROL_RXDBGHEN_SHIFT 1 1060 // Receive DMA requests continue while the core is debug mode. 1061 #define SI32_I2S_A_DBGCONTROL_RXDBGHEN_DISABLED_VALUE 0 1062 #define SI32_I2S_A_DBGCONTROL_RXDBGHEN_DISABLED_U32 \ 1063 (SI32_I2S_A_DBGCONTROL_RXDBGHEN_DISABLED_VALUE << SI32_I2S_A_DBGCONTROL_RXDBGHEN_SHIFT) 1064 // Receive DMA requests stop while the core is debug mode. 1065 #define SI32_I2S_A_DBGCONTROL_RXDBGHEN_ENABLED_VALUE 1 1066 #define SI32_I2S_A_DBGCONTROL_RXDBGHEN_ENABLED_U32 \ 1067 (SI32_I2S_A_DBGCONTROL_RXDBGHEN_ENABLED_VALUE << SI32_I2S_A_DBGCONTROL_RXDBGHEN_SHIFT) 1068 1069 #define SI32_I2S_A_DBGCONTROL_TXDBGMD_MASK 0x00000004 1070 #define SI32_I2S_A_DBGCONTROL_TXDBGMD_SHIFT 2 1071 // The clock to the I2S transmitter is active in debug mode. 1072 #define SI32_I2S_A_DBGCONTROL_TXDBGMD_RUN_VALUE 0 1073 #define SI32_I2S_A_DBGCONTROL_TXDBGMD_RUN_U32 \ 1074 (SI32_I2S_A_DBGCONTROL_TXDBGMD_RUN_VALUE << SI32_I2S_A_DBGCONTROL_TXDBGMD_SHIFT) 1075 // The clock to the I2S transmitter is not active in debug mode. The clock divider 1076 // keeps running and the clock will be disabled when two samples are ready to be 1077 // sent by the transmitter. 1078 #define SI32_I2S_A_DBGCONTROL_TXDBGMD_HALT_VALUE 1 1079 #define SI32_I2S_A_DBGCONTROL_TXDBGMD_HALT_U32 \ 1080 (SI32_I2S_A_DBGCONTROL_TXDBGMD_HALT_VALUE << SI32_I2S_A_DBGCONTROL_TXDBGMD_SHIFT) 1081 1082 #define SI32_I2S_A_DBGCONTROL_RXDBGMD_MASK 0x00000008 1083 #define SI32_I2S_A_DBGCONTROL_RXDBGMD_SHIFT 3 1084 // The clock to the I2S receiver is active in debug mode. 1085 #define SI32_I2S_A_DBGCONTROL_RXDBGMD_RUN_VALUE 0 1086 #define SI32_I2S_A_DBGCONTROL_RXDBGMD_RUN_U32 \ 1087 (SI32_I2S_A_DBGCONTROL_RXDBGMD_RUN_VALUE << SI32_I2S_A_DBGCONTROL_RXDBGMD_SHIFT) 1088 // The clock to the I2S receiver is not active in debug mode. The clock divider 1089 // keeps running and the clock will be disabled when two samples are captured in 1090 // the receiver. 1091 #define SI32_I2S_A_DBGCONTROL_RXDBGMD_HALT_VALUE 1 1092 #define SI32_I2S_A_DBGCONTROL_RXDBGMD_HALT_U32 \ 1093 (SI32_I2S_A_DBGCONTROL_RXDBGMD_HALT_VALUE << SI32_I2S_A_DBGCONTROL_RXDBGMD_SHIFT) 1094 1095 1096 1097 typedef struct SI32_I2S_A_Struct 1098 { 1099 struct SI32_I2S_A_TXCONTROL_Struct TXCONTROL ; // Base Address + 0x0 1100 volatile uint32_t TXCONTROL_SET; 1101 volatile uint32_t TXCONTROL_CLR; 1102 uint32_t reserved0; 1103 struct SI32_I2S_A_TXMODE_Struct TXMODE ; // Base Address + 0x10 1104 volatile uint32_t TXMODE_SET; 1105 volatile uint32_t TXMODE_CLR; 1106 uint32_t reserved1; 1107 struct SI32_I2S_A_FSDUTY_Struct FSDUTY ; // Base Address + 0x20 1108 uint32_t reserved2; 1109 uint32_t reserved3; 1110 uint32_t reserved4; 1111 struct SI32_I2S_A_RXCONTROL_Struct RXCONTROL ; // Base Address + 0x30 1112 volatile uint32_t RXCONTROL_SET; 1113 volatile uint32_t RXCONTROL_CLR; 1114 uint32_t reserved5; 1115 struct SI32_I2S_A_RXMODE_Struct RXMODE ; // Base Address + 0x40 1116 volatile uint32_t RXMODE_SET; 1117 volatile uint32_t RXMODE_CLR; 1118 uint32_t reserved6; 1119 struct SI32_I2S_A_CLKCONTROL_Struct CLKCONTROL ; // Base Address + 0x50 1120 volatile uint32_t CLKCONTROL_SET; 1121 volatile uint32_t CLKCONTROL_CLR; 1122 uint32_t reserved7; 1123 struct SI32_I2S_A_TXFIFO_Struct TXFIFO ; // Base Address + 0x60 1124 uint32_t reserved8; 1125 uint32_t reserved9; 1126 uint32_t reserved10; 1127 struct SI32_I2S_A_RXFIFO_Struct RXFIFO ; // Base Address + 0x70 1128 uint32_t reserved11; 1129 uint32_t reserved12; 1130 uint32_t reserved13; 1131 struct SI32_I2S_A_FIFOSTATUS_Struct FIFOSTATUS ; // Base Address + 0x80 1132 uint32_t reserved14; 1133 uint32_t reserved15; 1134 uint32_t reserved16; 1135 struct SI32_I2S_A_FIFOCONTROL_Struct FIFOCONTROL ; // Base Address + 0x90 1136 volatile uint32_t FIFOCONTROL_SET; 1137 volatile uint32_t FIFOCONTROL_CLR; 1138 uint32_t reserved17; 1139 struct SI32_I2S_A_INTCONTROL_Struct INTCONTROL ; // Base Address + 0xa0 1140 volatile uint32_t INTCONTROL_SET; 1141 volatile uint32_t INTCONTROL_CLR; 1142 uint32_t reserved18; 1143 struct SI32_I2S_A_STATUS_Struct STATUS ; // Base Address + 0xb0 1144 volatile uint32_t STATUS_SET; 1145 volatile uint32_t STATUS_CLR; 1146 uint32_t reserved19; 1147 struct SI32_I2S_A_DMACONTROL_Struct DMACONTROL ; // Base Address + 0xc0 1148 volatile uint32_t DMACONTROL_SET; 1149 volatile uint32_t DMACONTROL_CLR; 1150 uint32_t reserved20; 1151 struct SI32_I2S_A_DBGCONTROL_Struct DBGCONTROL ; // Base Address + 0xd0 1152 volatile uint32_t DBGCONTROL_SET; 1153 volatile uint32_t DBGCONTROL_CLR; 1154 uint32_t reserved21; 1155 } SI32_I2S_A_Type; 1156 1157 #ifdef __cplusplus 1158 } 1159 #endif 1160 1161 #endif // __SI32_I2S_A_REGISTERS_H__ 1162 1163 //-eof-------------------------------------------------------------------------- 1164 1165