320
32072H–AVR32–10/2012
AT32UC3A3
– Single transaction: The length of a single transaction is always 1 and is converted
to a single System Bus transfer.
– Burst transaction: The length of a burst transaction is programmed into the
DMACA. The burst transaction is converted into a sequence of System Bus bursts
and single transfers. DMACA executes each burst transfer by performing
incremental bursts that are no longer than the maximum System Bus burst size set.
The burst transaction length is under program control and normally bears some
relationship to the FIFO sizes in the DMACA and in the source and destination
peripherals.
DMA transfer: Software controls the number of blocks in a DMACA transfer. Once the DMA
transfer has completed, then hardware within the DMACA disables the channel and can gener-
ate an interrupt to signal the completion of the DMA transfer. You can then re-program the
channel for a new DMA transfer.
Single-block DMA transfer: Consists of a single block.
Multi-block DMA transfer: A DMA transfer may consist of multiple DMACA blocks. Multi-block
DMA transfers are supported through block chaining (linked list pointers), auto-reloading of
channel registers, and contiguous blocks. The source and destination can independently select
which method to use.
– Linked lists (block chaining) – A linked list pointer (LLP) points to the location in
system memory where the next linked list item (LLI) exists. The LLI is a set of
registers that describe the next block (block descriptor) and an LLP register. The
DMACA fetches the LLI at the beginning of every block when block chaining is
enabled.
– Auto-reloading – The DMACA automatically reloads the channel registers at the
end of each block to the value when the channel was first enabled.
– Contiguous blocks – Where the address between successive blocks is selected to
be a continuation from the end of the previous block.
Scatter: Relevant to destination transfers within a block. The destination System Bus address is
incremented or decremented by a programmed amount -the scatter increment- when a scatter
boundary is reached. The destination System Bus address is incremented or decremented by
the value stored in the destination scatter increment (DSRx.DSI) field, multiplied by the number
of bytes in a single HSB transfer to the destination (decoded value of CTLx.DST_TR_WIDTH)/8.
The number of destination transfers between successive scatter boundaries is programmed into
the Destination Scatter Count (DSC) field of the DSRx register.
Scatter is enabled by writing a ‘1’ to the CTLx.DST_SCATTER_EN bit. The CTLx.DINC field
determines if the address is incremented, decremented or remains fixed when a scatter bound-
ary is reached. If the CTLx.DINC field indicates a fixed-address control throughout a DMA
transfer, then the CTLx.DST_SCATTER_EN bit is ignored, and the scatter feature is automati-
cally disabled.
Gather: Relevant to source transfers within a block. The source System Bus address is incre-
mented or decremented by a programmed amount when a gather boundary is reached. The
number of System Bus transfers between successive gather boundaries is programmed into the
Source Gather Count (SGRx.SGC) field. The source address is incremented or decremented by
the value stored in the source gather increment (SGRx.SGI) field multiplied by the number of
bytes in a single HSB transfer from the source -(decoded value of CTLx.SRC_TR_WIDTH)/8 -
when a gather boundary is reached.