GMODE.CMOD = '0' (Hold Mode):
After completing a descriptor the DMAC checks the HOLD bit (previously read with the transmit descriptor). If
HOLD = 0, it branches to the next transmit descriptor. Otherwise the corresponding DMAC transmit channel
is deactivated as long as the host CPU does not request reactivation via the GCMDR register (either transmit
poll request or action request with ’IDT’ command).
GMODE.CMOD = '1' (Last Address Mode):
After completing a descriptor the DMAC checks if the first (current) transmit descriptor address (FTDA) is
equal to the last transmit descriptor address (LTDA) stored in the corresponding channel specific on-chip
registers. When both addresses differ, it branches to the next transmit descriptor. Otherwise the
corresponding DMAC transmit channel is deactivated as long as the host CPU does not write a new address
to the LTDA register or provides an action request with the ’IDT’ command.
HOLD: Hold Bit
Only valid if GMODE.CMODE = '0' (Hold Mode).
Used for descriptor list end control.
HOLD = '0':
A next descriptor is available in the shared memory. After checking the HOLD bit the DMAC branches to the
next transmit descriptor.
HOLD = '1':
The current descriptor is the last one (currently) available for the DMAC. The corresponding DMAC channel
is deactivated for transmit direction as long as the microprocessor does not request an activation via the
CMDR register.
NO: Byte Number
NO defines the number of bytes (stored in the data section) to be transmitted. Thus the maximum length of
the data buffer is 8191 bytes (NO = 0x1FFF). A transmit descriptor and the corresponding data section must
contain at least either one data byte or a frame end indication. Otherwise a DMA controller interrupt with
’ERR’ bit set is generated.
HI: Host Initiated Interrupt
If the HI bit is set, the corresponding DMAC generates an HI interrupt after transferring all data bytes of the
current transmit data section.
Next Transmit Descriptor Pointer:
This 32-bit pointer contains the start address of the next transmit descriptor. After fetching the indicated
number of data bytes, the DMAC branches to the next transmit descriptor. The transmit descriptor is read
entirely at the beginning of the transmit descriptor processing and is stored in on-chip memory. Therefore
when the DMAC branches to a (next) descriptor all descriptor information must be valid. This pointer is not
used if a transmitter reset or initialization channel command is detected while the DMAC still reads data from
the current transmit descriptor. In this case the value in the BTDA register is used as a pointer for the next
transmit descriptor.
The descriptor start address must be DWORD aligned.
TPCE863 User Manual Issue 1.0.1
Page 51 of 72