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_SPI_B_REGISTERS_H__ 27 #define __SI32_SPI_B_REGISTERS_H__ 28 29 #include <stdint.h> 30 31 #ifdef __cplusplus 32 extern "C" { 33 #endif 34 35 struct SI32_SPI_B_DATA_Struct 36 { 37 union 38 { 39 // This is a FIFO register 40 volatile uint8_t U8; 41 volatile uint16_t U16; 42 volatile uint32_t U32; 43 }; 44 }; 45 46 #define SI32_SPI_B_DATA_DATA_MASK 0xFFFFFFFF 47 #define SI32_SPI_B_DATA_DATA_SHIFT 0 48 49 50 51 struct SI32_SPI_B_CONTROL_Struct 52 { 53 union 54 { 55 struct 56 { 57 // Receive FIFO Read Request Interrupt Flag 58 volatile uint32_t RFRQI: 1; 59 // Receive FIFO Overrun Interrupt Flag 60 volatile uint32_t RFORI: 1; 61 // Transmit FIFO Write Request Interrupt Flag 62 volatile uint32_t TFRQI: 1; 63 // Transmit FIFO Overrun Interrupt Flag 64 volatile uint32_t TFORI: 1; 65 // Slave Selected Interrupt Flag 66 volatile uint32_t SLVSELI: 1; 67 // Mode Fault Interrupt Flag 68 volatile uint32_t MDFI: 1; 69 // Underrun Interrupt Flag 70 volatile uint32_t URI: 1; 71 // Shift Register Empty Interrupt Flag 72 volatile uint32_t SREI: 1; 73 // Illegal Receive FIFO Access Interrupt Flag 74 volatile uint32_t RFILI: 1; 75 // Illegal Transmit FIFO Access Interrupt Flag 76 volatile uint32_t TFILI: 1; 77 uint32_t reserved0: 4; 78 // NSS Instantaneous Pin Status 79 volatile uint32_t NSSSTS: 1; 80 // SPI Busy 81 volatile uint32_t BUSYF: 1; 82 // Receive FIFO Counter 83 volatile uint32_t RFCNT: 4; 84 // Transmit FIFO Counter 85 volatile uint32_t TFCNT: 4; 86 // SPI Debug Mode 87 volatile uint32_t DBGMD: 1; 88 uint32_t reserved1: 7; 89 }; 90 volatile uint32_t U32; 91 }; 92 }; 93 94 #define SI32_SPI_B_CONTROL_RFRQI_MASK 0x00000001 95 #define SI32_SPI_B_CONTROL_RFRQI_SHIFT 0 96 // The RX FIFO has fewer bytes than the level defined by RFTH. 97 #define SI32_SPI_B_CONTROL_RFRQI_NOT_SET_VALUE 0 98 #define SI32_SPI_B_CONTROL_RFRQI_NOT_SET_U32 \ 99 (SI32_SPI_B_CONTROL_RFRQI_NOT_SET_VALUE << SI32_SPI_B_CONTROL_RFRQI_SHIFT) 100 // The RX FIFO has equal or more bytes than the level defined by RFTH. 101 #define SI32_SPI_B_CONTROL_RFRQI_SET_VALUE 1 102 #define SI32_SPI_B_CONTROL_RFRQI_SET_U32 \ 103 (SI32_SPI_B_CONTROL_RFRQI_SET_VALUE << SI32_SPI_B_CONTROL_RFRQI_SHIFT) 104 105 #define SI32_SPI_B_CONTROL_RFORI_MASK 0x00000002 106 #define SI32_SPI_B_CONTROL_RFORI_SHIFT 1 107 // Read: A receive FIFO overrun has not occurred. Write: Clear the flag. 108 #define SI32_SPI_B_CONTROL_RFORI_NOT_SET_VALUE 0 109 #define SI32_SPI_B_CONTROL_RFORI_NOT_SET_U32 \ 110 (SI32_SPI_B_CONTROL_RFORI_NOT_SET_VALUE << SI32_SPI_B_CONTROL_RFORI_SHIFT) 111 // Read: A receive FIFO overrun occurred. Write: Force a receive overrun 112 // interrupt. 113 #define SI32_SPI_B_CONTROL_RFORI_SET_VALUE 1 114 #define SI32_SPI_B_CONTROL_RFORI_SET_U32 \ 115 (SI32_SPI_B_CONTROL_RFORI_SET_VALUE << SI32_SPI_B_CONTROL_RFORI_SHIFT) 116 117 #define SI32_SPI_B_CONTROL_TFRQI_MASK 0x00000004 118 #define SI32_SPI_B_CONTROL_TFRQI_SHIFT 2 119 // The TX FIFO has fewer empty slots than the level defined by TFTH. 120 #define SI32_SPI_B_CONTROL_TFRQI_NOT_SET_VALUE 0 121 #define SI32_SPI_B_CONTROL_TFRQI_NOT_SET_U32 \ 122 (SI32_SPI_B_CONTROL_TFRQI_NOT_SET_VALUE << SI32_SPI_B_CONTROL_TFRQI_SHIFT) 123 // The TX FIFO has at least as many empty slots as the level defined by TFTH. 124 #define SI32_SPI_B_CONTROL_TFRQI_SET_VALUE 1 125 #define SI32_SPI_B_CONTROL_TFRQI_SET_U32 \ 126 (SI32_SPI_B_CONTROL_TFRQI_SET_VALUE << SI32_SPI_B_CONTROL_TFRQI_SHIFT) 127 128 #define SI32_SPI_B_CONTROL_TFORI_MASK 0x00000008 129 #define SI32_SPI_B_CONTROL_TFORI_SHIFT 3 130 // Read: A transmit FIFO overrun has not occurred. Write: Clear the flag. 131 #define SI32_SPI_B_CONTROL_TFORI_NOT_SET_VALUE 0 132 #define SI32_SPI_B_CONTROL_TFORI_NOT_SET_U32 \ 133 (SI32_SPI_B_CONTROL_TFORI_NOT_SET_VALUE << SI32_SPI_B_CONTROL_TFORI_SHIFT) 134 // Read: A transmit FIFO overrun occurred. Write: Force a transmit overrun 135 // interrupt. 136 #define SI32_SPI_B_CONTROL_TFORI_SET_VALUE 1 137 #define SI32_SPI_B_CONTROL_TFORI_SET_U32 \ 138 (SI32_SPI_B_CONTROL_TFORI_SET_VALUE << SI32_SPI_B_CONTROL_TFORI_SHIFT) 139 140 #define SI32_SPI_B_CONTROL_SLVSELI_MASK 0x00000010 141 #define SI32_SPI_B_CONTROL_SLVSELI_SHIFT 4 142 // The slave select signal (NSS) is not active. 143 #define SI32_SPI_B_CONTROL_SLVSELI_NOT_SET_VALUE 0 144 #define SI32_SPI_B_CONTROL_SLVSELI_NOT_SET_U32 \ 145 (SI32_SPI_B_CONTROL_SLVSELI_NOT_SET_VALUE << SI32_SPI_B_CONTROL_SLVSELI_SHIFT) 146 // The slave select signal (NSS) is active. 147 #define SI32_SPI_B_CONTROL_SLVSELI_SET_VALUE 1 148 #define SI32_SPI_B_CONTROL_SLVSELI_SET_U32 \ 149 (SI32_SPI_B_CONTROL_SLVSELI_SET_VALUE << SI32_SPI_B_CONTROL_SLVSELI_SHIFT) 150 151 #define SI32_SPI_B_CONTROL_MDFI_MASK 0x00000020 152 #define SI32_SPI_B_CONTROL_MDFI_SHIFT 5 153 // Read: A master mode collision is not detected. Write: Clear the flag. 154 #define SI32_SPI_B_CONTROL_MDFI_NOT_SET_VALUE 0 155 #define SI32_SPI_B_CONTROL_MDFI_NOT_SET_U32 \ 156 (SI32_SPI_B_CONTROL_MDFI_NOT_SET_VALUE << SI32_SPI_B_CONTROL_MDFI_SHIFT) 157 // Read: A master mode collision occurred. Write: Force a mode fault interrupt. 158 #define SI32_SPI_B_CONTROL_MDFI_SET_VALUE 1 159 #define SI32_SPI_B_CONTROL_MDFI_SET_U32 \ 160 (SI32_SPI_B_CONTROL_MDFI_SET_VALUE << SI32_SPI_B_CONTROL_MDFI_SHIFT) 161 162 #define SI32_SPI_B_CONTROL_URI_MASK 0x00000040 163 #define SI32_SPI_B_CONTROL_URI_SHIFT 6 164 // Read: A data transfer is still in progress. Write: Clear the flag. 165 #define SI32_SPI_B_CONTROL_URI_NOT_SET_VALUE 0 166 #define SI32_SPI_B_CONTROL_URI_NOT_SET_U32 \ 167 (SI32_SPI_B_CONTROL_URI_NOT_SET_VALUE << SI32_SPI_B_CONTROL_URI_SHIFT) 168 // Read: The transmit FIFO and shift register are empty and the data transfer has 169 // ended. Write: Force an underrun interrupt. 170 #define SI32_SPI_B_CONTROL_URI_SET_VALUE 1 171 #define SI32_SPI_B_CONTROL_URI_SET_U32 \ 172 (SI32_SPI_B_CONTROL_URI_SET_VALUE << SI32_SPI_B_CONTROL_URI_SHIFT) 173 174 #define SI32_SPI_B_CONTROL_SREI_MASK 0x00000080 175 #define SI32_SPI_B_CONTROL_SREI_SHIFT 7 176 // There is data still present in the transmit FIFO or shift register. 177 #define SI32_SPI_B_CONTROL_SREI_NOT_SET_VALUE 0 178 #define SI32_SPI_B_CONTROL_SREI_NOT_SET_U32 \ 179 (SI32_SPI_B_CONTROL_SREI_NOT_SET_VALUE << SI32_SPI_B_CONTROL_SREI_SHIFT) 180 // All data has been transferred out of the shift register and there is no data 181 // waiting in the transmit FIFO. 182 #define SI32_SPI_B_CONTROL_SREI_SET_VALUE 1 183 #define SI32_SPI_B_CONTROL_SREI_SET_U32 \ 184 (SI32_SPI_B_CONTROL_SREI_SET_VALUE << SI32_SPI_B_CONTROL_SREI_SHIFT) 185 186 #define SI32_SPI_B_CONTROL_RFILI_MASK 0x00000100 187 #define SI32_SPI_B_CONTROL_RFILI_SHIFT 8 188 // Read: An illegal write or read of the receive FIFO has not occurred. Write: 189 // Clear the flag. 190 #define SI32_SPI_B_CONTROL_RFILI_NOT_SET_VALUE 0 191 #define SI32_SPI_B_CONTROL_RFILI_NOT_SET_U32 \ 192 (SI32_SPI_B_CONTROL_RFILI_NOT_SET_VALUE << SI32_SPI_B_CONTROL_RFILI_SHIFT) 193 // Read: An illegal write or read of the receive FIFO occurred. Write: Force an 194 // illegal receive access interrupt. 195 #define SI32_SPI_B_CONTROL_RFILI_SET_VALUE 1 196 #define SI32_SPI_B_CONTROL_RFILI_SET_U32 \ 197 (SI32_SPI_B_CONTROL_RFILI_SET_VALUE << SI32_SPI_B_CONTROL_RFILI_SHIFT) 198 199 #define SI32_SPI_B_CONTROL_TFILI_MASK 0x00000200 200 #define SI32_SPI_B_CONTROL_TFILI_SHIFT 9 201 // Read: An illegal write or read of the transmit FIFO has not occurred. Write: 202 // Clear the flag. 203 #define SI32_SPI_B_CONTROL_TFILI_NOT_SET_VALUE 0 204 #define SI32_SPI_B_CONTROL_TFILI_NOT_SET_U32 \ 205 (SI32_SPI_B_CONTROL_TFILI_NOT_SET_VALUE << SI32_SPI_B_CONTROL_TFILI_SHIFT) 206 // Read: An illegal write or read of the transmit FIFO occurred. Write: Force an 207 // illegal transmit access interrupt. 208 #define SI32_SPI_B_CONTROL_TFILI_SET_VALUE 1 209 #define SI32_SPI_B_CONTROL_TFILI_SET_U32 \ 210 (SI32_SPI_B_CONTROL_TFILI_SET_VALUE << SI32_SPI_B_CONTROL_TFILI_SHIFT) 211 212 #define SI32_SPI_B_CONTROL_NSSSTS_MASK 0x00004000 213 #define SI32_SPI_B_CONTROL_NSSSTS_SHIFT 14 214 // NSS is currently a logic low. 215 #define SI32_SPI_B_CONTROL_NSSSTS_LOW_VALUE 0 216 #define SI32_SPI_B_CONTROL_NSSSTS_LOW_U32 \ 217 (SI32_SPI_B_CONTROL_NSSSTS_LOW_VALUE << SI32_SPI_B_CONTROL_NSSSTS_SHIFT) 218 // NSS is currently a logic high. 219 #define SI32_SPI_B_CONTROL_NSSSTS_HIGH_VALUE 1 220 #define SI32_SPI_B_CONTROL_NSSSTS_HIGH_U32 \ 221 (SI32_SPI_B_CONTROL_NSSSTS_HIGH_VALUE << SI32_SPI_B_CONTROL_NSSSTS_SHIFT) 222 223 #define SI32_SPI_B_CONTROL_BUSYF_MASK 0x00008000 224 #define SI32_SPI_B_CONTROL_BUSYF_SHIFT 15 225 // The SPI is not busy and a transfer is not in progress. 226 #define SI32_SPI_B_CONTROL_BUSYF_NOT_SET_VALUE 0 227 #define SI32_SPI_B_CONTROL_BUSYF_NOT_SET_U32 \ 228 (SI32_SPI_B_CONTROL_BUSYF_NOT_SET_VALUE << SI32_SPI_B_CONTROL_BUSYF_SHIFT) 229 // The SPI is currently busy and a transfer is in progress. 230 #define SI32_SPI_B_CONTROL_BUSYF_SET_VALUE 1 231 #define SI32_SPI_B_CONTROL_BUSYF_SET_U32 \ 232 (SI32_SPI_B_CONTROL_BUSYF_SET_VALUE << SI32_SPI_B_CONTROL_BUSYF_SHIFT) 233 234 #define SI32_SPI_B_CONTROL_RFCNT_MASK 0x000F0000 235 #define SI32_SPI_B_CONTROL_RFCNT_SHIFT 16 236 237 #define SI32_SPI_B_CONTROL_TFCNT_MASK 0x00F00000 238 #define SI32_SPI_B_CONTROL_TFCNT_SHIFT 20 239 240 #define SI32_SPI_B_CONTROL_DBGMD_MASK 0x01000000 241 #define SI32_SPI_B_CONTROL_DBGMD_SHIFT 24 242 // The SPI module will continue to operate while the core is halted in debug mode. 243 #define SI32_SPI_B_CONTROL_DBGMD_RUN_VALUE 0 244 #define SI32_SPI_B_CONTROL_DBGMD_RUN_U32 \ 245 (SI32_SPI_B_CONTROL_DBGMD_RUN_VALUE << SI32_SPI_B_CONTROL_DBGMD_SHIFT) 246 // A debug breakpoint will cause the SPI module to halt. 247 #define SI32_SPI_B_CONTROL_DBGMD_HALT_VALUE 1 248 #define SI32_SPI_B_CONTROL_DBGMD_HALT_U32 \ 249 (SI32_SPI_B_CONTROL_DBGMD_HALT_VALUE << SI32_SPI_B_CONTROL_DBGMD_SHIFT) 250 251 252 253 struct SI32_SPI_B_CONFIG_Struct 254 { 255 union 256 { 257 struct 258 { 259 // Receive FIFO Read Request Interrupt Enable 260 volatile uint32_t RFRQIEN: 1; 261 // Receive FIFO Overrun Interrupt Enable 262 volatile uint32_t RFORIEN: 1; 263 // Transmit FIFO Write Request Interrupt Enable 264 volatile uint32_t TFRQIEN: 1; 265 // Transmit FIFO Overrun Interrupt Enable 266 volatile uint32_t TFORIEN: 1; 267 // Slave Selected Interrupt Enable 268 volatile uint32_t SLVSELIEN: 1; 269 // Mode Fault Interrupt Enable 270 volatile uint32_t MDFIEN: 1; 271 // Underrun Interrupt Enable 272 volatile uint32_t URIEN: 1; 273 // Shift Register Empty Interrupt Enable 274 volatile uint32_t SREIEN: 1; 275 // SPI Enable 276 volatile uint32_t SPIEN: 1; 277 // Master Mode Enable 278 volatile uint32_t MSTEN: 1; 279 // SPI Clock Polarity 280 volatile uint32_t CLKPOL: 1; 281 // SPI Clock Phase 282 volatile uint32_t CLKPHA: 1; 283 // Slave Select Polarity Select 284 volatile uint32_t NSSPOL: 1; 285 // Data Direction Select 286 volatile uint32_t DDIRSEL: 1; 287 // Slave Select Mode 288 volatile uint32_t NSSMD: 2; 289 // Receive FIFO Threshold 290 volatile uint32_t RFTH: 2; 291 // Transmit FIFO Threshold 292 volatile uint32_t TFTH: 2; 293 // Data Size 294 volatile uint32_t DSIZE: 4; 295 // DMA Enable 296 volatile uint32_t DMAEN: 1; 297 uint32_t reserved0: 4; 298 // Receive FIFO Flush 299 volatile uint32_t RFIFOFL: 1; 300 // Transmit FIFO Flush 301 volatile uint32_t TFIFOFL: 1; 302 // Module Soft Reset 303 volatile uint32_t RESET: 1; 304 }; 305 volatile uint32_t U32; 306 }; 307 }; 308 309 #define SI32_SPI_B_CONFIG_RFRQIEN_MASK 0x00000001 310 #define SI32_SPI_B_CONFIG_RFRQIEN_SHIFT 0 311 // Disable the receive FIFO request interrupt. 312 #define SI32_SPI_B_CONFIG_RFRQIEN_DISABLED_VALUE 0 313 #define SI32_SPI_B_CONFIG_RFRQIEN_DISABLED_U32 \ 314 (SI32_SPI_B_CONFIG_RFRQIEN_DISABLED_VALUE << SI32_SPI_B_CONFIG_RFRQIEN_SHIFT) 315 // Enable the receive FIFO request interrupt. 316 #define SI32_SPI_B_CONFIG_RFRQIEN_ENABLED_VALUE 1 317 #define SI32_SPI_B_CONFIG_RFRQIEN_ENABLED_U32 \ 318 (SI32_SPI_B_CONFIG_RFRQIEN_ENABLED_VALUE << SI32_SPI_B_CONFIG_RFRQIEN_SHIFT) 319 320 #define SI32_SPI_B_CONFIG_RFORIEN_MASK 0x00000002 321 #define SI32_SPI_B_CONFIG_RFORIEN_SHIFT 1 322 // Disable the receive FIFO overrun interrupt. 323 #define SI32_SPI_B_CONFIG_RFORIEN_DISABLED_VALUE 0 324 #define SI32_SPI_B_CONFIG_RFORIEN_DISABLED_U32 \ 325 (SI32_SPI_B_CONFIG_RFORIEN_DISABLED_VALUE << SI32_SPI_B_CONFIG_RFORIEN_SHIFT) 326 // Enable the receive FIFO overrun interrupt. 327 #define SI32_SPI_B_CONFIG_RFORIEN_ENABLED_VALUE 1 328 #define SI32_SPI_B_CONFIG_RFORIEN_ENABLED_U32 \ 329 (SI32_SPI_B_CONFIG_RFORIEN_ENABLED_VALUE << SI32_SPI_B_CONFIG_RFORIEN_SHIFT) 330 331 #define SI32_SPI_B_CONFIG_TFRQIEN_MASK 0x00000004 332 #define SI32_SPI_B_CONFIG_TFRQIEN_SHIFT 2 333 // Disable the transmit FIFO data request interrupt. 334 #define SI32_SPI_B_CONFIG_TFRQIEN_DISABLED_VALUE 0 335 #define SI32_SPI_B_CONFIG_TFRQIEN_DISABLED_U32 \ 336 (SI32_SPI_B_CONFIG_TFRQIEN_DISABLED_VALUE << SI32_SPI_B_CONFIG_TFRQIEN_SHIFT) 337 // Enable the transmit FIFO data request interrupt. 338 #define SI32_SPI_B_CONFIG_TFRQIEN_ENABLED_VALUE 1 339 #define SI32_SPI_B_CONFIG_TFRQIEN_ENABLED_U32 \ 340 (SI32_SPI_B_CONFIG_TFRQIEN_ENABLED_VALUE << SI32_SPI_B_CONFIG_TFRQIEN_SHIFT) 341 342 #define SI32_SPI_B_CONFIG_TFORIEN_MASK 0x00000008 343 #define SI32_SPI_B_CONFIG_TFORIEN_SHIFT 3 344 // Disable the transmit FIFO overrun interrupt. 345 #define SI32_SPI_B_CONFIG_TFORIEN_DISABLED_VALUE 0 346 #define SI32_SPI_B_CONFIG_TFORIEN_DISABLED_U32 \ 347 (SI32_SPI_B_CONFIG_TFORIEN_DISABLED_VALUE << SI32_SPI_B_CONFIG_TFORIEN_SHIFT) 348 // Enable the transmit FIFO overrun interrupt. 349 #define SI32_SPI_B_CONFIG_TFORIEN_ENABLED_VALUE 1 350 #define SI32_SPI_B_CONFIG_TFORIEN_ENABLED_U32 \ 351 (SI32_SPI_B_CONFIG_TFORIEN_ENABLED_VALUE << SI32_SPI_B_CONFIG_TFORIEN_SHIFT) 352 353 #define SI32_SPI_B_CONFIG_SLVSELIEN_MASK 0x00000010 354 #define SI32_SPI_B_CONFIG_SLVSELIEN_SHIFT 4 355 // Disable the slave select interrupt. 356 #define SI32_SPI_B_CONFIG_SLVSELIEN_DISABLED_VALUE 0 357 #define SI32_SPI_B_CONFIG_SLVSELIEN_DISABLED_U32 \ 358 (SI32_SPI_B_CONFIG_SLVSELIEN_DISABLED_VALUE << SI32_SPI_B_CONFIG_SLVSELIEN_SHIFT) 359 // Enable the slave select interrupt. 360 #define SI32_SPI_B_CONFIG_SLVSELIEN_ENABLED_VALUE 1 361 #define SI32_SPI_B_CONFIG_SLVSELIEN_ENABLED_U32 \ 362 (SI32_SPI_B_CONFIG_SLVSELIEN_ENABLED_VALUE << SI32_SPI_B_CONFIG_SLVSELIEN_SHIFT) 363 364 #define SI32_SPI_B_CONFIG_MDFIEN_MASK 0x00000020 365 #define SI32_SPI_B_CONFIG_MDFIEN_SHIFT 5 366 // Disable the mode fault interrupt. 367 #define SI32_SPI_B_CONFIG_MDFIEN_DISABLED_VALUE 0 368 #define SI32_SPI_B_CONFIG_MDFIEN_DISABLED_U32 \ 369 (SI32_SPI_B_CONFIG_MDFIEN_DISABLED_VALUE << SI32_SPI_B_CONFIG_MDFIEN_SHIFT) 370 // Enable the mode fault interrupt. 371 #define SI32_SPI_B_CONFIG_MDFIEN_ENABLED_VALUE 1 372 #define SI32_SPI_B_CONFIG_MDFIEN_ENABLED_U32 \ 373 (SI32_SPI_B_CONFIG_MDFIEN_ENABLED_VALUE << SI32_SPI_B_CONFIG_MDFIEN_SHIFT) 374 375 #define SI32_SPI_B_CONFIG_URIEN_MASK 0x00000040 376 #define SI32_SPI_B_CONFIG_URIEN_SHIFT 6 377 // Disable the underrun interrupt. 378 #define SI32_SPI_B_CONFIG_URIEN_DISABLED_VALUE 0 379 #define SI32_SPI_B_CONFIG_URIEN_DISABLED_U32 \ 380 (SI32_SPI_B_CONFIG_URIEN_DISABLED_VALUE << SI32_SPI_B_CONFIG_URIEN_SHIFT) 381 // Enable the underrun interrupt. 382 #define SI32_SPI_B_CONFIG_URIEN_ENABLED_VALUE 1 383 #define SI32_SPI_B_CONFIG_URIEN_ENABLED_U32 \ 384 (SI32_SPI_B_CONFIG_URIEN_ENABLED_VALUE << SI32_SPI_B_CONFIG_URIEN_SHIFT) 385 386 #define SI32_SPI_B_CONFIG_SREIEN_MASK 0x00000080 387 #define SI32_SPI_B_CONFIG_SREIEN_SHIFT 7 388 // Disable the shift register empty interrupt. 389 #define SI32_SPI_B_CONFIG_SREIEN_DISABLED_VALUE 0 390 #define SI32_SPI_B_CONFIG_SREIEN_DISABLED_U32 \ 391 (SI32_SPI_B_CONFIG_SREIEN_DISABLED_VALUE << SI32_SPI_B_CONFIG_SREIEN_SHIFT) 392 // Enable the shift register empty interrupt. 393 #define SI32_SPI_B_CONFIG_SREIEN_ENABLED_VALUE 1 394 #define SI32_SPI_B_CONFIG_SREIEN_ENABLED_U32 \ 395 (SI32_SPI_B_CONFIG_SREIEN_ENABLED_VALUE << SI32_SPI_B_CONFIG_SREIEN_SHIFT) 396 397 #define SI32_SPI_B_CONFIG_SPIEN_MASK 0x00000100 398 #define SI32_SPI_B_CONFIG_SPIEN_SHIFT 8 399 // Disable the SPI. 400 #define SI32_SPI_B_CONFIG_SPIEN_DISABLED_VALUE 0 401 #define SI32_SPI_B_CONFIG_SPIEN_DISABLED_U32 \ 402 (SI32_SPI_B_CONFIG_SPIEN_DISABLED_VALUE << SI32_SPI_B_CONFIG_SPIEN_SHIFT) 403 // Enable the SPI. 404 #define SI32_SPI_B_CONFIG_SPIEN_ENABLED_VALUE 1 405 #define SI32_SPI_B_CONFIG_SPIEN_ENABLED_U32 \ 406 (SI32_SPI_B_CONFIG_SPIEN_ENABLED_VALUE << SI32_SPI_B_CONFIG_SPIEN_SHIFT) 407 408 #define SI32_SPI_B_CONFIG_MSTEN_MASK 0x00000200 409 #define SI32_SPI_B_CONFIG_MSTEN_SHIFT 9 410 // Operate in slave mode. 411 #define SI32_SPI_B_CONFIG_MSTEN_DISABLED_VALUE 0 412 #define SI32_SPI_B_CONFIG_MSTEN_DISABLED_U32 \ 413 (SI32_SPI_B_CONFIG_MSTEN_DISABLED_VALUE << SI32_SPI_B_CONFIG_MSTEN_SHIFT) 414 // Operate in master mode. 415 #define SI32_SPI_B_CONFIG_MSTEN_ENABLED_VALUE 1 416 #define SI32_SPI_B_CONFIG_MSTEN_ENABLED_U32 \ 417 (SI32_SPI_B_CONFIG_MSTEN_ENABLED_VALUE << SI32_SPI_B_CONFIG_MSTEN_SHIFT) 418 419 #define SI32_SPI_B_CONFIG_CLKPOL_MASK 0x00000400 420 #define SI32_SPI_B_CONFIG_CLKPOL_SHIFT 10 421 // The SCK line is low in the idle state. 422 #define SI32_SPI_B_CONFIG_CLKPOL_LOW_VALUE 0 423 #define SI32_SPI_B_CONFIG_CLKPOL_LOW_U32 \ 424 (SI32_SPI_B_CONFIG_CLKPOL_LOW_VALUE << SI32_SPI_B_CONFIG_CLKPOL_SHIFT) 425 // The SCK line is high in the idle state. 426 #define SI32_SPI_B_CONFIG_CLKPOL_HIGH_VALUE 1 427 #define SI32_SPI_B_CONFIG_CLKPOL_HIGH_U32 \ 428 (SI32_SPI_B_CONFIG_CLKPOL_HIGH_VALUE << SI32_SPI_B_CONFIG_CLKPOL_SHIFT) 429 430 #define SI32_SPI_B_CONFIG_CLKPHA_MASK 0x00000800 431 #define SI32_SPI_B_CONFIG_CLKPHA_SHIFT 11 432 // The first edge of SCK is the sample edge (center of data bit). 433 #define SI32_SPI_B_CONFIG_CLKPHA_CENTER_VALUE 0 434 #define SI32_SPI_B_CONFIG_CLKPHA_CENTER_U32 \ 435 (SI32_SPI_B_CONFIG_CLKPHA_CENTER_VALUE << SI32_SPI_B_CONFIG_CLKPHA_SHIFT) 436 // The first edge of SCK is the shift edge (edge of data bit). 437 #define SI32_SPI_B_CONFIG_CLKPHA_EDGE_VALUE 1 438 #define SI32_SPI_B_CONFIG_CLKPHA_EDGE_U32 \ 439 (SI32_SPI_B_CONFIG_CLKPHA_EDGE_VALUE << SI32_SPI_B_CONFIG_CLKPHA_SHIFT) 440 441 #define SI32_SPI_B_CONFIG_NSSPOL_MASK 0x00001000 442 #define SI32_SPI_B_CONFIG_NSSPOL_SHIFT 12 443 // NSS is active low. 444 #define SI32_SPI_B_CONFIG_NSSPOL_LOW_VALUE 0 445 #define SI32_SPI_B_CONFIG_NSSPOL_LOW_U32 \ 446 (SI32_SPI_B_CONFIG_NSSPOL_LOW_VALUE << SI32_SPI_B_CONFIG_NSSPOL_SHIFT) 447 // NSS is active high. 448 #define SI32_SPI_B_CONFIG_NSSPOL_HIGH_VALUE 1 449 #define SI32_SPI_B_CONFIG_NSSPOL_HIGH_U32 \ 450 (SI32_SPI_B_CONFIG_NSSPOL_HIGH_VALUE << SI32_SPI_B_CONFIG_NSSPOL_SHIFT) 451 452 #define SI32_SPI_B_CONFIG_DDIRSEL_MASK 0x00002000 453 #define SI32_SPI_B_CONFIG_DDIRSEL_SHIFT 13 454 // Data will be shifted MSB first. 455 #define SI32_SPI_B_CONFIG_DDIRSEL_MSB_FIRST_VALUE 0 456 #define SI32_SPI_B_CONFIG_DDIRSEL_MSB_FIRST_U32 \ 457 (SI32_SPI_B_CONFIG_DDIRSEL_MSB_FIRST_VALUE << SI32_SPI_B_CONFIG_DDIRSEL_SHIFT) 458 // Data will be shifted LSB first. 459 #define SI32_SPI_B_CONFIG_DDIRSEL_LSB_FIRST_VALUE 1 460 #define SI32_SPI_B_CONFIG_DDIRSEL_LSB_FIRST_U32 \ 461 (SI32_SPI_B_CONFIG_DDIRSEL_LSB_FIRST_VALUE << SI32_SPI_B_CONFIG_DDIRSEL_SHIFT) 462 463 #define SI32_SPI_B_CONFIG_NSSMD_MASK 0x0000C000 464 #define SI32_SPI_B_CONFIG_NSSMD_SHIFT 14 465 // 3-wire Slave or 3-wire Master. 466 #define SI32_SPI_B_CONFIG_NSSMD_3_WIRE_MASTER_SLAVE_VALUE 0 467 #define SI32_SPI_B_CONFIG_NSSMD_3_WIRE_MASTER_SLAVE_U32 \ 468 (SI32_SPI_B_CONFIG_NSSMD_3_WIRE_MASTER_SLAVE_VALUE << SI32_SPI_B_CONFIG_NSSMD_SHIFT) 469 // 4-wire slave (NSS input). This setting can also be used for multi-master 470 // configurations. 471 #define SI32_SPI_B_CONFIG_NSSMD_4_WIRE_SLAVE_VALUE 1 472 #define SI32_SPI_B_CONFIG_NSSMD_4_WIRE_SLAVE_U32 \ 473 (SI32_SPI_B_CONFIG_NSSMD_4_WIRE_SLAVE_VALUE << SI32_SPI_B_CONFIG_NSSMD_SHIFT) 474 // 4-wire master with NSS low (NSS output). 475 #define SI32_SPI_B_CONFIG_NSSMD_4_WIRE_MASTER_NSS_LOW_VALUE 2 476 #define SI32_SPI_B_CONFIG_NSSMD_4_WIRE_MASTER_NSS_LOW_U32 \ 477 (SI32_SPI_B_CONFIG_NSSMD_4_WIRE_MASTER_NSS_LOW_VALUE << SI32_SPI_B_CONFIG_NSSMD_SHIFT) 478 // 4-wire master with NSS high (NSS output). 479 #define SI32_SPI_B_CONFIG_NSSMD_4_WIRE_MASTER_NSS_HIGH_VALUE 3 480 #define SI32_SPI_B_CONFIG_NSSMD_4_WIRE_MASTER_NSS_HIGH_U32 \ 481 (SI32_SPI_B_CONFIG_NSSMD_4_WIRE_MASTER_NSS_HIGH_VALUE << SI32_SPI_B_CONFIG_NSSMD_SHIFT) 482 483 #define SI32_SPI_B_CONFIG_RFTH_MASK 0x00030000 484 #define SI32_SPI_B_CONFIG_RFTH_SHIFT 16 485 // A DMA / RFRQ request asserts when >= 1 FIFO slot is filled. 486 #define SI32_SPI_B_CONFIG_RFTH_ONE_VALUE 0 487 #define SI32_SPI_B_CONFIG_RFTH_ONE_U32 \ 488 (SI32_SPI_B_CONFIG_RFTH_ONE_VALUE << SI32_SPI_B_CONFIG_RFTH_SHIFT) 489 // A DMA / RFRQ request asserts when >= 2 FIFO slots are filled. 490 #define SI32_SPI_B_CONFIG_RFTH_TWO_VALUE 1 491 #define SI32_SPI_B_CONFIG_RFTH_TWO_U32 \ 492 (SI32_SPI_B_CONFIG_RFTH_TWO_VALUE << SI32_SPI_B_CONFIG_RFTH_SHIFT) 493 // A DMA / RFRQ request asserts when >= 4 FIFO slots are filled. 494 #define SI32_SPI_B_CONFIG_RFTH_FOUR_VALUE 2 495 #define SI32_SPI_B_CONFIG_RFTH_FOUR_U32 \ 496 (SI32_SPI_B_CONFIG_RFTH_FOUR_VALUE << SI32_SPI_B_CONFIG_RFTH_SHIFT) 497 // A DMA / RFRQ request asserts when all FIFO slots are filled. 498 #define SI32_SPI_B_CONFIG_RFTH_FULL_VALUE 3 499 #define SI32_SPI_B_CONFIG_RFTH_FULL_U32 \ 500 (SI32_SPI_B_CONFIG_RFTH_FULL_VALUE << SI32_SPI_B_CONFIG_RFTH_SHIFT) 501 502 #define SI32_SPI_B_CONFIG_TFTH_MASK 0x000C0000 503 #define SI32_SPI_B_CONFIG_TFTH_SHIFT 18 504 // A DMA / TFRQ request asserts when >= 1 FIFO slot is empty. 505 #define SI32_SPI_B_CONFIG_TFTH_ONE_VALUE 0 506 #define SI32_SPI_B_CONFIG_TFTH_ONE_U32 \ 507 (SI32_SPI_B_CONFIG_TFTH_ONE_VALUE << SI32_SPI_B_CONFIG_TFTH_SHIFT) 508 // A DMA / TFRQ request asserts when >= 2 FIFO slots are empty. 509 #define SI32_SPI_B_CONFIG_TFTH_TWO_VALUE 1 510 #define SI32_SPI_B_CONFIG_TFTH_TWO_U32 \ 511 (SI32_SPI_B_CONFIG_TFTH_TWO_VALUE << SI32_SPI_B_CONFIG_TFTH_SHIFT) 512 // A DMA / TFRQ request asserts when >= 4 FIFO slots are empty. 513 #define SI32_SPI_B_CONFIG_TFTH_FOUR_VALUE 2 514 #define SI32_SPI_B_CONFIG_TFTH_FOUR_U32 \ 515 (SI32_SPI_B_CONFIG_TFTH_FOUR_VALUE << SI32_SPI_B_CONFIG_TFTH_SHIFT) 516 // A DMA / TFRQ request asserts when all FIFO slots are empty. 517 #define SI32_SPI_B_CONFIG_TFTH_EMPTY_VALUE 3 518 #define SI32_SPI_B_CONFIG_TFTH_EMPTY_U32 \ 519 (SI32_SPI_B_CONFIG_TFTH_EMPTY_VALUE << SI32_SPI_B_CONFIG_TFTH_SHIFT) 520 521 #define SI32_SPI_B_CONFIG_DSIZE_MASK 0x00F00000 522 #define SI32_SPI_B_CONFIG_DSIZE_SHIFT 20 523 524 #define SI32_SPI_B_CONFIG_DMAEN_MASK 0x01000000 525 #define SI32_SPI_B_CONFIG_DMAEN_SHIFT 24 526 // Disable DMA requests. 527 #define SI32_SPI_B_CONFIG_DMAEN_DISABLED_VALUE 0 528 #define SI32_SPI_B_CONFIG_DMAEN_DISABLED_U32 \ 529 (SI32_SPI_B_CONFIG_DMAEN_DISABLED_VALUE << SI32_SPI_B_CONFIG_DMAEN_SHIFT) 530 // Enable DMA requests according to the TFRQI and RFRQI flags. 531 #define SI32_SPI_B_CONFIG_DMAEN_ENABLED_VALUE 1 532 #define SI32_SPI_B_CONFIG_DMAEN_ENABLED_U32 \ 533 (SI32_SPI_B_CONFIG_DMAEN_ENABLED_VALUE << SI32_SPI_B_CONFIG_DMAEN_SHIFT) 534 535 #define SI32_SPI_B_CONFIG_RFIFOFL_MASK 0x20000000 536 #define SI32_SPI_B_CONFIG_RFIFOFL_SHIFT 29 537 // Flush the receive FIFO. 538 #define SI32_SPI_B_CONFIG_RFIFOFL_SET_VALUE 1 539 #define SI32_SPI_B_CONFIG_RFIFOFL_SET_U32 \ 540 (SI32_SPI_B_CONFIG_RFIFOFL_SET_VALUE << SI32_SPI_B_CONFIG_RFIFOFL_SHIFT) 541 542 #define SI32_SPI_B_CONFIG_TFIFOFL_MASK 0x40000000 543 #define SI32_SPI_B_CONFIG_TFIFOFL_SHIFT 30 544 // Flush the transmit FIFO. 545 #define SI32_SPI_B_CONFIG_TFIFOFL_SET_VALUE 1 546 #define SI32_SPI_B_CONFIG_TFIFOFL_SET_U32 \ 547 (SI32_SPI_B_CONFIG_TFIFOFL_SET_VALUE << SI32_SPI_B_CONFIG_TFIFOFL_SHIFT) 548 549 #define SI32_SPI_B_CONFIG_RESET_MASK 0x80000000 550 #define SI32_SPI_B_CONFIG_RESET_SHIFT 31 551 // SPI module is not in soft reset. 552 #define SI32_SPI_B_CONFIG_RESET_INACTIVE_VALUE 0U 553 #define SI32_SPI_B_CONFIG_RESET_INACTIVE_U32 \ 554 (SI32_SPI_B_CONFIG_RESET_INACTIVE_VALUE << SI32_SPI_B_CONFIG_RESET_SHIFT) 555 // SPI module is in soft reset and some of the module bits cannot be accessed until 556 // this bit is cleared to 0 by hardware. 557 #define SI32_SPI_B_CONFIG_RESET_ACTIVE_VALUE 1U 558 #define SI32_SPI_B_CONFIG_RESET_ACTIVE_U32 \ 559 (SI32_SPI_B_CONFIG_RESET_ACTIVE_VALUE << SI32_SPI_B_CONFIG_RESET_SHIFT) 560 561 562 563 struct SI32_SPI_B_CLKRATE_Struct 564 { 565 union 566 { 567 struct 568 { 569 // Clock Divider 570 volatile uint16_t CLKDIV; 571 uint32_t reserved0: 16; 572 }; 573 volatile uint32_t U32; 574 }; 575 }; 576 577 #define SI32_SPI_B_CLKRATE_CLKDIV_MASK 0x0000FFFF 578 #define SI32_SPI_B_CLKRATE_CLKDIV_SHIFT 0 579 580 581 582 struct SI32_SPI_B_FSTATUS_Struct 583 { 584 union 585 { 586 struct 587 { 588 // Receive FIFO Read Pointer 589 volatile uint32_t RFRPTR: 4; 590 // Receive FIFO Write Pointer 591 volatile uint32_t RFWPTR: 4; 592 // Transmit FIFO Read Pointer 593 volatile uint32_t TFRPTR: 4; 594 // Transmit FIFO Write Pointer 595 volatile uint32_t TFWPTR: 4; 596 uint32_t reserved0: 16; 597 }; 598 volatile uint32_t U32; 599 }; 600 }; 601 602 #define SI32_SPI_B_FSTATUS_RFRPTR_MASK 0x0000000F 603 #define SI32_SPI_B_FSTATUS_RFRPTR_SHIFT 0 604 605 #define SI32_SPI_B_FSTATUS_RFWPTR_MASK 0x000000F0 606 #define SI32_SPI_B_FSTATUS_RFWPTR_SHIFT 4 607 608 #define SI32_SPI_B_FSTATUS_TFRPTR_MASK 0x00000F00 609 #define SI32_SPI_B_FSTATUS_TFRPTR_SHIFT 8 610 611 #define SI32_SPI_B_FSTATUS_TFWPTR_MASK 0x0000F000 612 #define SI32_SPI_B_FSTATUS_TFWPTR_SHIFT 12 613 614 615 616 struct SI32_SPI_B_CONFIGMD_Struct 617 { 618 union 619 { 620 struct 621 { 622 // Operation Mode 623 volatile uint32_t OPMD: 2; 624 // Auto NSS Mode 625 volatile uint32_t AUTONSS: 1; 626 // CTS Flow Control Enable 627 volatile uint32_t CTSEN: 1; 628 // Flow Control Mode 629 volatile uint32_t FLOWMD: 1; 630 // Software Abort 631 volatile uint32_t ABORT: 1; 632 // Transmit On Request 633 volatile uint32_t TXONREQ: 1; 634 uint32_t reserved0: 1; 635 // NSS Data Count 636 volatile uint8_t NSSCNT; 637 // NSS Delay 638 volatile uint8_t NSSDELAY; 639 // Transfer Count 640 volatile uint32_t TFRCNT: 3; 641 uint32_t reserved1: 5; 642 }; 643 volatile uint32_t U32; 644 }; 645 }; 646 647 #define SI32_SPI_B_CONFIGMD_OPMD_MASK 0x00000003 648 #define SI32_SPI_B_CONFIGMD_OPMD_SHIFT 0 649 // Full-duplex (normal) mode. 650 #define SI32_SPI_B_CONFIGMD_OPMD_NORMAL_VALUE 0 651 #define SI32_SPI_B_CONFIGMD_OPMD_NORMAL_U32 \ 652 (SI32_SPI_B_CONFIGMD_OPMD_NORMAL_VALUE << SI32_SPI_B_CONFIGMD_OPMD_SHIFT) 653 // Receive-only mode. 654 #define SI32_SPI_B_CONFIGMD_OPMD_RECEIVE_VALUE 1 655 #define SI32_SPI_B_CONFIGMD_OPMD_RECEIVE_U32 \ 656 (SI32_SPI_B_CONFIGMD_OPMD_RECEIVE_VALUE << SI32_SPI_B_CONFIGMD_OPMD_SHIFT) 657 // Transmit only mode. 658 #define SI32_SPI_B_CONFIGMD_OPMD_TRANSMIT_VALUE 2 659 #define SI32_SPI_B_CONFIGMD_OPMD_TRANSMIT_U32 \ 660 (SI32_SPI_B_CONFIGMD_OPMD_TRANSMIT_VALUE << SI32_SPI_B_CONFIGMD_OPMD_SHIFT) 661 // Flow control mode. 662 #define SI32_SPI_B_CONFIGMD_OPMD_FLOWCONTROL_VALUE 3 663 #define SI32_SPI_B_CONFIGMD_OPMD_FLOWCONTROL_U32 \ 664 (SI32_SPI_B_CONFIGMD_OPMD_FLOWCONTROL_VALUE << SI32_SPI_B_CONFIGMD_OPMD_SHIFT) 665 666 #define SI32_SPI_B_CONFIGMD_AUTONSS_MASK 0x00000004 667 #define SI32_SPI_B_CONFIGMD_AUTONSS_SHIFT 2 668 #define SI32_SPI_B_CONFIGMD_AUTONSS_DISABLED_VALUE 0 669 #define SI32_SPI_B_CONFIGMD_AUTONSS_DISABLED_U32 \ 670 (SI32_SPI_B_CONFIGMD_AUTONSS_DISABLED_VALUE << SI32_SPI_B_CONFIGMD_AUTONSS_SHIFT) 671 #define SI32_SPI_B_CONFIGMD_AUTONSS_ENABLED_VALUE 1 672 #define SI32_SPI_B_CONFIGMD_AUTONSS_ENABLED_U32 \ 673 (SI32_SPI_B_CONFIGMD_AUTONSS_ENABLED_VALUE << SI32_SPI_B_CONFIGMD_AUTONSS_SHIFT) 674 675 #define SI32_SPI_B_CONFIGMD_CTSEN_MASK 0x00000008 676 #define SI32_SPI_B_CONFIGMD_CTSEN_SHIFT 3 677 #define SI32_SPI_B_CONFIGMD_CTSEN_DISABLED_VALUE 0 678 #define SI32_SPI_B_CONFIGMD_CTSEN_DISABLED_U32 \ 679 (SI32_SPI_B_CONFIGMD_CTSEN_DISABLED_VALUE << SI32_SPI_B_CONFIGMD_CTSEN_SHIFT) 680 #define SI32_SPI_B_CONFIGMD_CTSEN_ENABLED_VALUE 1 681 #define SI32_SPI_B_CONFIGMD_CTSEN_ENABLED_U32 \ 682 (SI32_SPI_B_CONFIGMD_CTSEN_ENABLED_VALUE << SI32_SPI_B_CONFIGMD_CTSEN_SHIFT) 683 684 #define SI32_SPI_B_CONFIGMD_FLOWMD_MASK 0x00000010 685 #define SI32_SPI_B_CONFIGMD_FLOWMD_SHIFT 4 686 // Store CTS byte (see chapter text for details). 687 #define SI32_SPI_B_CONFIGMD_FLOWMD_DISABLED_VALUE 0 688 #define SI32_SPI_B_CONFIGMD_FLOWMD_DISABLED_U32 \ 689 (SI32_SPI_B_CONFIGMD_FLOWMD_DISABLED_VALUE << SI32_SPI_B_CONFIGMD_FLOWMD_SHIFT) 690 // Disregard CTS byte. 691 #define SI32_SPI_B_CONFIGMD_FLOWMD_ENABLED_VALUE 1 692 #define SI32_SPI_B_CONFIGMD_FLOWMD_ENABLED_U32 \ 693 (SI32_SPI_B_CONFIGMD_FLOWMD_ENABLED_VALUE << SI32_SPI_B_CONFIGMD_FLOWMD_SHIFT) 694 695 #define SI32_SPI_B_CONFIGMD_ABORT_MASK 0x00000020 696 #define SI32_SPI_B_CONFIGMD_ABORT_SHIFT 5 697 #define SI32_SPI_B_CONFIGMD_ABORT_DISABLED_VALUE 0 698 #define SI32_SPI_B_CONFIGMD_ABORT_DISABLED_U32 \ 699 (SI32_SPI_B_CONFIGMD_ABORT_DISABLED_VALUE << SI32_SPI_B_CONFIGMD_ABORT_SHIFT) 700 #define SI32_SPI_B_CONFIGMD_ABORT_ENABLED_VALUE 1 701 #define SI32_SPI_B_CONFIGMD_ABORT_ENABLED_U32 \ 702 (SI32_SPI_B_CONFIGMD_ABORT_ENABLED_VALUE << SI32_SPI_B_CONFIGMD_ABORT_SHIFT) 703 704 #define SI32_SPI_B_CONFIGMD_TXONREQ_MASK 0x00000040 705 #define SI32_SPI_B_CONFIGMD_TXONREQ_SHIFT 6 706 #define SI32_SPI_B_CONFIGMD_TXONREQ_DISABLED_VALUE 0 707 #define SI32_SPI_B_CONFIGMD_TXONREQ_DISABLED_U32 \ 708 (SI32_SPI_B_CONFIGMD_TXONREQ_DISABLED_VALUE << SI32_SPI_B_CONFIGMD_TXONREQ_SHIFT) 709 #define SI32_SPI_B_CONFIGMD_TXONREQ_ENABLED_VALUE 1 710 #define SI32_SPI_B_CONFIGMD_TXONREQ_ENABLED_U32 \ 711 (SI32_SPI_B_CONFIGMD_TXONREQ_ENABLED_VALUE << SI32_SPI_B_CONFIGMD_TXONREQ_SHIFT) 712 713 #define SI32_SPI_B_CONFIGMD_NSSCNT_MASK 0x0000FF00 714 #define SI32_SPI_B_CONFIGMD_NSSCNT_SHIFT 8 715 716 #define SI32_SPI_B_CONFIGMD_NSSDELAY_MASK 0x00FF0000 717 #define SI32_SPI_B_CONFIGMD_NSSDELAY_SHIFT 16 718 719 #define SI32_SPI_B_CONFIGMD_TFRCNT_MASK 0x07000000 720 #define SI32_SPI_B_CONFIGMD_TFRCNT_SHIFT 24 721 // Automatic. The request type determines the number of bytes to write/read. 722 #define SI32_SPI_B_CONFIGMD_TFRCNT_AUTO_VALUE 0 723 #define SI32_SPI_B_CONFIGMD_TFRCNT_AUTO_U32 \ 724 (SI32_SPI_B_CONFIGMD_TFRCNT_AUTO_VALUE << SI32_SPI_B_CONFIGMD_TFRCNT_SHIFT) 725 // A single byte is written/read per request. 726 #define SI32_SPI_B_CONFIGMD_TFRCNT_TRANSFER1_VALUE 1 727 #define SI32_SPI_B_CONFIGMD_TFRCNT_TRANSFER1_U32 \ 728 (SI32_SPI_B_CONFIGMD_TFRCNT_TRANSFER1_VALUE << SI32_SPI_B_CONFIGMD_TFRCNT_SHIFT) 729 // Up to two bytes can be written/read per request. 730 #define SI32_SPI_B_CONFIGMD_TFRCNT_TRANSFER2_VALUE 2 731 #define SI32_SPI_B_CONFIGMD_TFRCNT_TRANSFER2_U32 \ 732 (SI32_SPI_B_CONFIGMD_TFRCNT_TRANSFER2_VALUE << SI32_SPI_B_CONFIGMD_TFRCNT_SHIFT) 733 // Up to three bytes can be written/read per request. 734 #define SI32_SPI_B_CONFIGMD_TFRCNT_TRANSFER3_VALUE 3 735 #define SI32_SPI_B_CONFIGMD_TFRCNT_TRANSFER3_U32 \ 736 (SI32_SPI_B_CONFIGMD_TFRCNT_TRANSFER3_VALUE << SI32_SPI_B_CONFIGMD_TFRCNT_SHIFT) 737 // Up to four bytes can be written/read per request. 738 #define SI32_SPI_B_CONFIGMD_TFRCNT_TRANSFER4_VALUE 4 739 #define SI32_SPI_B_CONFIGMD_TFRCNT_TRANSFER4_U32 \ 740 (SI32_SPI_B_CONFIGMD_TFRCNT_TRANSFER4_VALUE << SI32_SPI_B_CONFIGMD_TFRCNT_SHIFT) 741 742 743 744 typedef struct SI32_SPI_B_Struct 745 { 746 struct SI32_SPI_B_DATA_Struct DATA ; // Base Address + 0x0 747 uint32_t reserved0; 748 uint32_t reserved1; 749 uint32_t reserved2; 750 struct SI32_SPI_B_CONTROL_Struct CONTROL ; // Base Address + 0x10 751 volatile uint32_t CONTROL_SET; 752 volatile uint32_t CONTROL_CLR; 753 uint32_t reserved3; 754 struct SI32_SPI_B_CONFIG_Struct CONFIG ; // Base Address + 0x20 755 volatile uint32_t CONFIG_SET; 756 volatile uint32_t CONFIG_CLR; 757 uint32_t reserved4; 758 struct SI32_SPI_B_CLKRATE_Struct CLKRATE ; // Base Address + 0x30 759 uint32_t reserved5; 760 uint32_t reserved6; 761 uint32_t reserved7; 762 struct SI32_SPI_B_FSTATUS_Struct FSTATUS ; // Base Address + 0x40 763 uint32_t reserved8; 764 uint32_t reserved9; 765 uint32_t reserved10; 766 struct SI32_SPI_B_CONFIGMD_Struct CONFIGMD ; // Base Address + 0x50 767 volatile uint32_t CONFIGMD_SET; 768 volatile uint32_t CONFIGMD_CLR; 769 uint32_t reserved11; 770 } SI32_SPI_B_Type; 771 772 #ifdef __cplusplus 773 } 774 #endif 775 776 #endif // __SI32_SPI_B_REGISTERS_H__ 777 778 //-eof-------------------------------------------------------------------------- 779 780