DMA CHANNEL x
BUFIDx
RXDMA_MAPx
TXDMA_MAPx
DMA_REQ(0)
DMA_REQ(15)
4x16 Decoder
4x16 Decoder
COMBINE LOGIC
0
15
0
15
0
15
4
4
TX RAM
RX RAM
0
15
Control Logic
TXDMA_ENAx
RXDMA_ENAx
(combines all 8 Channel O/Ps)
DMA Interface
1145
SPNU503C – March 2018
Copyright © 2018, Texas Instruments Incorporated
Multi-Buffered Serial Peripheral Interface Module (MibSPI) with Parallel Pin
Option (MibSPIP)
24.7 DMA Interface
In order to reduce CPU overhead in handling SPI message traffic on a character-by-character basis, SPI
can use the DMA controller to transfer the data. The DMA request enable bit (DMA REQ EN) controls the
assertion of requests to the DMA controller module. When a character is being transmitted or received,
the SPI will signal the DMA via the DMA request signals, TX_DMA_REQ and RX_DMA_REQ. The DMA
controller will then perform the required data transfer.
For efficient behavior during DMA operations, the transmitter empty and receive-buffer full interrupts can
be disabled. For specific DMA features, see the DMA controller specification.
The SPI generates a request on the TX_DMA_REQ line each time the TX data is copied to the TX shift
register either from the TXBUF or from peripheral data bus (when TXBUF is empty).
The first TX_DMA_REQ pulse is generated when either of the following is true:
•
DMAREQEN (SPIINT0[16]) is set to 1 while SPIEN (SPIGCR1[24]) is already 1.
•
SPIEN (SPIGCR1[24]) is set to 1 while DMAREQEN (SPIINT0[16]) is already 1.
The SPI generates a request on the RX_DMA_REQ line each time the received data is copied to the
SPIBUF.
24.7.1 DMA in Multi-Buffer Mode
The MibSPI provides sophisticated programmable DMA control logic that completely eliminates the
necessity of CPU intervention for data transfers, once programmed. When the multi-buffer mode is used,
the DMA enable bit in the SPIINT0 register is ignored. DMA source or destination should be only the multi-
buffer RAM and not SPIDAT0 / SPIDAT1 or SPIBUF register as in case of compatibility mode DMA.
The MibSPI offers up to eight DMA channels (for SEND and RECEIVE). All of the DMA channels are
programmable individually and can be hooked to any buffer. The MibSPI provides up to 16 DMA request
lines, and DMA requests from any channel can be programmed to be routed through any of these 16
lines. A DMA transfer can trigger both transmit and receive.
Each DMA channel has the capability to transfer a block of up to 32 data words without interruption using
only one buffer of the array by configuring the DMAxCTRL register. Using the DMAxCOUNT and
DMACTNTLEN register, up to 65535 (64K) words of data can be transferred without any interruption using
just one buffer of the array. This enables the transfer of memory blocks from or into an external SPI
memory.
Figure 24-25. DMA Channel and Request Line (Logical) Structure in Multi-buffer Mode