SPRUIE9D May 2017 – May 2024 DRA74P , DRA75P , DRA76P , DRA77P
Table 26-239 through Table 26-275 describe the individual McSPI register bits.
Address Offset | 0x00 | ||
Physical Address | 0x4809 8000 0x4809 A000 0x480B 8000 0x480B A000 | Instance | McSPI1 McSPI2 McSPI3 McSPI4 |
Description | McSPI module revision identifier Used by software to track features, bugs, and compatibility | ||
Type | R |
31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
REVISION |
Bits | Field Name | Description | Type | Reset |
---|---|---|---|---|
31:0 | REVISION | McSPI Module Revision | R | TI internal data |
Multichannel Serial Peripheral Interface |
Address Offset | 0x04 | ||
Physical Address | 0x4809 8004 0x4809 A004 0x480B 8004 0x480B A004 | Instance | McSPI1 McSPI2 McSPI3 McSPI4 |
Description | Information about the module's hardware configuration. | ||
Type | R |
31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
RESERVED | RETMODE | FFNBYTE | USEFIFO |
Bits | Field Name | Description | Type | Reset |
---|---|---|---|---|
31:7 | RESERVED | Reserved These bits are initialized to 0, and writes to them are ignored. | R | 0x0000000 |
6 | RETMODE | Retention Mode. This bit field indicates whether the retention mode is supported. 0x0: Retention mode disabled 0x1: Retention mode enabled | R | 0 |
5:1 | FFNBYTE | FIFO number of bytes parameter | R | 0x8 |
Read 0x1: FIFO 16 bytes depth | ||||
Read 0x2: FIFO 32 bytes depth | ||||
Read 0x4: FIFO 64 bytes depth | ||||
Read 0x8: FIFO 128 bytes depth | ||||
Read 0x10: FIFO 256 bytes depth | ||||
0 | USEFIFO | Use of a FIFO enable. This bit indicates if a FIFO is integrated within controller design with its management. | R | 1 |
Read 0x0: FIFO not implemented in design | ||||
Read 0x1: FIFO and its management implemented in design |
Multichannel Serial Peripheral Interface |
Address Offset | 0x10 | ||
Physical Address | 0x4809 8010 0x4809 A010 0x480B 8010 0x480B A010 | Instance | McSPI1 McSPI2 McSPI3 McSPI4 |
Description | Clock management configuration | ||
Type | RW |
31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
RESERVED | IDLEMODE | FREEEMU | SOFTRESET |
Bits | Field Name | Description | Type | Reset |
---|---|---|---|---|
31:4 | RESERVED | R | 0x0000000 | |
3:2 | IDLEMODE | Configuration of the local target state management mode. By definition, target can handle read/write transaction as long as it is out of IDLE state. | RW | 0x2 |
0x0: Force-idle mode: local target's IDLE state follows (acknowledges) the system's IDLE requests unconditionally, that is, regardless of the module's internal requirements. Backup mode, for debug only. | ||||
0x1: No-idle mode: local target never enters IDLE state. Backup mode, for debug only. | ||||
0x2: Smart-idle mode: local target's IDLE state eventually follows (acknowledges) the system's IDLE requests, depending on the IP module's internal requirements. Module shall not generate (IRQ- or DMA-request-related) wake-up events. | ||||
0x3: Smart-idle wake-up-capable mode: local target's IDLE state eventually follows (acknowledges) the system's IDLE requests, depending on the module's internal requirements. Module may generate (IRQ- or DMA-request-related) wake-up events when in IDLE state. Mode is relevant only if the appropriate IP module "swake-up" output(s) is (are) implemented. | ||||
1 | FREEEMU | Sensitivity to emulation (debug) suspend input signal. | RW | 0 |
0x0: Module is sensitive to emulation suspend. | ||||
0x1: Module is not sensitive to emulation suspend. | ||||
0 | SOFTRESET | Software reset. (Optional) | RW | 0 |
Write 0x0: No action | ||||
Read 0x0: Reset done, no pending action | ||||
Read 0x1: Reset (software or other) ongoing | ||||
Write 0x1: Initiate software reset |
Multichannel Serial Peripheral Interface |
Address Offset | 0x100 | ||
Physical Address | 0x4809 8100 0x4809 A100 0x480B 8100 0x480B A100 | Instance | McSPI1 McSPI2 McSPI3 McSPI4 |
Description | This register contains the McSPI revision number. | ||
Type | R |
31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
RESERVED | REVISION |
Bits | Field Name | Description | Type | Reset |
---|---|---|---|---|
31:8 | RESERVED | Reads return 0 | R | 0x0 |
7:0 | REVISION | McSPI core revision [7:4] Major revision [3:0] Minor revision Examples: 0x10 for 1.0, 0x21 for 2.1 | R | TI Internal data |
Multichannel Serial Peripheral Interface |
Address Offset | 0x110 | ||
Physical Address | 0x4809 8110 0x4809 A110 0x480B 8110 0x480B A110 | Instance | McSPI1 McSPI2 McSPI3 McSPI4 |
Description | This register allows controlling various parameters of the configuration interface and is not affected by software reset. | ||
Type | RW |
31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
RESERVED | CLOCKACTIVITY | RESERVED | SIDLEMODE | ENAWAKEUP | SOFTRESET | AUTOIDLE |
Bits | Field Name | Description | Type | Reset |
---|---|---|---|---|
31:10 | RESERVED | Reads return 0 | RW | 0x000000 |
9:8 | CLOCKACTIVITY | Clocks activity during wake-up mode period | RW | 0x0 |
0x0: Interface and functional clocks may be switched off. | ||||
0x1: Interface clock is maintained. Functional clock may be switched off. | ||||
0x2: Functional clock is maintained. Interface clock may be switched off. | ||||
0x3: Interface and functional clocks are maintained. | ||||
7:5 | RESERVED | Reads returns 0 | RW | 0x0 |
4:3 | SIDLEMODE | Power management | RW | 0x2 |
0x0: If an IDLE request is detected, the McSPI acknowledges it unconditionally and goes in inactive mode. Interrupt, DMA requests and wake-up lines are unconditionally deasserted and the module wake-up capability is deactivated even if the [2] ENAWAKEUP bit is set. | ||||
0x1: If an IDLE request is detected, the request is ignored and the module does not switch to wake-up mode, and keeps on behaving normally. | ||||
0x2: If an IDLE request is detected, the module will switch to wake-up mode based on its internal activity, and the wake-up capability can be used if the bit [2] ENAWAKEUP is set. | ||||
0x3: Reserved - do not use. | ||||
2 | ENAWAKEUP | Wake-up feature control | RW | 1 |
0x0: Wake-up capability is disabled. | ||||
0x1: Wake-up capability is enabled. | ||||
1 | SOFTRESET | Software reset. During reads it always returns 0. | RW | 0 |
0x0: (write) Normal mode | ||||
0x1: (write) Set this bit to 1 to trigger a module reset. The bit is automatically reset by the hardware. | ||||
0 | AUTOIDLE | Internal interface clock-gating strategy | RW | 1 |
0x0: Interface clock is free-running. | ||||
0x1: Automatic interface clock gating strategy is applied, based on the interface activity. |
Multichannel Serial Peripheral Interface |
Address Offset | 0x114 | ||
Physical Address | 0x4809 8114 0x4809 A114 0x480B 8114 0x480B A114 | Instance | McSPI1 McSPI2 McSPI3 McSPI4 |
Description | This register provides status information about the module excluding the interrupt status information. | ||
Type | R |
31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
RESERVED | RESETDONE |
Bits | Field Name | Description | Type | Reset |
---|---|---|---|---|
31:1 | RESERVED | Reserved for future module specific status information. Read returns 0. | R | 0x0000 0000 |
0 | RESETDONE | Internal reset monitoring | R | 0 |
Read 0x0: Internal module reset is ongoing | ||||
Read 0x1: Reset completed |
Multichannel Serial Peripheral Interface |
Address Offset | 0x118 | ||
Physical Address | 0x4809 8118 0x4809 A118 0x480B 8118 0x480B A118 | Instance | McSPI1 McSPI2 McSPI3 McSPI4 |
Description | The interrupt status regroups all the status of the module internal events that can generate an interrupt. | ||
Type | RW |
31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
RESERVED | EOW | WKS | RESERVED | RX3_FULL | TX3_UNDERFLOW | TX3_EMPTY | RESERVED | RX2_FULL | TX2_UNDERFLOW | TX2_EMPTY | RESERVED | RX1_FULL | TX1_UNDERFLOW | TX1_EMPTY | RX0_OVERFLOW | RX0_FULL | TX0_UNDERFLOW | TX0_EMPTY |
Bits | Field Name | Description | Type | Reset |
---|---|---|---|---|
31:18 | RESERVED | Reads return 0 | RW | 0x0000 |
17 | EOW | End of word count event when a channel is enabled using the FIFO buffer and the channel had sent the number of SPI word defined by MCSPI_XFERLEVEL[31:16] WCNT. | RW W1toClr | 0 |
Write 0x0: Event status bit unchanged | ||||
Read 0x0: Event false | ||||
Read 0x1: Event is pending | ||||
Write 0x1: Event status bit is reset | ||||
16 | WKS | Wake-up event in slave mode when an active control signal is detected on the SPIEN line programmed in the field MCSPI_CHxCONF[22:21] SPIENSLV | RW W1toClr | 0 |
Read 0x0: Event false | ||||
Write 0x0: Event status bit unchanged | ||||
Write 0x1: Event status bit is reset | ||||
Read 0x1: Event is pending | ||||
15 | RESERVED | Reads returns 0 | RW | 0 |
14 | RX3_FULL | Receiver register is full or almost full. Only when Channel 3 is enabled | RW W1toClr | 0 |
Read 0x0: Event false | ||||
Write 0x0: Event status bit unchanged | ||||
Write 0x1: Event status bit is reset | ||||
Read 0x1: Event is pending | ||||
13 | TX3_UNDERFLOW | Transmitter register underflow. Only when Channel 3 is enabled. The transmitter register is empty (not updated by host or DMA with new data) before its time slot assignment. Exception: No TX_underflow event when no data has been loaded into the transmitter register since channel has been enabled. | RW W1toClr | 0 |
Read 0x0: Event false | ||||
Write 0x0: Event status bit unchanged | ||||
Write 0x1: Event status bit is reset | ||||
Read 0x1: Event is pending | ||||
12 | TX3_EMPTY | Transmitter register is empty or almost empty. Note: Enabling the channel automatically rises this event. | RW W1toClr | 0 |
Read 0x0: Event false | ||||
Write 0x0: Event status bit unchanged | ||||
Write 0x1: Event status bit is reset | ||||
Read 0x1: Event is pending | ||||
11 | RESERVED | Reads returns 0. | RW | 0 |
10 | RX2_FULL | Receiver register full or almost full. Channel 2 | RW W1toClr | 0 |
Read 0x0: Event false | ||||
Write 0x0: Event status bit unchanged | ||||
Write 0x1: Event status bit is reset | ||||
Read 0x1: Event is pending | ||||
9 | TX2_UNDERFLOW | Transmitter register underflow. Channel 2 | RW W1toClr | 0 |
Read 0x0: Event false | ||||
Write 0x0: Event status bit unchanged | ||||
Write 0x1: Event status bit is reset | ||||
Read 0x1: Event is pending | ||||
8 | TX2_EMPTY | Transmitter register empty or almost empty. Channel 2 | RW W1toClr | 0 |
Read 0x0: Event false | ||||
Write 0x0: Event status bit unchanged | ||||
Write 0x1: Event status bit is reset | ||||
Read 0x1: Event is pending | ||||
7 | RESERVED | Reads returns 0 | RW | 0 |
6 | RX1_FULL | Receiver register full or almost full. Channel 1 | RW W1toClr | 0 |
Read 0x0: Event false | ||||
Write 0x0: Event status bit unchanged | ||||
Write 0x1: Event status bit is reset | ||||
Read 0x1: Event is pending | ||||
5 | TX1_UNDERFLOW | Transmitter register underflow. Channel 1 | RW W1toClr | 0 |
Read 0x0: Event false | ||||
Write 0x0: Event status bit unchanged | ||||
Write 0x1: Event status bit is reset | ||||
Read 0x1: Event is pending | ||||
4 | TX1_EMPTY | Transmitter register empty or almost empty. Channel 1 | RW W1toClr | 0 |
Read 0x0: Event false | ||||
Write 0x0: Event status bit unchanged | ||||
Write 0x1: Event status bit is reset | ||||
Read 0x1: Event is pending | ||||
3 | RX0_OVERFLOW | Receiver register overflow (slave mode only). Channel 0 | RW W1toClr | 0 |
Read 0x0: Event false | ||||
Write 0x0: Event status bit unchanged | ||||
Write 0x1: Event status bit is reset | ||||
Read 0x1: Event is pending | ||||
2 | RX0_FULL | Receiver register full or almost full. Channel 0 | RW W1toClr | 0 |
Read 0x0: Event false | ||||
Write 0x0: Event status bit unchanged | ||||
Write 0x1: Event status bit is reset | ||||
Read 0x1: Event is pending | ||||
1 | TX0_UNDERFLOW | Transmitter register underflow. Channel 0 | RW W1toClr | 0 |
Read 0x0: Event false | ||||
Write 0x0: Event status bit unchanged | ||||
Write 0x1: Event status bit is reset | ||||
Read 0x1: Event is pending | ||||
0 | TX0_EMPTY | Transmitter register empty or almost empty. Channel 0 | RW W1toClr | 0 |
Read 0x0: Event false | ||||
Write 0x0: Event status bit unchanged | ||||
Write 0x1: Event status bit is reset | ||||
Read 0x1: Event is pending |
Address Offset | 0x11C | ||
Physical Address | 0x4809 811C 0x4809 A11C 0x480B 811C 0x480B A11C | Instance | McSPI1 McSPI2 McSPI3 McSPI4 |
Description | This register allows enabling/disabling of the module internal sources of interrupt, on an event-by-event basis. | ||
Type | RW |
31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
RESERVED | EOW_ENABLE | WKE | RESERVED | RX3_FULL_ENABLE | TX3_UNDERFLOW_ENABLE | TX3_EMPTY_ENABLE | RESERVED | RX2_FULL_ENABLE | TX2_UNDERFLOW_ENABLE | TX2_EMPTY_ENABLE | RESERVED | RX1_FULL_ENABLE | TX1_UNDERFLOW_ENABLE | TX1_EMPTY_ENABLE | RX0_OVERFLOW_ENABLE | RX0_FULL_ENABLE | TX0_UNDERFLOW_ENABLE | TX0_EMPTY_ENABLE |
Bits | Field Name | Description | Type | Reset |
---|---|---|---|---|
31:18 | RESERVED | Reads return 0. | RW | 0x0000 |
17 | EOW_ENABLE | End of Word count Interrupt Enable. | RW | 0 |
0x0: Interrupt disabled | ||||
0x1: Interrupt enabled | ||||
16 | WKE | Wake-up event interrupt enable in slave mode when an active control signal is detected on the SPIEN line programmed in the MCSPI_CHxCONF[22:21] SPIENSLV bits | RW | 0 |
0x0: Interrupt disabled | ||||
0x1: Interrupt enabled | ||||
15 | RESERVED | Reads returns 0. | RW | 0 |
14 | RX3_FULL_ENABLE | Receiver register Full Interrupt Enable. Channel 3 | RW | 0 |
0x0: Interrupt disabled | ||||
0x1: Interrupt enabled | ||||
13 | TX3_UNDERFLOW_ENABLE | Transmitter register Underflow Interrupt Enable. Channel 3 | RW | 0 |
0x0: Interrupt disabled | ||||
0x1: Interrupt enabled | ||||
12 | TX3_EMPTY_ENABLE | Transmitter register Empty Interrupt Enable. Channel 3 | RW | 0 |
0x0: Interrupt disabled | ||||
0x1: Interrupt enabled | ||||
11 | RESERVED | Reads return 0. | RW | 0 |
10 | RX2_FULL_ENABLE | Receiver register Full Interrupt Enable. Channel 2 | RW | 0 |
0x0: Interrupt disabled | ||||
0x1: Interrupt enabled | ||||
9 | TX2_UNDERFLOW_ENABLE | Transmitter register Underflow Interrupt Enable. Channel 2 | RW | 0 |
0x0: Interrupt disabled | ||||
0x1: Interrupt enabled | ||||
8 | TX2_EMPTY_ENABLE | Transmitter register Empty Interrupt Enable. Channel 2 | RW | 0 |
0x0: Interrupt disabled | ||||
0x1: Interrupt enabled | ||||
7 | RESERVED | Reads return 0. | RW | 0 |
6 | RX1_FULL_ENABLE | Receiver register Full Interrupt Enable. Channel 1 | RW | 0 |
0x0: Interrupt disabled | ||||
0x1: Interrupt enabled | ||||
5 | TX1_UNDERFLOW_ENABLE | Transmitter register Underflow Interrupt Enable. Channel 1 | RW | 0 |
0x0: Interrupt disabled | ||||
0x1: Interrupt enabled | ||||
4 | TX1_EMPTY_ENABLE | Transmitter register Empty Interrupt Enable. Channel 1 | RW | 0 |
0x0: Interrupt disabled | ||||
0x1: Interrupt enabled | ||||
3 | RX0_OVERFLOW_ENABLE | Receiver register Overflow Interrupt Enable. Channel 0 | RW | 0 |
0x0: Interrupt disabled | ||||
0x1: Interrupt enabled | ||||
2 | RX0_FULL_ENABLE | Receiver register Full Interrupt Enable. Channel 0 | RW | 0 |
0x0: Interrupt disabled | ||||
0x1: Interrupt enabled | ||||
1 | TX0_UNDERFLOW_ENABLE | Transmitter register Underflow Interrupt Enable. Channel 0 | RW | 0 |
0x0: Interrupt disabled | ||||
0x1: Interrupt enabled | ||||
0 | TX0_EMPTY_ENABLE | Transmitter register Empty Interrupt Enable. Channel 0 | RW | 0 |
0x0: Interrupt disabled | ||||
0x1: Interrupt enabled |
Multichannel Serial Peripheral Interface |
Address Offset | 0x120 | ||
Physical Address | 0x4809 8120 0x4809 A120 0x480B 8120 0x480B A120 | Instance | McSPI1 McSPI2 McSPI3 McSPI4 |
Description | The wake-up enable register allows enabling and disabling of the module internal sources of wakeup on event-by-event basis. | ||
Type | RW |
31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
RESERVED | WKEN |
Bits | Field Name | Description | Type | Reset |
---|---|---|---|---|
31:1 | RESERVED | Reads returns 0. | RW | 0x0000 0000 |
0 | WKEN | Wake-up functionality in slave mode when an active control signal is detected on the SPIEN line programmed in the MCSPI_CHxCONF[22:21] SPIENSLV bits | RW | 0 |
0x0: The event is not allowed to wake-up the system, even if the global control bit MCSPI_SYSCONFIG[2] ENAWAKEUP is set. | ||||
0x1: The event is allowed to wake-up the system if the global control bit MCSPI_SYSCONFIG[2] ENAWAKEUP is set. |
Address Offset | 0x124 | ||
Physical Address | 0x4809 8124 0x4809 A124 0x480B 8124 0x480B A124 | Instance | McSPI1 McSPI2 McSPI3 McSPI4 |
Description | This register is used to check the correctness of the system interconnect either internally to peripheral bus, or externally to device I/O pads, when the module is configured in system test (SYSTEST) mode. | ||
Type | RW |
31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
RESERVED | SSB | SPIENDIR | SPIDATDIR1 | SPIDATDIR0 | WAKD | SPICLK | SPIDAT_1 | SPIDAT_0 | SPIEN_3 | SPIEN_2 | SPIEN_1 | SPIEN_0 |
Bits | Field Name | Description | Type | Reset |
---|---|---|---|---|
31:12 | RESERVED | Reads returns 0. | RW | 0x00000 |
11 | SSB | Set status bit | RW | 0 |
0x0: No action. Writing 0 does not clear already set status bits. This bit must be cleared before trying to clear a status bit of the MCSPI_IRQSTATUS register. | ||||
0x1: Force to 1 all status bits of MCSPI_IRQSTATUS register. Writing 1 into this bit sets to 1 all status bits in the MCSPI_IRQSTATUS register. | ||||
10 | SPIENDIR | Set the direction of the SPIEN[3:0] lines and SPICLK line. | RW | 0 |
0x0: Output (as in master mode) | ||||
0x1: Input (as in slave mode) | ||||
9 | SPIDATDIR1 | Set the direction of the SPIDAT[1]. | RW | 0 |
0x0: Output | ||||
0x1: Input | ||||
8 | SPIDATDIR0 | Set the direction of the SPIDAT[0]. | RW | 0 |
0x0: Output | ||||
0x1: Input | ||||
7 | WAKD | SWAKEUP output (signal data value of internal signal to system). The signal is driven high or low according to the value written into this bit. | RW | 0 |
0x0: The pin is driven low. | ||||
0x1: The pin is driven high. | ||||
6 | SPICLK | SPICLK line (signal data value) If [10] SPIENDIR = 1 (input mode direction), this bit returns the value on the CLKSPI line (high or low), and a write into this bit has no effect. If [10] SPIENDIR = 0 (output mode direction), the CLKSPI line is driven high or low according to the value written into this bit. | RW | 0 |
5 | SPIDAT_1 | SPIDAT[1] line (signal data value) If [9] SPIDATDIR1 = 0 (output mode direction), the SPIDAT[1] line is driven high or low according to the value written into this bit. If [9] SPIDATDIR1 = 1 (input mode direction), this bit returns the value on the SPIDAT[1] line (high or low), and a write into this bit has no effect. | RW | 0 |
4 | SPIDAT_0 | SPIDAT[0] line (signal data value) If [8] SPIDATDIR0 = 0 (output mode direction), the SPIDAT[0] line is driven high or low according to the value written into this bit. If [8] SPIDATDIR0 = 1 (input mode direction), this bit returns the value on the SPIDAT[0] line (high or low), and a write into this bit has no effect. | RW | 0 |
3 | SPIEN_3 | SPIEN[3] line (signal data value) If [10] SPIENDIR = 0 (output mode direction), the SPIENT[3] line is driven high or low according to the value written into this bit. If [10] SPIENDIR = 1 (input mode direction), this bit returns the value on the SPIEN[3] line (high or low), and a write into this bit has no effect. | RW | 0 |
2 | SPIEN_2 | SPIEN[2] line (signal data value) If [10] SPIENDIR = 0 (output mode direction), the SPIENT[2] line is driven high or low according to the value written into this bit. If [10] SPIENDIR = 1 (input mode direction), this bit returns the value on the SPIEN[2] line (high or low), and a write into this bit has no effect. | RW | 0 |
1 | SPIEN_1 | SPIEN[1] line (signal data value) If [10] SPIENDIR = 0 (output mode direction), the SPIENT[1] line is driven high or low according to the value written into this bit. If [10] SPIENDIR = 1 (input mode direction), this bit returns the value on the SPIEN[1] line (high or low), and a write into this bit has no effect. | RW | 0 |
0 | SPIEN_0 | SPIEN[0] line (signal data value) If [10] SPIENDIR = 0 (output mode direction), the SPIENT[0] line is driven high or low according to the value written into this bit. If [10] SPIENDIR = 1 (input mode direction), this bit returns the value on the SPIEN[0] line (high or low), and a write into this bit has no effect. | RW | 0 |
Multichannel Serial Peripheral Interface |
Address Offset | 0x128 | ||
Physical Address | 0x4809 8128 0x4809 A128 0x480B 8128 0x480B A128 | Instance | McSPI1 McSPI2 McSPI3 McSPI4 |
Description | This register is dedicated to the configuration of the serial peripheral interface. | ||
Type | RW |
31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
RESERVED | FDAA | MOA | INITDLY | SYSTEM_TEST | MS | PIN34 | SINGLE |
Bits | Field Name | Description | Type | Reset |
---|---|---|---|---|
31:9 | RESERVED | Reads returns 0. | RW | 0x000000 |
8 | FDAA | FIFO DMA address 256-bit aligned This bit is used when a FIFO is managed by the module and DMA connected to the controller provides only 256-bit aligned address. If this bit is set the enabled channel which uses the FIFO has its data managed through MCSPI_DAFTX and MCSPI_DAFRX registers instead of MCSPI_TXx and MCSPI_RXx registers. | RW | 0 |
0x0: FIFO data managed by MCSPI_TXx and MCSPI_RXx registers. | ||||
0x1: FIFO data managed by MCSPI_DAFTX and MCSPI_DAFRX registers. | ||||
7 | MOA | Multiple word interface access: this bit can only be used when a channel is enabled using a FIFO. It allows the system to perform multiple SPI word access for a single 32-bit interface word access. This is possible for WL < 16. | RW | 0 |
0x0: Multiple word access disabled | ||||
0x1: Multiple word access enabled with FIFO | ||||
6:4 | INITDLY | Initial SPI delay for first transfer: this field is an option only available in SINGLE master mode. The controller waits for a delay to transmit the first SPI word after channel enabled and corresponding TX register filled. This delay is based on SPI output frequency clock. No clock output provided to the boundary and chip select is not active in 4-pin mode within this period. | RW | 0x0 |
0x0: No delay for first spi transfer. | ||||
0x1: The controller wait 4 SPI bus clock | ||||
0x2: The controller wait 8 SPI bus clock | ||||
0x3: The controller wait 16 SPI bus clock | ||||
0x4: The controller wait 32 SPI bus clock | ||||
3 | SYSTEM_TEST | Enables the system test mode | RW | 0 |
0x0: Functional mode | ||||
0x1: System test mode (SYSTEST) | ||||
2 | MS | Master/slave | RW | 1 |
0x0: Master - The module generates the SPICLK and SPIEN[3:0]. | ||||
0x1: Slave - The module receives the SPICLK and SPIEN[3:0]. | ||||
1 | PIN34 | Pin mode selection: This bit is used in master or slave mode to configure the SPI pin mode (3-pin or 4-pin). If asserted the controller only uses SIMO, SOMI, and SPICLK clock pin for SPI transfers. | RW | 0 |
0x0: SPIEN is used as a chip-select. | ||||
0x1: SPIEN is not used. In this mode all related options to chip-select have no meaning. | ||||
0 | SINGLE | Single channel/Multi Channel (master mode only) | RW | 0 |
0x0: More than one channel will be used in master mode. | ||||
0x1: Only one channel will be used in master mode. This bit must be set in Force SPIEN[x] mode. |
Multichannel Serial Peripheral Interface |
Address Offset | 0x12C + (0x14 * x) | Index | x = 0 to 3 |
Physical Address | 0x4809 812C + (0x14 * x) 0x4809 A12C + (0x14 * x) 0x480B 812C + (0x14 * x) 0x480B A12C + (0x14 * x) | Instance | McSPI1 McSPI2 McSPI3 McSPI4 |
Description | This register is dedicated to the configuration of the channel x | ||
Type | RW |
31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
RESERVED | CLKG | FFER | FFEW | TCS0 | SBPOL | SBE | SPIENSLV | FORCE | TURBO | IS | DPE1 | DPE0 | DMAR | DMAW | TRM | WL | EPOL | CLKD | POL | PHA |
Bits | Field Name | Description | Type | Reset |
---|---|---|---|---|
31:30 | RESERVED | Read returns 0. | R | 0x0 |
29 | CLKG | Clock divider granularity this bit defines the granularity of channel clock divider: power of 2 or one clock cycle granularity. When this bit is set the register MCSPI_CHxCTRL[15:8] EXTCLK must be configured to reach a maximum of 4096 clock divider ratio. Then the clock divider ratio is a concatenation of [5:2] CLKD and MCSPI_CHxCTRL[15:8] EXTCLK values | RW | 0 |
0x0: Clock granularity of power of 2 | ||||
0x1: One clock cycle granularity | ||||
28 | FFER | FIFO enabled for receive: Only one channel can have this bit field set. | RW | 0 |
0x0: The buffer is not used to receive data. | ||||
0x1: The buffer is used to receive data. | ||||
27 | FFEW | FIFO enabled for transmit: Only one channel can have this bit field set. | RW | 0 |
0x0: The buffer is not used to transmit data. | ||||
0x1: The buffer is used to transmit data. | ||||
26:25 | TCS0 | Chip-select time control This 2-bit field defines the number of interface clock cycles between CS toggling and first or last edge of SPI clock. | RW | 0x0 |
0x0: 0.5 clock cycle | ||||
0x1: 1.5 clock cycles | ||||
0x2: 2.5 clock cycles | ||||
0x3: 3.5 clock cycles | ||||
24 | SBPOL | Start-bit polarity | RW | 0 |
0x0: Start-bit polarity is held to 0 during SPI transfer. | ||||
0x1: Start-bit polarity is held to 1 during SPI transfer. | ||||
23 | SBE | Start-bit enable for SPI transfer | RW | 0 |
0x0: Default SPI transfer length as specified by WL bit field | ||||
0x1: Start bit D/CX added before SPI transfer. Polarity is defined by bit [24] SBPOL | ||||
22:21 | SPIENSLV | Channel 0 only and slave mode only: SPI slave select signal detection. Reserved bits for other cases. | RW | 0x0 |
0x0: Detection enabled only on SPIEN[0] | ||||
0x1: Detection enabled only on SPIEN[1] | ||||
0x2: Detection enabled only on SPIEN[2] | ||||
0x3: Detection enabled only on SPIEN[3] | ||||
20 | FORCE | Manual SPIEN assertion to keep SPIEN active between SPI words (single channel master mode only). | RW | 0 |
0x0: Writing 0 into this bit drives low the SPIEN line when [6] EPOL=0, and drives it high when [6] EPOL=1. | ||||
0x1: Writing 1 into this bit drives high the SPIEN line when [6] EPOL=0, and drives it low when [6] EPOL=1. | ||||
19 | TURBO | Turbo mode | RW | 0 |
0x0: Turbo is deactivated (recommended for single SPI word transfer). | ||||
0x1: Turbo is activated to maximize the throughput for multiple SPI words transfer. | ||||
18 | IS | Input Select | RW | 1 |
0x0: Data line 0 (SPIDAT[0]) selected for reception | ||||
0x1: Data line 1 (SPIDAT[1]) selected for reception | ||||
17 | DPE1 | Transmission enable for data line 1 | RW | 1 |
0x0: Data line 1 (SPIDAT[1]) selected for transmission | ||||
0x1: No transmission on Data Line1 (SPIDAT[1]) | ||||
16 | DPE0 | Transmission Enable for data line 0 | RW | 0 |
0x0: Data Line0 (SPIDAT[0]) selected for transmission | ||||
0x1: No transmission on data line 0 (SPIDAT[0]) | ||||
15 | DMAR | DMA read request The DMA read request line is asserted when the channel is enabled and a new data is available in the receive register of the channel. The DMA read request line is deasserted on read completion of the receive register of the channel. | RW | 0 |
0x0: DMA read request disabled | ||||
0x1: DMA read request enabled | ||||
14 | DMAW | DMA write request. The DMA write request line is asserted when The channel is enabled and the transmitter register of the channel is empty. The DMA write request line is deasserted on load completion of the transmitter register of the channel. | RW | 0 |
0x0: DMA write request disabled | ||||
0x1: DMA write request enabled | ||||
13:12 | TRM | Transmit/receive modes | RW | 0x0 |
0x0: Transmit-and-receive mode | ||||
0x1: Receive-only mode | ||||
0x2: Transmit-only mode | ||||
0x3: Reserved | ||||
11:7 | WL | SPI word length | RW | 0x00 |
0x0: Reserved | ||||
0x1: Reserved | ||||
0x2: Reserved | ||||
0x3: The SPI word is 4 bits long | ||||
0x4: The SPI word is 5 bits long | ||||
0x5: The SPI word is 6 bits long | ||||
0x6: The SPI word is 7 bits long | ||||
0x7: The SPI word is 8 bits long | ||||
0x8: The SPI word is 9 bits long | ||||
0x9: The SPI word is 10 bits long | ||||
0xA: The SPI word is 11 bits long | ||||
0xB: The SPI word is 12 bits long | ||||
0xC: The SPI word is 13 bits long | ||||
0xD: The SPI word is 14 bits long | ||||
0xE: The SPI word is 15 bits long | ||||
0xF: The SPI word is 16 bits long | ||||
0x10: The SPI word is 17 bits long | ||||
0x11: The SPI word is 18 bits long | ||||
0x12: The SPI word is 19 bits long | ||||
0x13: The SPI word is 20 bits long | ||||
0x14: The SPI word is 21 bits long | ||||
0x15: The SPI word is 22 bits long | ||||
0x16: The SPI word is 23 bits long | ||||
0x17: The SPI word is 24 bits long | ||||
0x18: The SPI word is 25 bits long | ||||
0x19: The SPI word is 26 bits long | ||||
0x1A: The SPI word is 27 bits long | ||||
0x1B: The SPI word is 28 bits long | ||||
0x1C: The SPI word is 29 bits long | ||||
0x1D: The SPI word is 30 bits long | ||||
0x1E: The SPI word is 31 bits long | ||||
0x1F: The SPI word is 32 bits long | ||||
6 | EPOL | SPIEN polarity | RW | 0 |
0x0: SPIEN is held high during the ACTIVE state. | ||||
0x1: SPIEN is held low during the ACTIVE state. | ||||
5:2 | CLKD | Frequency divider for SPICLK (only when the module is a Master SPI device). A programmable clock divider divides the SPI reference clock (FCLK) with a 4-bit value, and results in a new clock SPICLK available to shift-in and shift-out data. By default, the clock divider ratio has a power of 2 granularity when [29] CLKG is cleared. Otherwise, this field is the 4-LSB bit of a 12-bit register concatenated with clock divider extension MCSPI_CHxCTRL[15:8] EXTCLK register. The value description below defines the clock ratio when [29] CLKG is set to 0. | RW | 0x0 |
0x0: 1 | ||||
0x1: 2 | ||||
0x2: 4 | ||||
0x3: 8 | ||||
0x4: 16 | ||||
0x5: 32 | ||||
0x6: 64 | ||||
0x7: 128 | ||||
0x8: 256 | ||||
0x9: 512 | ||||
0xA: 1024 | ||||
0xB: 2048 | ||||
0xC: 4096 | ||||
0xD: 8192 | ||||
0xE: 16384 | ||||
0xF: 32768 | ||||
1 | POL | SPICLK polarity (see Section 26.4.2.3.1, Transfer Format) | RW | 0 |
0x0: SPICLK is held low during the INACTIVE state | ||||
0x1: SPICLK is held high during the INACTIVE state | ||||
0 | PHA | SPICLK phase (see Section 26.4.2.3.1, Transfer Format) | RW | 0 |
0x0: Data are latched on odd-numbered edges of SPICLK. | ||||
0x1: Data are latched on even-numbered edges of SPICLK. |
Address Offset | 0x130 + (0x14 * x) | Index | x = 0 to 3 |
Physical Address | 0x4809 8130 + (0x14 * x) 0x4809 A130 + (0x14 * x) 0x480B 8130 + (0x14 * x) 0x480B A130 + (0x14 * x) | Instance | McSPI1 McSPI2 McSPI3 McSPI4 |
Description | This register provides status information about transmitter and receiver registers of channel x. | ||
Type | R |
31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
RESERVED | RXFFF | RXFFE | TXFFF | TXFFE | EOT | TXS | RXS |
Bits | Field Name | Description | Type | Reset |
---|---|---|---|---|
31:7 | RESERVED | Read returns 0. | R | 0x0000000 |
6 | RXFFF | Channel x FIFO receive buffer full status | R | 0 |
Read 0x0: FIFO receive buffer is not full | ||||
Read 0x1: FIFO receive buffer is full | ||||
5 | RXFFE | Channel x FIFO receive buffer empty status | R | 0 |
Read 0x0: FIFO receive buffer is not empty | ||||
Read 0x1: FIFO receive buffer is empty | ||||
4 | TXFFF | Channel x FIFO transmit buffer full status | R | 0 |
Read 0x0: FIFO transmit buffer is not full | ||||
Read 0x1: FIFO transmit buffer is full | ||||
3 | TXFFE | Channel x FIFO transmit buffer empty status | R | 0 |
Read 0x0: FIFO transmit buffer is not empty | ||||
Read 0x1: FIFO transmit buffer is empty | ||||
2 | EOT | Channel x end of transfer status. The definitions of beginning and end of transfer vary with master versus slave and the transfer format (transmit/receive modes, turbo mode). See dedicated chapters for details. | R | 0 |
Read 0x0: This flag is automatically cleared when the shift register is loaded with the data from the transmitter register (beginning of transfer). | ||||
Read 0x1: This flag is automatically set to one at the end of an SPI transfer. | ||||
1 | TXS | Channel x transmitter register status | R | 0 |
Read 0x0: Register is full. | ||||
Read 0x1: Register is empty. | ||||
0 | RXS | Channel x receiver register status | R | 0 |
Read 0x0: Register is empty. | ||||
Read 0x1: Register is full. |
Address Offset | 0x134 + (0x14 * x) | Index | x = 0 to 3 |
Physical Address | 0x4809 8134 + (0x14 * x) 0x4809 A134 + (0x14 * x) 0x480B 8134 + (0x14 * x) 0x480B A134 + (0x14 * x) | Instance | McSPI1 McSPI2 McSPI3 McSPI4 |
Description | This register is dedicated to enable channel x. | ||
Type | RW |
31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
RESERVED | EXTCLK | RESERVED | EN |
Bits | Field Name | Description | Type | Reset |
---|---|---|---|---|
31:16 | RESERVED | Read returns 0. | RW | 0x0000 |
15:8 | EXTCLK | Clock ratio extension: this field is used to concatenate with MCSPI_CHxCONF[5:2] CLKD register for clock ratio only when granularity is one clock cycle (MCSPI_CHxCONF[29] CLKG set to 1). Then the maximum value reached is 4096 clock divider ratio. | RW | 0x00 |
0x0: Clock ratio is CLKD + 1. | ||||
0x1: Clock ratio is CLKD + 1 + 16. ... | ||||
0xFF: Clock ratio is CLKD + 1 + 4080. | ||||
7:1 | RESERVED | Read returns 0. | RW | 0x00 |
0 | EN | Channel enable | RW | 0 |
0x0: Channel x is not active. | ||||
0x1: Channel x is active. |
Address Offset | 0x138 + (0x14 * x) | Index | x = 0 to 3 |
Physical Address | 0x4809 8138 + (0x14 * x) 0x4809 A138 + (0x14 * x) 0x480B 8138 + (0x14 * x) 0x480B A138 + (0x14 * x) | Instance | McSPI1 McSPI2 McSPI3 McSPI4 |
Description | This register contains a single SPI word for channel x to transmit on the serial link, whatever SPI word length is. | ||
Type | RW |
31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
TDATA |
Bits | Field Name | Description | Type | Reset |
---|---|---|---|---|
31:0 | TDATA | Channel x data to transmit | RW | 0x0000 0000 |
Address Offset | 0x13C + (0x14 * x) | Index | x = 0 to 3 |
Physical Address | 0x4809 813C + (0x14 * x) 0x4809 A13C + (0x14 * x) 0x480B 813C + (0x14 * x) 0x480B A13C + (0x14 * x) | Instance | McSPI1 McSPI2 McSPI3 McSPI4 |
Description | This register contains a single SPI word for channel x received through the serial link, whatever SPI word length is. | ||
Type | R |
31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
RDATA |
Bits | Field Name | Description | Type | Reset |
---|---|---|---|---|
31:0 | RDATA | Channel x received data | R | 0x0000 0000 |
Address Offset | 0x17C | ||
Physical Address | 0x4809 817C 0x4809 A17C 0x480B 817C 0x480B A17C | Instance | McSPI1 McSPI2 McSPI3 McSPI4 |
Description | This register provides transfer levels needed while using FIFO buffer during transfer. | ||
Type | RW |
31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
WCNT | AFL | AEL |
Bits | Field Name | Description | Type | Reset |
---|---|---|---|---|
31:16 | WCNT | SPI word counter. This field holds the programmable value of number of SPI word to be transferred on channel which is using the FIFO buffer. When transfer had started, a read back in this field returns the current SPI word transfer index. | RW | 0x0000 |
0x0: Counter not used | ||||
0x1: One word ... | ||||
0xFFFE: 65534 SPI words | ||||
0xFFFF: 65535 SPI words | ||||
15:8 | AFL | Buffer almost full This field holds the programmable almost-full level value used to determine almost full buffer condition. If the user wants an interrupt or a DMA read request to be issued during a receive operation when the data buffer holds at least n bytes, then the buffer AFL must be set with n-1. | RW | 0x00 |
0x0: 1 byte | ||||
0x1: 2 bytes ... | ||||
0xFE: 255 bytes | ||||
0xFF: 256 bytes | ||||
7:0 | AEL | Buffer almost empty. this field holds the programmable almost-empty level value used to determine almost empty buffer condition. If the user wants an interrupt or a DMA write request to be issued during a transmit operation when the data buffer is able to receive n bytes, then the buffer AEL must be set with n-1. | RW | 0x00 |
0x0: 1 byte | ||||
0x1: 2 bytes ... | ||||
0xFE: 255 bytes | ||||
0xFF: 256 bytes |
Address Offset | 0x0000 0180 | ||
Physical Address | 0x4809 8180 0x4809 A180 0x480B 8180 0x480B A180 | Instance | McSPI1 McSPI2 McSPI3 McSPI4 |
Description | This register contains the SPI words to be transmitted on the SPI bus when FIFO is used and DMA address is aligned on 256 bit. This register is an image of one of the MCSPI_TXx registers corresponding to the channel which has its FIFO enabled. | ||
Type | RW |
31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
DAFTDATA |
Bits | Field Name | Description | Type | Reset |
---|---|---|---|---|
31:0 | DAFTDATA | FIFO data to transmit with DMA 256 bit aligned address. | RW | 0x00000000 |
This field is only used when MCSPI_MODULCTRL[8] FDAA is set to 0x1 and only one of the enabled channels has the MCSPI_CHxCONF[27] FFEW bit set to 0x1. If these conditions are not met any access to this field returns a null value. |
Multichannel Serial Peripheral Interface |
Address Offset | 0x0000 01A0 | ||
Physical Address | 0x4809 81A0 0x4809 A1A0 0x480B 81A0 0x480B A1A0 | Instance | McSPI1 McSPI2 McSPI3 McSPI4 |
Description | This register contains the SPI words received from the SPI bus when FIFO is used and DMA address is aligned on 256 bit. This register is an image of one of the MCSPI_RXx registers corresponding to the channel which has its FIFO enabled. | ||
Type | R |
31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
DAFRDATA |
Bits | Field Name | Description | Type | Reset |
---|---|---|---|---|
31:0 | DAFRDATA | FIFO data received with DMA 256 bit aligned address. | R | 0x00000000 |
This field is only used when MCSPI_MODULCTRL[8] FDAA is set to 0x1 and only one of the enabled channels has the MCSPI_CHxCONF[28] FFER bit set to 0x1. If these conditions are not met any access to this field returns a null value. |
Multichannel Serial Peripheral Interface |