ADLINK PCM-9112+ User Manual
Page 64
 
56
• C/C++ Library
5.14 _9112_AD_DMA_Start
@ Description
This function will perform A/D conversion N times with DMA data 
transfer. It takes place in the background which will not stop until the Nth 
conversion has completed or your program executes a 
_9112_AD_DMA_Stop() function to stop the process. 
After executing this function, it is necessary to check the status of the 
operation by using the function _9112_AD_DMA_Status(). This function is 
performed on single A/D channel when the A/D channel auto-scan is set as 
FALSE. If the A/D channel auto-scan is TRUE, the conversion will be multiple 
channels by sequence. 
The PCI-9112 Bus mastering DMA is different from tradition PC style DMA. It 
is described below: 
Bus Mastering DMA mode for PCI-9112:
PCI bus mastering offers the highest possible speed available on the PCI-
9112. When the function _9112_AD_Set_Mode is set as AD_MODE_2 
(Timer Trigger & DMA transfer) or AD_MODE_5 (External Trigger & DMA 
transfer), it will enable PCI bus mastering operation. This is conceptually 
similar to DMA (Direct Memory Access) transfers in a PC but is really PCI 
bus mastering. It does not use an 8237-style DMA controller in the host 
computer and therefore isn't limited to 64K maximum groups. PCI-9112 bus 
mastering works as follows: 
1. To set up the bus mastering, first do all normal PCI-9112 initialization
necessary to control the board in status mode. This includes testing 
for the presence of the PCI BIOS, determining the base addresses, 
slot number, vendor and device ID's, I/O or memory, space 
allocation, etc. Please make sure your PCI-9112 is plugged into a 
bus-mastering slot, otherwise this function will not work. 
2. Load the PCI controller with the count and 32-bit physical address of
the start of previously allocated destination memory, which will accept 
A/D data. This count is the number of bytes (not longwords!) 
transferred during the bus mastering operation and can be a large 
number up to 64 million (2^26) bytes. Although the PCI-9112 
transfers are always longwords, this is 16 million longwords (2^24) or 
32 million A/D samples but use the bytecount.