09-25-2012 10:15 AM
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
10-01-2012 09:51 AM
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
10-03-2012 09:29 AM
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
10-03-2012 05:01 PM
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