DMA Channel Multiplexer (DMA_MUX)
PXN20 Microcontroller Reference Manual, Rev. 1
Freescale Semiconductor 23-13
The following code example illustrates steps #1 and #4 above:
In File registers.h:
#define DMAMUX_BASE_ADDR 0xFFFDC000 /* Base addr for PXN20 */
/* Following example assumes char is 8-bits */
volatile unsigned char *CHCONFIG0 = (volatile unsigned char *) (DMAMUX_BASE_ADDR+0x0000);
volatile unsigned char *CHCONFIG1 = (volatile unsigned char *) (DMAMUX_BASE_ADDR+0x0001);
volatile unsigned char *CHCONFIG2 = (volatile unsigned char *) (DMAMUX_BASE_ADDR+0x0002);
volatile unsigned char *CHCONFIG3 = (volatile unsigned char *) (DMAMUX_BASE_ADDR+0x0003);
volatile unsigned char *CHCONFIG4 = (volatile unsigned char *) (DMAMUX_BASE_ADDR+0x0004);
volatile unsigned char *CHCONFIG5 = (volatile unsigned char *) (DMAMUX_BASE_ADDR+0x0005);
volatile unsigned char *CHCONFIG6 = (volatile unsigned char *) (DMAMUX_BASE_ADDR+0x0006);
volatile unsigned char *CHCONFIG7 = (volatile unsigned char *) (DMAMUX_BASE_ADDR+0x0007);
volatile unsigned char *CHCONFIG8 = (volatile unsigned char *) (DMAMUX_BASE_ADDR+0x0008);
volatile unsigned char *CHCONFIG9 = (volatile unsigned char *) (DMAMUX_BASE_ADDR+0x0009);
volatile unsigned char *CHCONFIG10= (volatile unsigned char *) (DMAMUX_BASE_ADDR+0x000A);
volatile unsigned char *CHCONFIG11= (volatile unsigned char *) (DMAMUX_BASE_ADDR+0x000B);
volatile unsigned char *CHCONFIG12= (volatile unsigned char *) (DMAMUX_BASE_ADDR+0x000C);
volatile unsigned char *CHCONFIG13= (volatile unsigned char *) (DMAMUX_BASE_ADDR+0x000D);
volatile unsigned char *CHCONFIG14= (volatile unsigned char *) (DMAMUX_BASE_ADDR+0x000E);
volatile unsigned char *CHCONFIG15= (volatile unsigned char *) (DMAMUX_BASE_ADDR+0x000F);
volatile unsigned char *CHCONFIG16= (volatile unsigned char *) (DMAMUX_BASE_ADDR+0x0010);
volatile unsigned char *CHCONFIG17= (volatile unsigned char *) (DMAMUX_BASE_ADDR+0x0011);
volatile unsigned char *CHCONFIG18= (volatile unsigned char *) (DMAMUX_BASE_ADDR+0x0012);
volatile unsigned char *CHCONFIG19= (volatile unsigned char *) (DMAMUX_BASE_ADDR+0x0013);
volatile unsigned char *CHCONFIG20= (volatile unsigned char *) (DMAMUX_BASE_ADDR+0x0014);
volatile unsigned char *CHCONFIG21= (volatile unsigned char *) (DMAMUX_BASE_ADDR+0x0015);
volatile unsigned char *CHCONFIG22= (volatile unsigned char *) (DMAMUX_BASE_ADDR+0x0016);
volatile unsigned char *CHCONFIG23= (volatile unsigned char *) (DMAMUX_BASE_ADDR+0x0017);
volatile unsigned char *CHCONFIG24= (volatile unsigned char *) (DMAMUX_BASE_ADDR+0x0018);
volatile unsigned char *CHCONFIG25= (volatile unsigned char *) (DMAMUX_BASE_ADDR+0x0019);
volatile unsigned char *CHCONFIG26= (volatile unsigned char *) (DMAMUX_BASE_ADDR+0x001A);
volatile unsigned char *CHCONFIG27= (volatile unsigned char *) (DMAMUX_BASE_ADDR+0x001B);
volatile unsigned char *CHCONFIG28= (volatile unsigned char *) (DMAMUX_BASE_ADDR+0x001C);
volatile unsigned char *CHCONFIG29= (volatile unsigned char *) (DMAMUX_BASE_ADDR+0x001D);
volatile unsigned char *CHCONFIG30= (volatile unsigned char *) (DMAMUX_BASE_ADDR+0x001E);
volatile unsigned char *CHCONFIG31= (volatile unsigned char *) (DMAMUX_BASE_ADDR+0x001F);
In File main.c:
#include “registers.h”
:
:
*CHCONFIG2 = 0x00;
*CHCONFIG2 = 0xD3;
23.5.2.2 Enabling a Source without Periodic Triggering
1. Determine with which DMA channel the source will be associated. Only DMA channels 0–7 have
periodic triggering capability.
2. Clear the ENBL and TRIG bits of the DMA channel.
3. Ensure that the DMA channel is properly configured in the DMA. The DMA channel may be
enabled at this point.