5.14 _9112_AD_DMA_Start

uDescription

The function will perform A/D conversion N times with DMA data transfer. It takes place in the background which will not stop until the N-th

conversion has completed or your program execute _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(). The 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 mas tering DMA is different from tradition PC style DMA. Its description is as following:

Bus Mastering DMA mode of 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 master 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 blocked in 64K max. groups. PCI-

9112 bus mastering works as follows:

1.To set up 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 plug in a bus master slot, otherwise this function will not be workable.

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 master operation and can be a large number up to 64 million (2^26) bytes. Since the PCI-9112 transfers are always longwords, this is 16 million longwords (2^24) or 32 million A/D samples but use the bytecount.

C/C++ Library 51