![](http://datasheet.mmic.net.cn/230000/79RC32438-200BB_datasheet_15568909/79RC32438-200BB_257.png)
IDT DMA Controller
Internal DMA Operation
79RC32438 User Reference Manual
9 - 11
November 4, 2002
Notes
(H) bit in the DMAxS register is set and the DMA halts. If DMA chaining is enabled, then the DMA controller
loads the address in the DMAxNDPTR into the DMAxDPTR register, sets the value of the DMAxNDPTR
register to zero, sets the chain (C) bit in the DMAxS register, and begins processing the descriptor pointed
to by DMAxDPTR. The DMA controller continues processing descriptors until it once again reaches the end
of a descriptor list, at which point the above process repeats.
An example of DMA chaining is shown in Figure 9.5. In this example DMAxDPTR is initialized with the
starting address of the descriptor list ABC, and DMAxNDPTR is initialized with a pointer to the starting
address of descriptor list XYZ. When the DMA controller completes the operation associated with descriptor
C, the value in DMAxNDPTR is loaded into DMAxDPTR, DMAxNDPTR is set to zero, the C bit in the
DMAxS register is set, and the DMA continues with the DMA operation specified by descriptor X. If the
DMAxNDPTR register is not updated by the CPU during the processing of descriptor list XYZ, then the
completion of the DMA operation associated with descriptor Z causes the H bit in the DMA status register to
be set and the DMA to halt.
Figure 9.5 DMA Chaining Example
DMA chaining may be initiated in the middle of a descriptor list based on the descriptor stopping condi-
tion. If the chain on done (COD) bit is set in a descriptor and the DMA stopping condition for the descriptor
is due to a done event, DMA chaining takes place. This causes the DMA controller to stop processing
descriptors in the current descriptor list and to continue with those in the descriptor list pointed to by DMAx-
NDPTR. If DMAxNDPTR is zero, the DMA halts. Finished events may also be programmed to cause DMA
chaining. If the chain on finished (COF) bit is set in a descriptor and the DMA stopping condition for the
descriptor is due to a finished event, DMA chaining occurs.
Writing to the DMAxNDPTR register while the DMA is running (i.e., the RUN bit is set) simply modifies
the value of the register. Writing to the DMAxNDPTR register while the DMA is not running (i.e., the RUN bit
is cleared) not only modifies the value of DMAxNDTPR but also causes a chaining operation to take place.
This causes: DMAxNDPTR to be loaded into DMAxDPTR, the value of DMAxNDPTR to be set to zero, the
chain (C) bit to be set, the RUN bit to be set, and a DMA operation to begin.
DMAxNDPTR
A
DMAxDPTR
Data
Buffer
B
Data
Buffer
C
Data
Buffer
X
Data
Buffer
Y
Data
Buffer
Z
Data
Buffer