Most peripheral modules are capable of interfacing to the DMA channel. The Timer 2 and Time 3 modules can initiate a DMA transaction based on a time tick. Data can be streamed from either Input capture module 1 or 2 to capture a pulse stream. Data can be streamed to either output compare module 1 or 2. This can be used, for example, to automatically stream data to a PWM, generating a tone with no CPU overhead. All of the communication peripherals are DMA enabled, allowing large message buffers to be transmitted or received with no CPU overhead. Most of the communication peripherals have a small internal buffer to allow use of the peripheral without DMA, should the data rate be manageable by the CPU. The AD modules, as a source for much of the data passing through the system, has a very flexible interface to the DMA channel, allowing data to be sorted in time or sorted by analog input.