Intel 386 Computer Hardware User Manual


 
Intel386™ EX EMBEDDED MICROPROCESSOR USER’S MANUAL
12-12
12.2.6 Buffer-transfer Modes
After a buffer transfer is completed or terminated, a channel can either become idle (require re-
programming) or reprogram itself and begin another buffer transfer after it is initiated by a hard-
ware or software request. The DMA’s three buffer-transfer modes (single, autoinitialize, and
chaining) determine whether a channel becomes idle or is reprogrammed after it completes or ter-
minates a buffer transfer.
12.2.6.1 Single Buffer-Transfer Mode
By default (single buffer-transfer mode), the DMA transfers a channel’s buffer only once. When
the entire buffer of data has been transferred, the channel becomes idle and must be repro-
grammed before it can perform another buffer transfer. The single buffer-transfer mode is useful
when you know the exact amount of data to be transferred and you know that there is time to re-
program the channel (requester and target addresses and byte count) before another buffer of data
needs to be transferred.
12.2.6.2 Autoinitialize Buffer-Transfer Mode
When programmed for the autoinitialize buffer-transfer mode, the DMA automatically reloads
the channel with the original transfer information (the requester and target addresses and the byte
count) when the transfer completes. The channel then repeats the original buffer transfer. The au-
toinitialize buffer-transfer mode is useful when you need to transfer a fixed amount of data be-
tween the same locations multiple times.
12.2.6.3 Chaining Buffer-Transfer Mode
This mode is similar to the autoinitialize buffer-transfer mode, in that the DMA automatically re-
programs the channel after the current buffer transfer is complete. The difference is that the au-
toinitialize buffer-transfer mode uses the original transfer information, while the chaining buffer-
transfer mode uses new transfer information. While a channel is performing a chaining buffer
transfer, you write new requester and target addresses and a new byte count to it. This prepares
the channel for the next buffer transfer, without affecting the current buffer transfer. When the
channel completes its current buffer transfer, the channel is automatically programmed with the
new transfer information that you wrote to it. The chaining buffer-transfer mode is useful when
you need to transfer data between multiple requesters and targets.
NOTE
If a channel does not contain new transfer information at the end of its buffer
transfer, the channel becomes idle, ending the chaining process; it must be
reprogrammed before it can perform another buffer transfer.
The Chaining Buffer Transfer Mode is entered from the Single Buffer Transfer Mode. The mode
registers should be programmed first, with all of the transfer modes defined as if the channel were
to operate in the Single Buffer Transfer Mode. The channel’s base and current registers are then
loaded. When the channel has been set up in this way and the chaining interrupt service routine
is in place, the Chaining Buffer Transfer Mode can be entered by programming the Chaining reg-
ister. “Chaining Register (DMACHR)” on page 12-47 describes this process.