English
Language : 

PXD10RM Datasheet, PDF (473/1332 Pages) Freescale Semiconductor, Inc – PXD10 Microcontroller
The structure of the transfer control descriptor is fundamental to the operation of the DMA module. It is
defined below in a ‘C’ pseudo-code specification, where int refers to a 32-bit variable (unless noted
otherwise) and short is a 16-bit variable.
NOTE
To compile these structures, change any periods '.' in the variable name to
underscores '_'.
typedef union {
struct {
/* citer.e_link = 1 */
unsigned short citer.linkch:6; /* link channel number, */
unsigned short citer:9; /* current (“major”) iteration count */
} minor_link_enabled;
/* channel link at end of the minor loop */
struct {
/* citer.e_link = 0 */
unsigned short citer:15; /* current (“major”) iteration count */
} minor_link_disabled;
/* no linking at end of the minor loop */
} t_minor_link_citer;
typedef union {
struct {
/* biter.e_link = 1 */
unsigned short biter.linkch:6; /* link channel number, */
unsigned short biter:9; /* beginning (“major”) iteration count */
} init_minor_link_enabled;
/* channel link at end of the minor loop */
struct {
/* biter.e_link = 0 */
unsigned short biter:15; /* beginning (“major”) iteration count */
} init_minor_link_disabled;
/* no linking at end of the minor loop */
} t_minor_link_biter;
typedef struct {
unsigned intsaddr;/* source address */
unsigned intsmod:5;/* source address modulo */
unsigned intssize:3;/* source transfer size */
unsigned intdmod:5;/* destination address modulo */
unsigned intdsize:3;/* destination transfer size */
short soff; /* signed source address offset */
unsigned intnbytes;/* inner (“minor”) byte count */
int
slast; /* last source address adjustment */
unsigned intdaddr;/* destination address */
unsigned shortciter.e_link:1;/* enable channel linking on minor loop */
t_minor_link_citerminor_link_citer;/* conditional current iteration count */
short doff; /* signed destination address offset */
int
dlast_sga;/* last destination address adjustment, or
scatter/gather address (if e_sg = 1) */
unsigned shortbiter.e_link:1;/* beginning channel link enable */
t_minor_link_biterminor_link_biter;/* beginning (“major”) iteration count */
unsigned intbwc:2;/* bandwidth control */
unsigned intmajor.linkch:6;/* link channel number */
unsigned intdone:1;/* channel done */
unsigned intactive:1;/* channel executing */
unsigned intmajor.e_link:1;/* enable channel linking on major loop*/
unsigned inte_sg:1;/* enable scatter/gather descriptor */
unsigned intd_req:1;/* disable ipd_req when done */
unsigned intint_half:1;/* interrupt on citer = (biter >> 1) */
unsigned intint_maj:1;/* interrupt on major loop completion */
unsigned intstart:1;/* explicit channel start */
} tcd
/* transfer_control_descriptor */
Freescale Semiconductor
PXD10 Microcontroller Reference Manual, Rev. 1
Preliminary—Subject to Change Without Notice
15-3