13.14.6.5 Interrupts
The DMAC channels have the following interrupt sources:
- Transfer Complete (TCMPL): Indicates that a block transfer completed on the corresponding channel. Refer to 13.14.6.2.5 Data Transmission for details.
- Transfer Error (TERR): Indicates that a bus error occurred during a burst transfer, or that an invalid descriptor has been fetched. Refer to 13.14.6.2.8 Error Handling for details.
- Channel Suspend (SUSP): Indicates that the corresponding channel was suspended. Refer to 13.14.6.3.2 Channel Suspend and 13.14.6.2.5 Data Transmission for details.
Each interrupt source has an interrupt flag associated with it. The interrupt flag in the Channel Interrupt Flag Status and Clear (CHINTFLAG) register is set when the interrupt condition occurs. Each interrupt can be individually enabled by setting the corresponding bit in the Channel Interrupt Enable Set register (CHINTENSET = 1), and disabled by setting the corresponding bit in the Channel Interrupt Enable Clear register (CHINTENCLR = 1).
An interrupt request is generated when the interrupt flag is set and the corresponding interrupt is enabled. The interrupt request remains active until the interrupt flag is cleared, the interrupt is disabled, the DMAC is reset or the corresponding DMA channel is reset. See CHINTFLAG for details on how to clear interrupt flags. All interrupt requests are ORed together at the system level to generate one combined interrupt request to the NVIC.
The user must read the Channel Interrupt Status (INTSTATUS) register to identify the channels with pending interrupts, and must read the Channel Interrupt Flag Status and Clear (CHINTFLAG) register to determine which interrupt condition is present for the corresponding channel. It is also possible to read the Interrupt Pending register (INTPEND), which provides the lowest channel number with pending interrupt and the respective interrupt flags.