Measurement Studio for .NET Languages

cancel
Showing results for 
Search instead for 
Did you mean: 

Maximum clock rate for acquisition in NI-6537

Hi

 

I want to acquire data using the maximum clock rate of the NI-6537 board. I have tried the burst handshaking mode, however it can work only at 20 MHz. Why the NI-6537 can not work at 50 MHz in this mode?. Is there another mode in which can I acquire at 50 MHz? Could you give an example? I am using C code.

 

Regards,

 

Marcos Inonan

0 Kudos
Message 1 of 4
(5,323 Views)

Hi Marcos,

 

            You must change the timebase divisor so that you can get the 50MHz rate you want. 

 

            As you can see here, you need to set it to 4, and you can do this using the DAQmxSetSampClkTimebaseDiv property.

 

            Give it a try and tell me if that helped you to get the 50MHz clock rate.

 

            Best Regards

 

            

Felipe Flores
Technical Support Engineer
National Instruments
0 Kudos
Message 2 of 4
(5,297 Views)

Hi Felipe,

 

Thank you for your answer, I have just tried your solution but it is not working yet, I got this message:

 

Daqmx : Error: Measurements: Current data supplied is outside of the specific range.

Property: DAQmxSetSampClkTimebaseDiv

Requested Value: 4

 

Minimum Value: 10

Maximum Value: 4194307

 

 

I send you my code for Burst Mode setting in order you can check, it works fine when at 20 MHz (20000000 instead 50000000).

 

if(DAQmxCreateDIChan(TaskConfigBurstMode,"Dev2/port0:3","",DAQmx_Val_ChanForAllLines))

return false; //Configuro el puerto de datos

 

// This code has added after your suggestion

if(DAQmxSetSampClkTimebaseDiv(TaskConfigBurstMode, 4))

return false; //Configuro el puerto de datos

 

// Clock at 50 Mhz troughout PCLK1

if(DAQmxCfgSampClkTiming(TaskConfigBurstMode,"/Dev2/PFI5",50000000.0,DAQmx_Val_Rising,DAQmx_Val_ContSamps,m_SizeofBuffer)) 

return false;

 

// NI-DAQ 6537 send at 50 Mhz Clock to other device

if(DAQmxCfgBurstHandshakingTimingExportClock(TaskConfigBurstMode,DAQmx_Val_ContSamps,m_SizeofBuffer,50000000.0,"/Dev2/PFI5",DAQmx_Val_ActiveHigh,DAQmx_Val_Low,DAQmx_Val_ActiveHigh))

return false; 

 

if(DAQmxSetExportedRdyForXferEventOutputTerm(TaskConfigBurstMode,"/Dev2/PFI1")) 

return false;

 

if(DAQmxSetExportedRdyForXferEventLvlActiveLvl(TaskConfigBurstMode,DAQmx_Val_ActiveLow ))

return false;

 

if(DAQmxSetDigLvlPauseTrigSrc(TaskConfigBurstMode,"/Dev2/PFI0"))

return false;

 

// Callback a function when the buffer is full

if(DAQmxRegisterEveryNSamplesEvent(TaskConfigBurstMode,DAQmx_Val_Acquired_Into_Buffer,m_SizeofBuffer,0, (DAQmxEveryNSamplesEventCallbackPtr)CallbackFunction,NULL)) 

return false;

 

// Specifies the number of samples the buffer input can hold

if(DAQmxSetBufInputBufSize(TaskConfigBurstMode, 2*m_SizeofBuffer)) 

return false;

 

 

It seems that the maximum clock rate that I can use is 20 MHz in burst mode. Are there another acquisition mode in which I get 50 MHz?

 

Regards,

 

Marcos Inonan

0 Kudos
Message 3 of 4
(5,282 Views)

Hi Marcos,

 

The burst handshaking requires the transmitting device to stop sending samples if the receiving device signals an event. The problem is that above 20MHz, the time it takes the "stop" signal to travel through the cable and get to the transmitter is longer than a sample clock; by the time the "stop" signal arrives, the transmitter already sent some extra samples that the receiver was not ready to acquire.

 

If you need to run at higher speeds use the "Pipelined Sample Clock" mode insead, you can also have flow control signals, but there is built-in buffering that allows the receiver and transmitter to take some extra samples after asseting a "stop" signal
.

 

Hope this helps

 

Juan Carlos

0 Kudos
Message 4 of 4
(5,272 Views)