Stop second guessing what I mean by what I type, and just read that dammed datasheet. I even pasted a quote of the relevant information, and it's quite clear.
On Mon, Jun 20, 2016 at 5:06 PM, <[email protected]> wrote: > > You're not understanding correctly . . . the ADC module is rated for > 200ksps only. Not 1M, not 2M, 200ksps. > > So your "7 channel simultaneously" comment had nothing to do with the > total sample rate, but merely indicates that this 200 KSPS rate was > achieved even though some additional overhead (e.g. distributing the > captured data into 7 different buffers) was present. Is that correct? > > But in that case, I'm confused by john3909's link, wherein a TI spokesman > stated that the 200 kSPS value is for 3 MHz ADC clock, though the maximum > ADC clk frequency is 24 MHz. A further clarification was that the 24 MHz > ADC clk could only be achieved when the master oscillator is 24 MHz, but I > confirmed at > https://github.com/CircuitCo/BeagleBone-Black/blob/master/BBB_SCH.pdf?raw=true > that Y2 is indeed 24 MHz on production boards. > > On Monday, June 20, 2016 at 4:45:04 PM UTC-7, William Hermans wrote: >> >> However, Mr. Hermans, who clearly knows what he is talking about, stated >>> "I've proven that /dev/mem + mmap() can work for reading 200ksps for 7 >>> channel simultaneously." >>> It's reasonable to assume that he would not have included the "7 channel >>> simultaneously" part unless it was somehow relevant to the performance he >>> observed. >>> >> >> You're not understanding correctly . . . the ADC module is rated for >> 200ksps only. Not 1M, not 2M, 200ksps. >> >> On Mon, Jun 20, 2016 at 4:40 PM, <[email protected]> wrote: >> >>> I'm well aware of the analog mux and fully understand that if N channels >>> are being sampled, the maximum sample rate for each channel is reduced by a >>> factor of N. >>> >>> However, Mr. Hermans, who clearly knows what he is talking about, stated >>> "I've proven that /dev/mem + mmap() can work for reading 200ksps for 7 >>> channel simultaneously." >>> It's reasonable to assume that he would not have included the "7 channel >>> simultaneously" part unless it was somehow relevant to the performance he >>> observed. >>> >>> And, if the ADC is actually capable of doing conversions at a 1.6 MHz >>> rate, then it could sample all 8 channels at 200KSPS each, and maybe that's >>> what Mr. Hermans was observing. >>> >>> >>> On Monday, June 20, 2016 at 3:39:09 PM UTC-7, Wulf Man wrote: >>>> >>>> um no the 7 channels go into a analog mux and you can only have one >>>> selected input at a time. >>>> >>>> On 6/20/2016 3:35 PM, [email protected] wrote: >>>> >>>> Wow, I think that /dev/mem + mmap() is the easy solution! Many thanks. >>>> >>>> But can you please confirm that by "200ksps for 7 channel >>>> simultaneously" you mean that each of the 7 channels is being sampled 200k >>>> times per second. If so, that's 1.4M captures per second, enough for my >>>> project. >>>> >>>> > But CPU usage is so high, that you're not going to be able to do a >>>> whole lot more in addition to reading the ADC in this fashion. >>>> >>>> This is essentially a lab experiment. The program only needs to run >>>> correctly once (though it will take many executions to get all the external >>>> factors right). On each run, the BBB has no other tasks to perform. It >>>> won't start writing the results to a file until after the capture is >>>> complete. If CPU usage during the capture is 95%, that's fine. If it's >>>> 105%, I'll slow the sample rate a bit to avoid losing samples. But if it's >>>> 250%, then I'm in trouble. >>>> >>>> If not missing samples requires running in single-user mode with no >>>> networking and only a serial console, that's IMO a minor nuisance compared >>>> to learning about PRU, etc. and debugging a much more complex program. >>>> >>>> On Monday, June 20, 2016 at 2:53:47 PM UTC-7, William Hermans wrote: >>>>> >>>>> The ADC module is a 200ksps SAR module . . .You're only going to be >>>>> able to sample 200k samples per second . . . >>>>> >>>>> Additionally you can use: >>>>> >>>>> >>>>> 1. PRUs ( Programmable Real-time Units ) >>>>> 2. IIO ( industrial IO ) >>>>> 3. /dev/mem/ + mmap() >>>>> >>>>> >>>>> To read 200ksps. Personally, I've proven that /dev/mem + mmap() can >>>>> work for reading 200ksps for 7 channel simultaneously. But CPU usage is so >>>>> high, that you're not going ot be able to do a whole lot more in addition >>>>> to reading the ADC in this fashion. Hence, the PRU are best used, as this >>>>> offers hardware offload( very little CPU load needed - and only when >>>>> reading values out ). >>>>> >>>>> On Mon, Jun 20, 2016 at 12:00 PM, Stewart <[email protected]> wrote: >>>>> >>>>>> I'm looking to write a simple app for BBB. When started from the >>>>>> command line, it would set up the ADC in continuous mode and read ~1 M >>>>>> samples from e.g. AN0 into memory. After the capture is complete, it >>>>>> would >>>>>> write the data to a file and exit. >>>>>> >>>>>> Ideally, it would run at the hardware limit of 1.6 MSPS (15 cycles of >>>>>> 24 MHz adc_clk per sample). If that's not practical, 800 KSPS or better >>>>>> would be acceptable. >>>>>> >>>>>> What is an easy way to do this? Most Beaglebone ADC examples sample >>>>>> at kilohertz rates or slower. >>>>>> >>>>>> This guide: >>>>>> http://processors.wiki.ti.com/index.php/Linux_Core_ADC_User%27s_Guide >>>>>> speaks of 200 KSPS. What is the limitation here? >>>>>> >>>>>> I've seen various suggestions to use the PRU, but don't understand >>>>>> why. I would think that since DMA would be required anyway, there should >>>>>> be no requirement to otherwise access the hardware with tight timing. If >>>>>> PRU is indeed necessary, is there a suitable example or tutorial? (None >>>>>> of >>>>>> the libpruio built-in examples deal with rapid sampling or large amounts >>>>>> of >>>>>> data.) >>>>>> >>>>>> Any other ideas for a simple way to capture data fast will be >>>>>> gratefully appreciated. >>>>>> >>>>>> Thanks. >>>>>> >>>>>> -- >>>>>> For more options, visit http://beagleboard.org/discuss >>>>>> --- >>>>>> You received this message because you are subscribed to the Google >>>>>> Groups "BeagleBoard" group. >>>>>> To unsubscribe from this group and stop receiving emails from it, >>>>>> send an email to [email protected]. >>>>>> To view this discussion on the web visit >>>>>> <https://groups.google.com/d/msgid/beagleboard/aeaf9852-fb4c-4fd1-9594-8aad0ad5fd3c%40googlegroups.com?utm_medium=email&utm_source=footer> >>>>>> https://groups.google.com/d/ >>>>>> msgid/beagleboard/aeaf9852-fb4c-4fd1-9594-8aad0ad5fd3c% >>>>>> 40googlegroups.com. >>>>>> For more options, visit https://groups.google.com/d/optout. >>>>>> >>>>> >>>>> -- >>>> For more options, visit http://beagleboard.org/discuss >>>> --- >>>> You received this message because you are subscribed to the Google >>>> Groups "BeagleBoard" group. >>>> To unsubscribe from this group and stop receiving emails from it, send >>>> an email to [email protected]. >>>> To view this discussion on the web visit >>>> <https://groups.google.com/d/msgid/beagleboard/2ff2e93c-ca65-46ec-a755-5c7f830da2b1%40googlegroups.com?utm_medium=email&utm_source=footer> >>>> https://groups.google.com/d/msgid/beagleboard/2ff2e93c-ca65-46ec-a755-5c7f830da2b1%40googlegroups.com >>>> . >>>> For more options, visit https://groups.google.com/d/optout. >>>> >>>> >>>> -- >>> For more options, visit http://beagleboard.org/discuss >>> --- >>> You received this message because you are subscribed to the Google >>> Groups "BeagleBoard" group. >>> To unsubscribe from this group and stop receiving emails from it, send >>> an email to [email protected]. >>> To view this discussion on the web visit >>> https://groups.google.com/d/msgid/beagleboard/c2736249-fdeb-4673-80c6-4182ba741ca3%40googlegroups.com >>> <https://groups.google.com/d/msgid/beagleboard/c2736249-fdeb-4673-80c6-4182ba741ca3%40googlegroups.com?utm_medium=email&utm_source=footer> >>> . >>> >>> For more options, visit https://groups.google.com/d/optout. >>> >> >> -- > For more options, visit http://beagleboard.org/discuss > --- > You received this message because you are subscribed to the Google Groups > "BeagleBoard" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To view this discussion on the web visit > https://groups.google.com/d/msgid/beagleboard/aa4a8a4e-56d1-4c14-ab99-42fa2ae3a07b%40googlegroups.com > <https://groups.google.com/d/msgid/beagleboard/aa4a8a4e-56d1-4c14-ab99-42fa2ae3a07b%40googlegroups.com?utm_medium=email&utm_source=footer> > . > > For more options, visit https://groups.google.com/d/optout. > -- For more options, visit http://beagleboard.org/discuss --- You received this message because you are subscribed to the Google Groups "BeagleBoard" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/beagleboard/CALHSORonKTt%2BKu127Fyw63vTsjO4pGpuves9ogv5YWZ_Y_ynrQ%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.
