From Friday, April 19th (11:00 PM CDT) through Saturday, April 20th (2:00 PM CDT), 2024, ni.com will undergo system upgrades that may result in temporary service interruption.

We appreciate your patience as we improve our online experience.

Driver Development Kit (DDK)

cancel
Showing results for 
Search instead for 
Did you mean: 

NI PCI-6251 with M series DDK on FreeBSD, max. AO-DMA-HW sample rate is 500 kS/s?

Solved!
Go to solution

Is a single channel rate of 500 kS/s really the maximum for AO-DMA using the DDK?

 

I read this 9 year old post in the forum:

http://forums.ni.com/t5/Driver-Development-Kit-DDK/Analog-out-DMA-performance-problems/m-p/537045#M8...

 

That one suggests to set a value of 0x600 to a non-documented MITE register at offest 0x28, in order to enable DMA burst operation. I found also the related additon to the Comedi MITE implementation, which got a little bit more details:

https://github.com/Linux-Comedi/comedi/blob/master/comedi/drivers/mite.c#L163

 

Does this apply to the PCI-6251 as well, or am I looking at the wrong place?

 

My implementation used examples/aoex5.cpp as a template. I found that offset 0x28 is covered in the DDK by the MITE BaseAddress class, and so I added mite1->BaseAddress.setValue(0x600); right after configuring the DMA and clearing and resetting the FIFO. This didn't have any apparent effect, though, and perhaps this is a different offset that is 0x28 only by coincident.

 

Any ideas how to bring the AO-HW-DMA sample rate above 1 MS/s would be welcome. 

 

0 Kudos
Message 1 of 2
(5,561 Views)
Solution
Accepted by topic author rolf.heinrich

I guess I found a solution. I switched the AO DMA operation to 32bit, and now it is working at the full sample rate of 2.86 MHz (update divisor = 7).

 

The obscure burst bits (0x600) at address 0x28 don't make any difference for me, and I don't follow this anymore.

 

Anyway, I got what I need.

0 Kudos
Message 2 of 2
(5,280 Views)