Download User Manual - EAGLE Technology

Transcript
EDR Software Development Kit
Acquiring analogue data
4.4.3 Single channel DMA (EDR_SINGLEDMA)
Single channel DMA is a very efficient way to sample data. It requires very
little work on the part of the processor and supports the maximum transfer
rate of the board (even on slow machines). The PC's DMA controller is
programmed to transfer data from the card to memory without going
through the processor. The transfer can proceed in the background. If you
need to transfer less than 32000 samples and your board has DMA use
this mode as you first choice for DOS and Windows.
DOS: The data buffer must have space for at least twice as many samples as
are required. This is necessary to deal with limitations imposed by the DMA
controller hardware. DMA transfers cannot cross physical page boundaries.
These boundaries occur every 64K or 128K depending on the DMA level. If
a page boundary lies within the buffer the transfer has to start at the
boundary. Once the transfer has completed the data is copied down to the
start of the buffer. This copying process is handled transparently by EDR.
Note that the buffer can be in XMS memory.
Windows: The data buffer need only be big enough for the number of
samples required. EDR uses internal buffers for the transfer if it crosses a
page boundary or is not physically contiguous. The data is copied out of the
internal buffer as needed. This process is described in more detail in
appendix B.
Windows NT: Single channel DMA and streaming are handled in exactly
the same way. There is essentially no difference between them.
A maximum of 32000 samples can be captured in one block using this mode
for DOS and Windows. There is no limit under Windows NT.
4.4.4 Dual channel DMA (EDR_DUALDMA)
Dual channel DMA uses 2 DMA channels to transfer data continuously
from the card to memory. As each channel finishes a block of data, the
board automatically starts transferring using the other channel. The first
channel can now be reprogrammed to transfer the next block. Thus dual
36