| ARM Technical Support Knowledge Articles | |
Applies to: PL330 AXI DMA Controller
Either the DMAC (PL330) or the peripheral can control the length of a data transfer between the two devices.
If the DMAC is to control the length then the program uses the DMALP instruction to construct a loop. The loop contains the loads to, or stores from, the peripheral and the number of loop iterations, set with the encoding of DMALP, controls the length of the data transfer.
If the peripheral is to control the length then the program uses a DMALPFE instruction to construct a loop. The loop contains the loads to, or stores from, the peripheral and the loop iterates continuously until the peripheral sets drlast_<x> HIGH to indicate when the last transfer is in progress. After the assertion of drlast_<x>, the DMAC exits the loop when it executes the DMALPEND instruction.
Example 1 shows the assembler code to transfer a defined number of bursts of data (4 bursts) from peripheral 0 to memory.
DMALP 4
DMAWFP P0, burst
DMALDPB P0
DMAST
DMALPEND
Example 2 shows the assembler code to transfer an undefined number of bursts of data, or single data, from peripheral 0 to memory.
DMALPFE
DMAWFP P0, periph
DMALDPB P0
DMASTB
DMALDPS P0
DMASTS
DMALPEND
Did you find this article helpful? Yes No
How can we improve this article?