This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

Easiest way to hook up ADC to PC for continuous data streaming?

Other Parts Discussed in Thread: ADS1274, ADS1278, ADCPRO, DAC8734

I am working on a multi-channel data acquisition system, and I would like to utilize the TI ADS1274 series ADCs. I have played a bit with the EVM and EVM-PDK modules, but their big disadvantage is that they acquire data for 1 second, and then take 30 seconds to nibble the acquired data back to the PC using USB 1.0 speeds. That's basically useless. What I need is continuous acquisition and streaming.

So my question is, where should I start? I am willing to learn on my own, but I would appreciate being pointed in the right direction. For example, is there an easy and inexpensive way to take the SPI out data from the ADC, and to have it continuously streamed (with minimal or no buffering) to a Labview application running on a PC?

I think there are some SPI -> USB -> PC solutions. This kind of setup might work for me. Is there a particular recommendation for a good and simple implementation?

Also, a more interesting alternative to me would be some SPI -> Ethernet -> PC solution. Again, is there a recommendation for a simple and good implementation?

I wish it would be easier to interface the ADC / DAC components directly to a PC. Maybe in the future TI could implement a minimal TCP/IP stack and ethernet interface right on the ADC silicon? Hint, hint ...

  • Sebastian,

    Sebastian Osterfeld said:
    I have played a bit with the EVM and EVM-PDK modules, but their big disadvantage is that they acquire data for 1 second, and then take 30 seconds to nibble the acquired data back to the PC using USB 1.0 speeds. That's basically useless. What I need is continuous acquisition and streaming.

    Useless is a bit harsh, isn't it? After-all, these are EVALUATION kits - not end products. The kits are designed to help you evaluate the device for use in your own designs! Who are we to rob you of the pleasure of the engineering experience!

    Sebastian Osterfeld said:
    I think there are some SPI -> USB -> PC solutions. This kind of setup might work for me. Is there a particular recommendation for a good and simple implementation?

    USB to SPI and USB to I2C solutions do exist, Cypress Semiconductor is a manufacturer of such devices. I am not very familiar with many of these devices so I cannot speak to which part will pair well with the ADS1274. You'll need to sit down with the ADS1274 datasheet and understand the timing diagram then find some USB to SPI converter that can match the timing diagram well. I don't think this is the best way to do this, and I can't say if it would be easy or not.

    Sebastian Osterfeld said:
    Also, a more interesting alternative to me would be some SPI -> Ethernet -> PC solution. Again, is there a recommendation for a simple and good implementation?

    I haven't seen many of these, a quick google search has yielded a few results though. You'd have to dig into these guys a little more to figure out just how robust they are.

    Sebastian Osterfeld said:
    So my question is, where should I start? I am willing to learn on my own, but I would appreciate being pointed in the right direction. For example, is there an easy and inexpensive way to take the SPI out data from the ADC, and to have it continuously streamed (with minimal or no buffering) to a Labview application running on a PC?

    The trickiest thing about a streaming data capture system is...well...streaming the data. You haven't shared what sort of data-rates you're looking at implementing but I would venture to guess it's something pretty quick - probably quick enough that a PC keeping up with it point by point would be pretty challenging since most interfaces have some kind of overhead. The easiest way to fix this is to not ship the data out point by point and, instead, use some sort of buffering scheme - a ping-pong buffer perhaps. Unless the USB to SPI or Ethernet to SPI solution features some sort of buffering scheme I think you will find it very difficult to keep up with the streaming data. Because of this I should think that a micro-controller, DSP, or application processor would be the best fit. Maybe a BeagleBoard with Angstrom and an ADS1274 SPI kernel module that ships out the buffered data to your PC - it could even be wireless with the power of Linux tossed in the mix! Most embedded systems now have some sort of DMA feature, some that even have built in ping-pong buffering capabilities, that you'd be able to leverage if the timing diagrams of the embedded device matched up with the ADS1274 nicely.

    In terms of where to start and what to do I would recommend...

    1. Understand the ADS1274 SPI timing extremely well.
    2. Look for solutions that can mate with the ADS1274 timing. Maybe see if you can find one of each.
    3. See how well the USB/Ethernet to SPI devices buffer and stream data.

    Also, depending on the protocol that you end up selecting and the capabilities of the specific device that you choose to implement, LabVIEW is a bit tricky about streaming data. Sending/receiving USB interrupts is tricky - but its going to be tricky no matter what language you choose to do it in.

    Sebastian Osterfeld said:
    I wish it would be easier to interface the ADC / DAC components directly to a PC. Maybe in the future TI could implement a minimal TCP/IP stack and ethernet interface right on the ADC silicon? Hint, hint ...

    Most of the time the ADC is not interfaced directly to a PC. If you'd like to buy a few million ICs it may be something we could invest in.

  • Kevin, thanks for your detailed answer. I will follow up on the leads that you suggested.

    Also, for completeness' sake, I want to share links to two existing implementations that stream ADS1278 data at full bandwidth continuously to a PC over Ethernet.

    Implementation #1: Volodya DAQ

    http://volodya-project.sourceforge.net/daq.php

    This is a pretty neat and inexpensive use of TI eval boards and well documented for DIY. I really like it, I just wish it was 1/10th of the size, and stripped of all unnecessary components, so that I could more easily bundle several of these for more channels.

    Implementation #2: D-TACQ ACQ164cpci

    http://www.d-tacq.com/acq164cpci.shtml

    This is a beautiful implementation with 8 ADS1278 in parallel, for a total of 64 channels. Very nice, but a little pricey.

    With these two implementations in existence, what is still missing? Maybe nothing, but I'd like to make sure that I am not overlooking something easier. For example, I am wondering if there is a way to achieve the functionality of implementation #1 with a much reduced component count. Maybe a TI DSP could take care of the buffering and streaming. Something along the lines of the TI MMB0 eval motherboard, but with improved data to PC transfer capabilities. And with Ethernet rather than USB, so that it is more scalable.

    If I end up finding or developing something along those lines, I will come back and post again.

  • Sebastian,

    Thanks for sharing those projects, they look exciting and I'll have to dig into them more.

    How many channels are you looking to implement? Full-speed?

    Sebastian Osterfeld said:
    Something along the lines of the TI MMB0 eval motherboard, but with improved data to PC transfer capabilities. And with Ethernet rather than USB, so that it is more scalable.

    I think you'll probably be able to find something in the TI MCU portfolio that will suit your needs. The C5507/9 on the MMB0 is quite dated, as marked by the USB1.0 peripheral you pointed out before. Due to legacy EVMs, however, it is difficult to keep pace with our evaluation platforms.

    With all this streaming stuff in mind and what you've mentioned about a smaller BOM, certainly look for a MCU that has as much on chip as possible. Maybe a master-slave architecture with a "beefy" master like OMAP, Sitara, or C6000 and a few $5 DSP slaves depending on how many channels you want. The more stuff that flows naturally and on chip the more you'll be able to leverage DMA - this is going to be key unless you go to an FPGA.

  • Hello all,
    I am looking for a simple solution to get sampled data from ADS1278EVM board too. I thought that I can connect MMB0 and ADS1278EVM board and then I can read data throughout MMB0 USB interface. While I was searching something about this solution, I encountered this discussion and read it. I am curious either 1 second and 30 seconds are actual values or  not in the sentence from Sebastion Osterfeld. If it is just so the speak, Could you explain how often MMB0 sends data throughout USB interface.
    >I have played a bit with the EVM and EVM-PDK modules, but their big disadvantage is that they acquire data for 1 >second, and then take 30 seconds to nibble the acquired data back to the PC using USB 1.0 speeds.
  • Cumali,

    You can easily get sampled data from the ADS1278EVM using the ADCPro software and plug-in associated with it. It is not, however, intended to be a data acquisition end-product - just an evaluation system for the ADS1278 device. For something more "productized" you might look at some of the links from Sebastian or consider developing your own solution.

  • Hi Kevin,

    Thanks for your answer. Actually, I want to get data of 8 channels from ADS1278 and then send this data to another service as samples of audio amplitudes. Data will be used to control some audio devices so that it wouldn't be used as a real time audio stream. However, if being ready of sample data on USB buffer takes 1 second, this solution wouldn't be work for me and I should continue with SPI driver solution. Otherwise it may be worth to try. Where can I find detailed information about USB implementation of MMB0 ?

    Sincerely,

    Cumali Ceylan

  • Cumali,

    There is no documentation available that is associated with the MMB0 USB implementation. It's only meant to facilitate evaluation of the device, so it is not documented like a typical development platform may be. I think your best bet is to proceed with your own SPI driver solution.

  • I now have an Ethernet connected ADS board - see my forum post here:

    ADS1278 + ADS1274 + DAC8734 full rate on Ethernet easy EVM board - interested?

    e2e.ti.com/.../475309