English
Language : 

PXN20RM Datasheet, PDF (519/1376 Pages) Freescale Semiconductor, Inc – PXN20 Microcontroller
DMA Channel Multiplexer (DMA_MUX)
23.5.2.3 Disabling a Source
A particular DMA source may be disabled by not writing the corresponding source value into any of the
CHCONFIG registers. Some module specific configuration may also be necessary. Refer to the
appropriate section for more details.
23.5.2.4 Switching the Source of a DMA Channel
1. Disable the DMA channel in the DMA and re-configure the channel for the new source.
2. Clear the ENBL and TRIG bits of the DMA channel.
3. Select the source to be routed to the DMA channel. Write to the corresponding CHCONFIG
register, ensuring that the ENBL and TRIG bits are set.
Example 23-3. Switch DMA Channel 8 from DSPI_A transmit to ESCI_A transmit
1. In the DMA configuration registers, disable DMA channel 8 and re-configure it to handle the
DSPI_A transmits.
2. Write 0x00 to CHCONFIG8 (base address + 0x08).
3. Write 0x82 to CHCONFIG8 (base address + 0x08). In this case, setting the TRIG bit has no effect
because channels 8–31 do not support the periodic triggering functionality.
The following code example illustrates steps #2 and #3 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);
Freescale Semiconductor
PXN20 Microcontroller Reference Manual, Rev. 1
23-15