
iiBusModuLes:high-sPeeddMa(hsdMa)
ii-1-24
ePson
s1C33L17teChniCaLManuaL
ii.1.7interruptFunctionofhsdMa
The DMA controller can generate an interrupt when the transfer counter in each HSDMA channel reaches 0.
Furthermore, channels 0 and 1 can invoke IDMA using their cause of interrupt.
Controlregistersoftheinterruptcontroller
Table II.1.7.1 shows the control registers of the interrupt controller that are provided for each channel.
TableII.1.7.1ControlRegistersofInterruptController
Channel
Ch.0
Ch.1
Ch.2
Ch.3
Cause-of-interruptflag
FHDM0(D0/0x300281)
FHDM1(D1/0x300281)
FHDM2(D2/0x300281)
FHDM3(D3/0x300281)
interruptpriorityregister
PHSD0L[2:0](D[2:0]/0x300263)
PHSD1L[2:0](D[6:4]/0x300263)
PHSD2L[2:0](D[2:0]/0x300264)
PHSD3L[2:0](D[6:4]/0x300264)
interruptenableregister
EHDM0(D0/0x300271)
EHDM1(D1/0x300271)
EHDM2(D2/0x300271)
EHDM3(D3/0x300271)
The HSDMA controller sets the HSDMA cause-of-interrupt flag to 1 when the transfer counter reaches 0 after
completing a series of HSDMA transfers. If the corresponding bit of the interrupt enable register is set to 1 at
this time, an interrupt request is generated. Interrupts can be disabled by leaving the interrupt enable register bit
set to 0. The HSDMA cause-of-interrupt flag is always set to 1 when the data transfer in each channel is com-
pleted no matter what value the interrupt enable register bit is set to. (This is true even when it is set to 0.)
The interrupt priority register sets an interrupt priority level (0 to 7). An interrupt request to the CPU is accepted
only when there is no other interrupt request of higher priority. Furthermore, it is only when the PSR's IE bit =
1 (interrupt enable) and the set value of IL is smaller than the HSDMA interrupt level which is set in the inter-
rupt priority register that the CPU actually accepts a HSDMA interrupt. For details about the interrupt control
register and for the device operation when an interrupt occurs, refer to Section III.2, “Interrupt Controller (ITC).”
intelligentdMa
Intelligent DMA (IDMA) can be invoked by the end-of-transfer interrupt source of channels 0 and 1 of HS-
DMA. The following shows the IDMA channels set in HSDMA:
IDMA channel
Channel 0 end-of-transfer interrupt: 0x05
Channel 1 end-of-transfer interrupt: 0x06
Before IDMA can be invoked, the corresponding bits of the IDMA request and IDMA enable registers must be
set to 1. Settings of transfer conditions on the IDMA side are also required.
TableII.1.7.2ControlBitsforIDMATransfer
Channel
Ch.0
Ch.1
idMarequestbit
RHDM0(D4/0x300290)
RHDM1(D5/0x300290)
idMaenablebit
DEHDM0(D4/0x300294)
DEHDM1(D5/0x300294)
If the IDMA request and enable bits are set to 1, IDMA is invoked through generation of a cause of interrupt.
No interrupt request is generated at that point. An interrupt request is generated after the DMA transfer is com-
pleted. The registers can also be set so as not to generate an interrupt, with only a DMA transfer performed.
For details on IDMA transfers and interrupt control upon completion of IDMA transfer, refer to Section II.2,
“Intelligent DMA (IDMA).”
trapvector
The trap vector addresses for causes of interrupt in each channel are set by default as follows:
Channel 0 end-of-transfer interrupt: 0xC00058
Channel 1 end-of-transfer interrupt: 0xC0005C
Channel 2 end-of-transfer interrupt: 0xC00060
Channel 3 end-of-transfer interrupt: 0xC00064
Note that the trap table base address can be modified using the TTBR register.