BS_DMA controller
RM0082
338/844
Doc ID 018672 Rev 1
19.6.1
How to operate single combined DMACINTR interrupt request signal
1.
Wait until the combined interrupt request from the DMAC (DMACINTR) goes active.
2.
Read the interrupt controller status register and determine whether the source of the
request was the DMAC.
3.
Read the DMACIntStatus register (
) to determine the DMA channel that
generated the interrupt. If more than one request is active (that is, more than one bit
are set in the IntStatus field), it is recommended to check the highest priority channels
first (0, 1, 2 and so on).
4.
Read the DMACIntTCStatus register (
) to determine whether the
interrupt was generated because of the end of the transfer or because an error
occurred. If the bit corresponding to the DMA channel (from step #3) in the field
IntTCStatus is set, the data transfer has been completed? step #6.
5.
Read the DMACIntErrStatus register (
) to determine whether the
interrupt was generated because of the end of the transfer or because an error
occurred. If the bit corresponding to the DMA channel (from step #3) in the field
IntErrorStatus is set, an error occurred
›
step #6
6.
Set the relevant bit in the DMACIntTCClear register (
) or in the
DMACIntErrClr register (
), respectively, to clear the interrupt request.
19.7 Programming
model
19.7.1 Register
map
The DMAC can be fully configured by programming its 32 bit wide registers which can be
accessed through the AHB slave interface at the base address 0xFC40_0000.
DMAC registers can be logically arranged in four main groups:
●
Global registers, listed in
, for DMAC-level configuration,
●
Channel registers for programming a single DMA channel. Each DMA channel is
associated to these five registers, listed in
where n ranges from 0 to 7 being
8 the number of DMA channels supported by the DMAC,
●
Peripheral identification registers, listed in
,
●
Cell identification registers, listed in
.
Table 278.
DMAC global registers summary
Name
Offset
Type
Reset
Value
Description
DMACIntStatus
0x000
RO
32’h0
Interrupt status.
DMACIntTCStatus
0x004
RO
32’h0
Interrupt terminal count status.
DMACIntTCClear
0x008
WO
32’h0
Interrupt terminal count clear.
DMACIntErrorStatus
0x00C
RO
32’h0
Interrupt error status.
DMACIntErrClr
0x010
WO
32’h0
Interrupt error clear.
DMACRawIntTCStatus
0x014
RO
32’h0
Raw interrupt terminal count status.
DMACRawIntErrorStatus
0x018
RO
32’h0
Raw interrupt error status.