Part Number: PROCESSOR-SDK-AM64X
Other Parts Discussed in Thread: AM2434, SYSCONFIG, ADS127L11, ADS131M08
Tool/software:
Hello, Similar to this thread, https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1300144/processor-sdk-am64x-pru-16-bit-input-capture, I am trying to read from a 40Msps ADC (MAX1195 or MAX1198) that provides two channels of 8 bit data over a parallel bus. The 16 bit parallel capture mode seems to be an ideal fit since I can use the ADC clock to trigger the parallel capture on the PRU. (The ADC datasheet advises that output data is valid on the rising edge of the clock). According to the AM243x datasheet the PRU should be able to capture the parallel data at up to 50Msps (20ns clock period), but obviously this only works if I can stuff the data somewhere fast enough.
From the old thread, it sounds like the only difference between handling the incoming data with Direct Mode and Parallel Capture mode would be that the PRU will only update bits [0-15] of R30 [b16] transitions low or high. Is there any speed advantage to this vs using Direct Mode and polling R30 [b16] changes to high or low (in assembly)? If I understand correctly from the old post Parallel Capture does not initiate any action other than to update R30, so I would need to poll R30 [b16] regardless to determine when to transfer the data to a buffer block.
Also, the examples given in the SDK for the ADS85x8 are quite slow, using the macros to detect when a pin changes high/low adds quite a bit of latency. For my application I only have 8 clock cycles (running at 333 on the AM2434) to grab the int16 and store it in the buffer before the next sample shows up, so I will need to eliminate the debounce delays or just poll the pin directly rather than use the macros.
Am I tracking everything correctly or have I made some bad assumptions? Please correct me or confirm if I am close.
Also, in SysConfig there is an ICSS PRU block for ADC that is used in the ADS85x8 example. Several control signals are defined in this block that I don't need. Is it possible to modify or create my own version of the ADC config block, or should I just set everything up manually? Is there an example of setting up the registers for parallel capture in assembly rather than SysConfig?
Thanks!
