Direct memory access (DMA) is a feature of computer systems that allows hardware subsystems to access main system memory independently of the central processing unit (CPU). Some DMA transfers are based on descriptors, which hold transfer properties such as the source and destination addresses, transfer counter and other additional transfer control information. The descriptors can be static or linked. When static, a single block transfer is performed. When linked, a number of transfer descriptors can be used by a DMA controller (DMAC) to enable multiple block transfers within a single DMA transaction. Descriptors are often stored in system memory, such as static random-access memory (SRAM).
Serial peripheral interface (SPI) is a synchronous serial communication interface used for short distance communication. In some microcontrollers, when performing a DMA transfer to an SPI device it is necessary for the DMAC to write to a data register in the SPI master in order to receive data from the SPI slave. To perform the DMA transfer, the DMAC also needs to write descriptors back and forth between itself and system memory placing a burden on system resources.