0
\$\begingroup\$

I am currently working on a system with 4 channels of IF signals (100kHz). Since its a fast changing signal via all 4 channels I have to process all channels simultaneously. I have chosen 2 16 bit dual channel simultaneous sampiling ADCs (ADAR7251) for the 4 signals. (ADC throughput 600ksps) I want to use SPI for data acquisition. But I am not able to decide on which microcontroller will be best for simultaneous data acquisition from 4 channels of ADC using SPI.

I have mostly worked on AVR, so my choice is 32-bit AVR UC3 Microcontrollers from ATMEL (eg. AT32UC3L0128). But I am not sure if simultaneous data acquisition and storing will be possible in the Flash. Apart from acquisition I have to run a sperate process to transfer the data to PC via RS232 or LAN. ARM Cortex M based uC (eg. STM32F407/417) also works for me, if there are better suggestions.

Please suggest a microcontroller that can be used for 4 simutaneous data acquisition with SPI.

ADAR7251: http://www.analog.com/media/en/technical-documentation/data-sheets/ADAR7251.pdf

AVR UC3: http://www.atmel.com/products/microcontrollers/avr/32-bitavruc3.aspx

STM32F407/417: http://www.st.com/en/microcontrollers/stm32f407-417.html?querycriteria=productId=LN11

\$\endgroup\$
7
  • 1
    \$\begingroup\$ If I understand correctly you have about 5Mbytes/second data to deal with, plus any overheads. I doubt even a low end ARM is powerful enough to be safe. \$\endgroup\$ Commented Nov 10, 2016 at 19:36
  • \$\begingroup\$ What is an IF signal? \$\endgroup\$
    – Grebu
    Commented Nov 10, 2016 at 21:44
  • \$\begingroup\$ @Grebu Intermediate Frequency \$\endgroup\$
    – kkrambo
    Commented Nov 11, 2016 at 3:22
  • \$\begingroup\$ @SpehroPefhany you are right but the point which makes me worry is if I can capture data simultaneously. All 4 channels are important and fast changing, So I need to get data from all 4 in seperate containers. \$\endgroup\$
    – dDebug
    Commented Nov 11, 2016 at 11:06
  • \$\begingroup\$ You need multiple real ADCs (not multiplexed) and to clear the data out in real time before the next result comes along. If you try to use one hardware SPI for 4 channels it would have to run at almost 50MHz which seems unlikely. \$\endgroup\$ Commented Nov 11, 2016 at 14:15

1 Answer 1

2
\$\begingroup\$

But I am not able to decide on which microcontroller will be best for simultaneous data acquisition from 4 channels of ADC using SPI.

Read and understand the datasheet of your ADC. You will use SPI to configure and control this ADC, but data is delivered on dedicated outputs that can also operate from an external clock (slave mode). For the control part, a low end microprocessor is appropriate. Storing and/or transferring data to a host is stream processing, a uC adds no benefit, an FPGA would be better.

Apart from acquisition I have to run a separate process to transfer the data to PC via RS232 or LAN.

RS232 will be too slow, Ethernet and USB are common for this purpose. Sending data in Ethernet-frames to a configurable MAC without any protocol is a high-speed solution with very little overhead (but does not allow for a routed connection). USB may need more effort, I suggest looking at Cypress EZ-USB products if you want to go that way.

On FPGAs, IP for DRAM-controllers and Ethernet is available for free. Free NAND- and NOR-flash controllers might be harder to find. A FPGA can also host a simple uC, either as hard-IP or as soft-CPU.

Please suggest ...

I suggest a DE0-nano SoC for development (cheap). It has GPIOs on pin headers (HSMC connectors are more expensive and do not add value at your data rate). Put your ADCs on a daughterboard. Use the dual core ARM Cortex A9 hard-IP for control. Implement data streaming to DRAM and Ethernet in the FPGA-fabric.

\$\endgroup\$
4
  • \$\begingroup\$ Thanks for the suggestions. I already implemented the data acquisition on a FPGA(Spartan-6). But we need to develop it on a Microcontroller for requirement sake! The most challenge I see is simultaneous data capture on 4 channels. If I don't do it simultaneously the data is lost. Can I achieve simultaneous data capture in Flash with AVR or ARM? \$\endgroup\$
    – dDebug
    Commented Nov 11, 2016 at 11:04
  • \$\begingroup\$ @dDebug I am still unsure what your requirements are exactly. A uC would read some GPIO ports and write to memory in a loop. Unless you need to process the data or need to implement some transmission protocol, where is the point to use a uC? When compared to dedicated streaming logic, uC are far less efficient. Think of interrupts! Processor instructions need to be fetched from memory. You would need a realtime OS. Why all this fuss if the task is only to store or transmit data? \$\endgroup\$
    – Andreas
    Commented Nov 11, 2016 at 15:22
  • \$\begingroup\$ You are right uC are far less efficient in streaming and this is the challenge I face when switching from FPGA. Do you know any such RTOS board with AVR or ARM that could be efficient for this purpose? \$\endgroup\$
    – dDebug
    Commented Nov 11, 2016 at 16:08
  • \$\begingroup\$ @dDebug Sorry, I can give no recommendation. I have some experiences with uC/OS-III but I do not have market overview, there may be better alternatives. I was tempted to delete my answer as slightly off-topic, but will not do so, until you get a better answer matching your reqs. \$\endgroup\$
    – Andreas
    Commented Nov 11, 2016 at 16:37

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.