Digital I/O

cancel
Showing results for 
Search instead for 
Did you mean: 

Need to use the ALIGN_DMA_BUFFER() function with the AT-DIO-32HS, Burst Transfer Mode ??

After reading the documentation, I just want to confirm several things. I am programming an AT-DIO-32HS board for Burst transfer mode using the Traditional NIDAQ library & Visual C++. I will be sending approximately 2076 bytes 'per burst' at a 1.48MHz rate (slowest rate of card).
 
1. Based on the documentation, I should NOT need  to use the ALIGN_DMA_BUFFER() NIDAQ library function. Is this correct ?
 
2. When I call the NIDAQ library function DIG_Block_Out(), I pass a pointer to a buffer containing the data along with the number of items in the buffer. Does NIDAQ copy this data over to some memory on board the AT-DIO-32HS card, or does it get the data from the PC's memory via DMA ?
 
 
Thanks so much !
0 Kudos
Message 1 of 2
(3,331 Views)

Hi Raminta,

From your question about the Dig_Block_out, I'm assuming you're doing output from the DIO-32HS. Is that correct? Referencing the "DOsingleBufBurstHandshake653x.c" example program,

 /* You may want to call 'Align_DMA_Buffer' at this point if you
     have a buffer larger than 4kBytes in size and if your handshaking
     signals occur at intervals faster than 50us. */

So if you meet any one of those conditions, you may want to use it. I was under the impression that that function was only for use with the AT DIO 32F and the documentation and this KB agree with me, but if you get some glitching you may want to try it.  For DIG_Block_Out(), since your card doesn't have any onboard memory it is going to be transferred over DMA.

 

Hope this helps,

Andrew S.

National Instruments

0 Kudos
Message 2 of 2
(3,318 Views)