Hardware Triggered Start

DMA transfers can also be started using triggers from available hardware trigger sources. The trigger can be configured using the Start Interrupt Request Source register (DMAxSIRQ). The list of available hardware triggers will vary based on the peripheral set offered by the device. Please refer to the device data sheet for the complete list of triggers.

For example, a DMA configured to move data out of a UART can use its own Transmit Interrupt flag (UxTXIF) as a trigger source. To initiate transfers based on the UART interrupts, the DMAxSIRQ register needs to be configured for the UART transmit interrupt and the Start-of-Transfer Interrupt Request bit (SIRQEN) of the DMAxCON0 register should be enabled. Setting the SIRQEN bit will arm the DMA module and will start the transfer, when the first interrupt trigger is received. This will also set the DGO bit to indicate that the transfer has been initiated. Every time the transmit buffer is empty, the DMA will be triggered and a new byte will be loaded into the UART transmit buffer. The SIRQEN bit can be automatically cleared using the DSTP and SSTP bits in the DMAxCON0 register. These bits decide if SIRQEN is cleared/not cleared when the destination/source counters reload.