ARM Technical Support Knowledge Articles

Section 2.9. Flow Control

Applies to: PL08x DMAC (DM & SM)

Answer

What are the DMACLSREQ and DMACLBREQ signals used for?

These are the DMA last single and last burst request signals. The are used by a peripheral, when it is the flow controller, to signal the last burst of a transfer.

How does the system know when a DMA controller transfer is complete?

When a peripheral is the flow controller then the DMACLSREQ and DMACLBREQ signals are used to indicate the last burst in a transfer.

When the DMA controller is the flow controller, it would have been programmed with the number of transfers that need to be carried out (in the DMACCxControl Register) and hence it will know when the transfer has been completed. The DMAC will use DMACCLR to indicate to the peripheral when the transfer has completed. The DMACCLR signal is asserted by the DMAC when the last data item has been transferred.

The DMAC will not need the DMACLSREQ/DMACLBREQ signals to determine when the transfer is complete. It uses the DMACxTC signal to indicate to the peripheral (if the peripheral requires connection to the DMA terminal count signal - as not all peripherals do), that the DMA transfer is complete.

When DMACxTC is active, are further DMAxREQs for this channel simply ignored?

The DMACxTC signal is used by the PrimeCell DMA controller to indicate to the peripheral that the DMA transfer is complete . Now some peripherals may not require connection to the DMACxTC signal, in which case it can be left unconnected if it is not used.

The DMA controller does use the DMACCLR signal to deassert the peripheral's request signal when the last data item has been transferred. The DMACxREQ signals will stay active until DMACCLR (and DMACTCx if used) signal is received.

In summary the DMACxREQ signals rely on the DMACCLR (and DMACTCx if used) signal to be cleared.

What happens if a peripheral switches DMArequest active, although the Transfer Count for this channel has expired? Will the DMAC ignore the request?

The DMAC will ignore the peripheral request if the DMACxTC is zero as it would have already transferred all the data.

Article last edited on: 2008-09-09 15:47:25

Rate this article

[Bad]
|
|
[Good]
Disagree? Move your mouse over the bar and click

Did you find this article helpful? Yes No

How can we improve this article?

Link to this article
Copyright © 2011 ARM Limited. All rights reserved. External (Open), Non-Confidential