DMA Controller Module
MCF52110 ColdFire® Integrated Microcontroller Reference Manual, Rev. 1
16-12
Freescale Semiconductor
Preliminary
Source and destination address registers (SAR
n
and DAR
n
) can be programmed in the DCR
n
to increment
at the completion of a successful transfer.
16.4.1
Transfer Requests (Cycle-Steal and Continuous Modes)
The DMA channel supports internal and external requests. A request is issued by setting DCR
n
[START]
or when a UART or DMA timer asserts a DMA request. Setting DCR
n
[EEXT] enables recognition of
external DMA requests. Selecting between cycle-steal and continuous modes minimizes bus usage for
internal or external requests.
•
Cycle-steal mode (DCR
n
[CS] = 1)—Only one complete transfer from source to destination occurs
for each request. If DCR
n
[EEXT] is set, a request can be internal or external. An internal request
is selected by setting DCR
n
[START]. An external request is initiated by an on-chip peripheral
while DCR
n
[EEXT] is set.
•
Continuous mode (DCR
n
[CS] = 0)—After an internal or external request, the DMA continuously
transfers data until BCR
n
reaches zero or a multiple of DCR
n
[BWC] or until DSR
n
[DONE] is set.
If BCR
n
is a multiple of BWC, the DMA request signal is negated until the bus cycle terminates
to allow the internal arbiter to switch masters. DCR
n
[BWC] equaling 000 specifies the maximum
transfer rate; other values specify a transfer rate limit.
The DMA performs the specified number of transfers, then relinquishes bus control. The DMA
negates its internal bus request on the last transfer before BCR
n
reaches a multiple of the boundary
specified in BWC. Upon completion, the DMA reasserts its bus request to regain mastership at the
earliest opportunity. The DMA loses bus control for a minimum of one bus cycle.
16.4.2
Dual-Address Data Transfer Mode
Each channel supports dual-address transfers. Dual-address transfers consist of a source data read and a
destination data write. The DMA controller module begins a dual-address transfer sequence during a DMA
request. If no error condition exists, DSR
n
[REQ] is set.
•
Dual-address read—The DMA controller drives the SAR
n
value onto the internal address bus. If
DCR
n
[SINC] is set, the SAR
n
increments by the appropriate number of bytes upon a successful
read cycle. When the appropriate number of read cycles complete (multiple reads if the destination
size is larger than the source), the DMA initiates the write portion of the transfer.
If a termination error occurs, DSR
n
[BES,DONE] are set and DMA transactions stop.
•
Dual-address write—The DMA controller drives the DAR
n
value onto the address bus. If
DCR
n
[DINC] is set, DAR
n
increments by the appropriate number of bytes at the completion of a
successful write cycle. BCR
n
decrements by the appropriate number of bytes. DSR
n
[DONE] is set
when BCR
n
reaches zero. If the BCR
n
is greater than zero, another read/write transfer is initiated.
If the BCR
n
is a multiple of DCR
n
[BWC], the DMA request signal is negated until termination of
the bus cycle to allow the internal arbiter to switch masters.
If a termination error occurs, DSR
n
[BED,DONE] are set and DMA transactions stop.