beaglebone, PREEMPT-RT and low latency ADC/DAC

Hi all people here.

I must to say im newbie in BB and RT data.

So, im going to ask simple:
I need to acquire in ADC of the BB in RT over 44khz, only read, i dont need to process it in RT
is it possible to use the ADC of the BB to do it and DMA…?

If it possible, can you show me some sample code to start with, or where to look at? (some link)…

Really thanks

From http://processors.wiki.ti.com/index.php/AM335x_ADC_Driver%27s_Guide ,

ADC in AM335x can sample in 200KSPS(Kilo Samples Per Second) so 44K could
be possible. However I think you have to do this with faster interface which means

you cannot use sysfs; instead you have to use /dev/mem or PRU.

I have very simple example of using ADC in these manner.

  1. Using /dev/mem

https://github.com/chunsj/nxctrl/blob/master/adc-test.c

  1. Using PRU

https://github.com/chunsj/nxctrl/blob/master/adcpru-test.p

Though I’m not sure on your exact needs, I hope this can help you.

Thanks Sungiin,

Do you know a route to capture ADC and store in memory (eg SSD on USB, etc.) RT ?
Is this possible?
jb

Hi John,

you can use libpruio to store ADC data in PRUSS external memory (up to 8 MB). The library also allows to customize ADC settings, so the maximum speed for one channel is up to 200 ksamples. If you need more than one channel, you’ll need some time for muxing the input (open delay).