DMA Channel Mux (DMA_MUX)
MPC5510 Microcontroller Family Reference Manual, Rev. 1
Freescale Semiconductor
13-13
Preliminary
volatile unsigned char *CHCONFIG2 = (volatile unsigned char *) (DMAMUX_BA0x0002);
volatile unsigned char *CHCONFIG3 = (volatile unsigned char *) (DMAMUX_BA0x0003);
volatile unsigned char *CHCONFIG4 = (volatile unsigned char *) (DMAMUX_BA0x0004);
volatile unsigned char *CHCONFIG5 = (volatile unsigned char *) (DMAMUX_BA0x0005);
volatile unsigned char *CHCONFIG6 = (volatile unsigned char *) (DMAMUX_BA0x0006);
volatile unsigned char *CHCONFIG7 = (volatile unsigned char *) (DMAMUX_BA0x0007);
volatile unsigned char *CHCONFIG8 = (volatile unsigned char *) (DMAMUX_BA0x0008);
volatile unsigned char *CHCONFIG9 = (volatile unsigned char *) (DMAMUX_BA0x0009);
volatile unsigned char *CHCONFIG10= (volatile unsigned char *) (DMAMUX_BA0x000A);
volatile unsigned char *CHCONFIG11= (volatile unsigned char *) (DMAMUX_BA0x000B);
volatile unsigned char *CHCONFIG12= (volatile unsigned char *) (DMAMUX_BA0x000C);
volatile unsigned char *CHCONFIG13= (volatile unsigned char *) (DMAMUX_BA0x000D);
volatile unsigned char *CHCONFIG14= (volatile unsigned char *) (DMAMUX_BA0x000E);
volatile unsigned char *CHCONFIG15= (volatile unsigned char *) (DMAMUX_BA0x000F);
In File
main.c:
#include “registers.h”
:
:
*CHCONFIG2 = 0x00;
*CHCONFIG2 = 0x85;
13.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.
13.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 13-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 a 0x08).
3. Write 0x87 to CHCONFIG8 (base a 0x08). In this case, setting the TRIG bit has no effect
because channels 8–15 do not support the periodic triggering functionality.
The following code example illustrates steps #2 and #4 above:
In File
registers.h:
#define DMAMUX_BASE_ADDR 0xFC084000/* Example only ! */
/* Following example assumes char is 8-bits */
volatile unsigned char *CHCONFIG0 = (volatile unsigned char *) (DMAMUX_BA0x0000);
volatile unsigned char *CHCONFIG1 = (volatile unsigned char *) (DMAMUX_BA0x0001);
volatile unsigned char *CHCONFIG2 = (volatile unsigned char *) (DMAMUX_BA0x0002);
volatile unsigned char *CHCONFIG3 = (volatile unsigned char *) (DMAMUX_BA0x0003);