Forum: Mikrocontroller und Digitale Elektronik 8 ADCs über SPI an uC


von Michael Sonst (Gast)


Lesenswert?

Hallo,

für mein neustes Projekt benötige ich 8 ADCs mit 3MS, die alle 
gleichzeitig sampeln.

Nun habe ich bereits einen ADC herausgesucht. SPI, 3MS, 10Bit, alles 
super, aber:
Aus dem Datenblatt entnehme ich, dass das Sampeln mit dem Herunterziehen 
der nCS Leitung erfolgt und die Daten über SPI gleich rausgeschoben 
werden, was ja meiner Forderung nach gleichzeitigem Sampeln im Wege 
steht.

Mich würde interessieren wie ihr das so macht.

Grüße
Michael

von Tach (Gast)


Lesenswert?

Hast du dir schonmal über diese Datenrate Gedanken gemacht?

von Gebhard R. (Firma: Raich Gerätebau & Entwicklung) (geb)


Lesenswert?

>Aus dem Datenblatt entnehme ich, dass das Sampeln mit dem Herunterziehen
>der nCS Leitung erfolgt und die Daten über SPI gleich rausgeschoben
>werden, was ja meiner Forderung nach gleichzeitigem Sampeln im Wege
>steht.

Wieso?
Braucht's halt 3SPI's. Wo ist das Problem? Mit einem AVR brauchst du da 
ohnehin nicht mal dran denken.

Grüsse

von Falk B. (falk)


Lesenswert?

@  Michael Sonst (Gast)

>Nun habe ich bereits einen ADC herausgesucht.

Welchen?

>Aus dem Datenblatt entnehme ich, dass das Sampeln mit dem Herunterziehen
>der nCS Leitung erfolgt und die Daten über SPI gleich rausgeschoben
>werden, was ja meiner Forderung nach gleichzeitigem Sampeln im Wege
>steht.

Warum? Weil ein normaler SPI-Master nicht 8 Stück gleichzeitig auslesen 
kann? Ok, das ist ein Problem. Mit einem CPLD ginge es aber, dort kriegt 
man 8 SPI-Master rein, die man dann vom uC aus lesen kann, ggf. sogar 
mit parallelem (memory mapped) Interface. In die Richtung wird es so 
oder so laufen, denn du hast ja immerhin 3x8=24 Msmps = 240Mbit/s, die 
du in Echtzeit irgendwo speichern musst. Ein kleiner AVR kann das nicht 
mehr, ein größerer ARM kann das auch nur memory mapped oder über 
anderes, schnelle Schnittstellen.

von Falk B. (falk)


Lesenswert?

@Gebhard Raich (geb)

>Braucht's halt 3SPI's. Wo ist das Problem?

Der OP hat ACHT ADCs. Und 3 Msmps.

von Delta (Gast)


Lesenswert?

Habe sowas ähnliches gemacht. 16ADC 12Bit 3MSamples. Gemeinsamer Clock 
und nCS, separate Datenleitunge. Die ADC's werden von einem FPGA 
angesteuert, funktioniert wunderbar. Problematisch wird aber die 
Übertragung zum Computer.

von Gebhard R. (Firma: Raich Gerätebau & Entwicklung) (geb)


Lesenswert?

Ah, verlesen.
Ja, dein Vorschlag ist gut, alternativ zum CPLD kann er ja ein CMOS Grab 
mit Schieberegistern und Steuerlogik errichten.

Grüsse

von Michael Sonst (Gast)


Lesenswert?

@Falk Brunner:
-Den MAX11117.
-Hatte schon drüber nachgedacht die Datenleitungen in je ein Latch zu 
schieben.

@Tach:
Ja, warum? 240MBit/s Ist ja nicht unbedingt viel.

@Delta:
Klingt sehr ähnlich =) Ist das öffentlich?

Grüße
Michael

von Delta (Gast)


Lesenswert?

Michael Sonst schrieb:
> @Delta:
> Klingt sehr ähnlich =) Ist das öffentlich?

Nein, das Projekt ist leider nicht öffentlich. Ist aber eigentlich auch 
keine grosse Sache. Bei Fragen stehe ich natürlich gerne zur Verfügung.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Ich würde mir mal anschauen, ob ich mit 8 Wandlern eine Daisy Chain 
aufbauen könnte. Immerhin steht im Datenblatt, dass der Baustein QSPI 
könne. Dann hast du einen einzigen SS für alle ADCs. Siehe dort unten:
http://en.wikipedia.org/wiki/Serial_Peripheral_Interface_Bus

Allerdings habe ich den schlimmen Verdacht, dass da bei Maxim einer 
nicht weiß, was QSPI ist...

von Michael Sonst (Gast)


Lesenswert?

@Lothar: Laut Datenblatt hat der Baustein nur VDD, GND, AIN, nCS, DOUT, 
SCLK, kein MISO :-/

Ehrlich gesagt ist das doch nicht wirklich eine Sonderlocke die ich da 
basteln will. Seltsam, dass es hierzu so wenig Informationen gibt.

Grüße
Michael

von Tach (Gast)


Lesenswert?

Michael Sonst schrieb:
> @Tach:
> Ja, warum? 240MBit/s Ist ja nicht unbedingt viel.

Na dann :-)
Ich hab das auch schon mal gemacht.
Waren 10x 14Bit x 3MHz, also geringfügig mehr...allerdings hatte ich 
einen FPGA und konnte mir mit entsprechend vielen SPI-Schnittstellen 
bzw. Logik behelfen.

Entweder willst Du die Daten direkt im uC weiterverarbeiten oder Du 
willst Sie irgendwohin übertragen.
Beides ist nicht gerade ohne (persönliche Meinung).
Delta hatte ja schon erwähnt dass selbst eine Übertragung zum PC nicht 
ohne ist. Evtl. mit Gigabit-Ethernet ;-)

von Michael Sonst (Gast)


Lesenswert?

@Tach: Ob ich einen FPGA, oder einen uC dahinter hänge wollt ich auf 
Grundlage dieses Threads u.a. entsccheiden. :-)

Leider scheint es hiefür allerdings keine 0815 Lösung zu geben.


Grüße
Michael

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Michael Sonst schrieb:
> @Lothar: Laut Datenblatt hat der Baustein nur VDD, GND, AIN, nCS, DOUT,
> SCLK, kein MISO :-/
Dann ist das Datenblatt schon auf der ersten Seite Müll, denn QSPI ist 
SPI, nur eben "Queued" als Daisy Chain...

Michael Sonst schrieb:
> @Tach: Ob ich einen FPGA, oder einen uC dahinter hänge wollt ich auf
> Grundlage dieses Threads u.a. entsccheiden. :-)
Nimm einen MachXO, lies alle ADC parallel ein und gib sie irgendwie 
dorthin weiter, wo du die Daten eigentlich brauchst. Wo brauchst du die 
eigentlich?

Oder du nimmst einen ADC, der Daisy Chain kann, oder, oder oder...

von MCUA (Gast)


Lesenswert?

Die CPU könnte (ohne CPLD) 8 Bit parall. einlesen, und zwar je Befehl 
die einzelnen Databits der 8 SPI-Slaves. Macht (für die 8 ADCs) 10 
EinleseBefehle je Wert, insges 333ns, also 33ns je einzelnen 
EinleseBefehl.
(Die gelesenen Bits müssten danach nat noch aufgeteilt werden, was nat 
wieder etwas Rechenleistung kostet).
(damit noch Rechenleist. übrig bleibt, müssten die EinleseBefehle nat 
schneller abgearb. werden)

von Falk B. (falk)


Lesenswert?

@  MCUA (Gast)

>die einzelnen Databits der 8 SPI-Slaves. Macht (für die 8 ADCs) 10
>EinleseBefehle je Wert, insges 333ns, also 33ns je einzelnen
>EinleseBefehl.

Nebenbei muss aber noch der SPI-Takt generiert werden, und das synchron.

Naja, solche Tricks sind machmal schon OK, aber irgendwann wird es 
albern. Ein FPGA macht das mit einem müden Lächeln.

von MCUA (Gast)


Lesenswert?

>Nebenbei muss aber noch der SPI-Takt generiert werden,
Kann aus den \RD-Signal abgezweigt werden (bzw ist das selbe), muss 
nicht synchr sein.

>Naja, solche Tricks sind machmal schon OK,
sagte ja nicht dass das die einzigste Möglichkeit wäre, aber Manche 
verwenden auch dicke Brummer, wo s überhaupt nicht nötig wäre.
Ausserdem, schnell genug lesen muss die CPU sowiso können, da hilft auch 
ein FPGA nicht (sofern man es nicht als Co-Proz benutzt).

von Delta (Gast)


Lesenswert?

Tach schrieb:
> Delta hatte ja schon erwähnt dass selbst eine Übertragung zum PC nicht
> ohne ist. Evtl. mit Gigabit-Ethernet ;-)

Ich verwende zur Übertragung des Streams USB3 (mit dem Cypress FX3). 
Steckt aber noch in den Kinderschuhen.

Falk Brunner schrieb:
> Ein FPGA macht das mit einem müden Lächeln.

;) Kann ich bestätigen.

Michael Sonst schrieb:
> Ob ich einen FPGA, oder einen uC dahinter hänge wollt ich auf
> Grundlage dieses Threads u.a. entsccheiden. :-)

Was willst du denn machen? Was willst du mit den gewonnen Daten 
anstellen? Verarbeiten, Komprimieren, Speichern, Anzeigen usw?

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.