Hi John, thanks for your suggestion. What frequency can I expect using this 
method? I need at least a 1MSPS sampling rate.
Also, do you have any code example of this? I tried googling it but I 
didn't find what I was looking for.

Many thanks

On Saturday, January 24, 2015 at 12:52:29 AM UTC, john3909 wrote:
>
> Why don’t you use SPI with DMA? DMA is automatically used when the size of 
> transfer exceeds 160 bytes. You would have to create a kernel driver 
> because SPIDEV has too much overhead.  The SPI interface can transfer up to 
> 48MHz clock, which is the max clock of the device you want to use.
>
> Regards,
> John
>
> From: touste <baptiste...@gmail.com <javascript:>>
> Reply-To: "beagl...@googlegroups.com <javascript:>" <
> beagl...@googlegroups.com <javascript:>>
> Date: Friday, January 23, 2015 at 10:45 AM
> To: "beagl...@googlegroups.com <javascript:>" <beagl...@googlegroups.com 
> <javascript:>>
> Subject: [beagleboard] Fast ADC using PRU to bitbang SPI
>
> Hi guys,
>
> I would like to know if someone here has already tried bitbanging SPI with 
> the PRU units? 
>
> I have a 12bit ADC (TI ADS7883) which takes a clock signal and outputs 12 
> bits of data, and I would like to use the PRU to achieve high sampling rate.
>
> See http://www.ti.com/lit/ds/symlink/ads7883.pdf for the ADC 
> documentation with the interface timing diagram.
>
> Basically, the PRU program would do the following (assuming a cycle time 
> of 5ns and one cycle for each line of the loop):
>
> - Initiate 3 GPIO channels (2 outputs: SCLK and CS, 1 input: SDO)
> - Allocate memory (a lot! I'd like to capture millions of samples)
> Loop for N samples:
> - Pull CS high
> - Wait 3 cycles
> - Pull SCLK high
> - Wait 2 cycles
> - Pull CS low (initiate output)
> - Wait 2 cycles
> - Pull SCLK low
> - Wait 5 cycles
> - Pull SCLK high
> - Wait 5 cycles
> - Pull SCLK low
> - Wait 5 cycles
> - Pull SCLK high
> - Wait 5 cycles
> - Pull SCLK low
> - Read SDO (first bit)
> - Store it somewhere
> - Wait 3 cycles
> - Pull SCLK high
> - Wait 5 cycles
> - Pull SCLK low
> - Read SDO (2nd bit)
> - Store it somewhere
> - Wait 3 cycles
> - Pull SCLK high
> - Wait 5 cycles
> - Pull SCLK low
> - Read SDO (3rd bit)
> - Store it somewhere  ... and so on until 12th bit
> - Wait 60ns (acquisition time) while always pulling CLK high and low every 
> 6 cycles
> End of loop
>
>
> The problem is that I have never programmed in assembly code. I have tried 
> looking at examples but have a really hard time understanding the simplest 
> commands (ex: what is a simple MOV r3, 1<<7 doing?).
>
> I'd like to have a thoroughly commented, simple example to start if 
> possible. 
>
> Memory issues are also a big problem. How can I store all the captured 
> data so that it is fast and doesn't overflow the PRU memory?
>
> Many thanks for your help!
>
> Touste
>
> -- 
> 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 beagleboard...@googlegroups.com <javascript:>.
> 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 beagleboard+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to