UM10208_2
© NXP B.V. 2007. All rights reserved.
User manual
Rev. 02 — 1 June 2007
191 of 362
NXP Semiconductors
UM10208
Chapter 15: LPC2800 GPDMA
If a linked list isn’t circular, it should have a last entry consisting of any readable word
address in word 0, the address of a writable word in word 1, a Transfer Count of 0
(indicating 1 transfer) in word 2, and a Configuration value indicating 32-bit size but
PairedChannel Enab=0 in word 3. The contents of word 4 of a “last entry” don’t much
matter. If the block-transfer channel’s buffer-completion interrupts are masked, word 1
should contain the address of the DMA Software Interrupt Register (0x8010 3C10).
6.2 Starting linked list operation
To initiate transfer of a linked list, software/firmware should program the list-following
channel’s registers as follows:
1. the IRQ Mask register with 1’s for both of the list-following channel’s completion bits
OR’ed into its previous value, so that the list-following channel doesn’t produce
interrupts. The buffer-completion Mask bit for the block-handling channel may be
cleared or set, according to whether software/firmware wants to be notified when each
block is completed, or only at completion of the list.
2. the Source Address Register with the memory address of the first list entry,
3. the Destination Address Register with the address of the block-handling channel’s
Alternate Source Address Register,
4. the Transfer Length Register with the value 4 (indicating 5 transfers),
5. the Configuration Register with a value indicating memory-to-memory word transfers,
the block-handling channel’s number in the PairedChannel field, and 1 in the
PairedChannelEnab bit, and finally
6. the Enable Register with 1, which starts the list-following channel into operation.
6.3 Operation of the List-Following channel
When the list following-channel is enabled, either by software/firmware as described
above, or when the block-handling channel completes a block, it always transfers a
five-word list entry as described in “Linked list entry format” on page 190. The first four
words go into the block-handling channel’s registers, the fifth into list following-channel’s
Source Address Register. Thereafter, since the list-following channel’s “circular buffer” bit
is 0 and its IRQ Mask bits are both 1, it simply lapses into disabled state. But, because its
PairedChannelEnab bit is 1, the block-handling channel (identified by the list-following
channel’s PairedChannel field) is enabled to operate, using its newly-written register
values.
6.4 Operation of the Block-Handling channel
6.4.1 For a block entry
For any linked list entry other than a “last” entry, the block-handling channel operates
almost exactly as a non-linked-list channel does. Except in memory-to-memory mode, it
waits for the peripheral(s) to request transfer. It transfers the programmed number of
words, halfwords, or bytes from the source to the destination. When its Transfer Count
Register is incremented to match its Transfer Length Register, it clears its Transfer Count
Register and sets its “buffer completion” status bit, which may or may not result in an
interrupt depending on its IRQ Mask bit for buffer completion. All of this is identical to
non-linked list operation. But because the block-handling channel’s PairedChannelEnab