AlazarBeforeAsyncRead¶
Function Syntax¶
-
RETURN_CODE
AlazarBeforeAsyncRead
(HANDLE handle, U32 channelSelect, long transferOffset, U32 transferLength, U32 recordsPerBuffer, U32 recordsPerAcquisition, U32 flags)¶ Configure a board to make an asynchronous AutoDMA acquisition.
In non-DSP mode, when record headers are not enabled, the total number of bytes per AutoDMA buffer is given by:
bytesPerBuffer = bytesPerSample * samplesPerRecord * recordsPerBuffer;
When record headers are enabled, the formula changes to:
bytesPerBuffer = (16 + bytesPerSample * samplesPerRecord) * recordsPerBuffer;
For best performance, AutoDMA parameters should be selected so that the total number of bytes per buffer is greater than about 1 MB. This allows for relatively long DMA transfer times compared to the time required to prepare a buffer for DMA transfer and re-arm the DMA engines.
ATS460, ATS660 and ATS860 digitizer boards require that AutoDMA parameters be selected so that the total number of bytes per buffer is less than 4 MB. Other boards require that the total number of bytes per buffer be less than 64 MB. It is however recommended to keep the DMA buffer size below 16 MB for all boards.
- Return
ApiSuccess upon success, or an error code. See RETURN_CODE for more detailed information.
- Remark
transferLength
must meet certain alignment criteria which depend on the board model and the acquisition type. Please refer to board-specific documentation for more information.- Remark
recordsPerBuffer
must be set to 1 in continuous streaming and triggered streaming AutoDMA modes.- Remark
recordsPerAcquisition
must be0x7FFFFFFF
in Continuous Streaming and Triggered Streaming modes. The acquisition runs continuously until AlazarAbortAsyncRead() is called. In other modes, it must be either:A multiple of
recordsPerBuffer
0x7FFFFFFF
to indicate that the acquisition should continue indefinitely.
- Parameters
[in] handle
: Handle to board[in] channelSelect
: Select the channel(s) to control. This can be one or more of the channels of ALAZAR_CHANNELS, assembled with the OR bitwise operator.[in] transferOffset
: Specify the first sample from each on-board record to transfer from on-board to host memory. This value is a sample relative to the trigger position in an on-board record.[in] transferLength
: Specify the number of samples from each record to transfer from on-board to host memory. In DSP-mode, it takes the number of bytes instead of samples. See remarks.[in] recordsPerBuffer
: The number of records in each buffer. See remarks.[in] recordsPerAcquisition
: The number of records to acquire during one acquisition. Set this value to0x7FFFFFFF
to acquire indefinitely until the acquisition is aborted. This parameter is ignored in Triggered Streaming and Continuous Streaming modes. See remarks.[in] flags
: Specifies AutoDMA mode and option. Must be one element of ALAZAR_ADMA_MODES combined with zero or more element(s) of ALAZAR_ADMA_FLAGS using the bitwise OR operator.