Forum: Mikrocontroller und Digitale Elektronik Daisy Chain SPI ADC


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Bert S. (kautschuck)


Angehängte Dateien:

Lesenswert?

Hi,

Ich möchte gerne mehrere MCP3208-CI_SL über 1 SPI Bus in Daisy-Chain 
auslesen, bin mir aber nicht sicher ob das geht. Plan B wäre ein Shift 
Register auf CS, aber mit Daisy Chain würde ich nochmals massiv Traces 
sparen bei großer Anzahl Chips.

Jemand eine Idee, ob Daisy Chain des SPI mit dem MCP3208-CI_SL klappt? 
Wie es ausschaut, geht nur DIN in ein Shift Register und dann nach DOUT, 
wenn ich aber die CLK an allen ICs gleichzeitig anlege, lesen die Müll 
ein bis DOUT des letzten ICs mit den richtigen Start Infos kommt.

Datenblatt: 
https://ww1.microchip.com/downloads/aemDocuments/documents/APID/ProductDocuments/DataSheets/21298e.pdf

Grüße,
Bert

von Peter D. (peda)


Lesenswert?

Bert S. schrieb:
> Jemand eine Idee, ob Daisy Chain des SPI mit dem MCP3208-CI_SL klappt?

Ich kenne keinen einzigen ADC/DAC, der sowas kann.
Es müßten ja alle weiteren Eingangsbits durchgereicht werden. Es wird 
aber immer nur das eigene Ergebnis ausgegeben.

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


Lesenswert?

Bert S. schrieb:
> Wie es ausschaut, geht nur DIN in ein Shift Register und dann nach DOUT
Wo meinst du das zu erkennen? Ich lese das Protokoll so, dass DIN nie 
nach DOUT geschoben wird. Also wird in einer Chain das eingetaktete 
Konfigurationswort nicht an den nachfolgenden ADC weitergegeben.

von Patrick C. (pcrom)


Lesenswert?

Gib jeden SPI slave seinen eigenen CS. Alle andere signalen von SPI bus 
koennen parallel.
Wieviel ADCs brauchst du ?
Dann hat man auch die moeglichkeit zB alle ADCs gleich zu starten und 
nachdem individuel aus zu lesen.

Daisy Chaining ist hier nicht fuer geeignet; das wird z.B benutzt fuer 
individuelle LEDs die mit eine (art von) SPI angesteuert werden.

Oft kann man DIN und DOUT noch parallel schalten. Es sieht so aus das 
diesen Chip das auch kann.

Patrick aus die Niederlande

: Bearbeitet durch User
von Bert S. (kautschuck)


Lesenswert?

Lothar M. schrieb:
> Wo meinst du das zu erkennen? Ich lese das Protokoll so, dass DIN nie
> nach DOUT geschoben wird. Also wird in einer Chain das eingetaktete
> Konfigurationswort nicht an den nachfolgenden ADC weitergegeben.

Danke, habe gerade gesehen, dass dem nicht so ist. Also bleibt nichts 
anderes als individuelle CS. Im Endeffekt brauche ich 20 x 8 ADCs, also 
20 solcher Chips. Dann halt mit einem Shift Register.

von Adam P. (adamap)


Lesenswert?

Peter D. schrieb:
> Ich kenne keinen einzigen ADC/DAC, der sowas kann.

z.B. der ADS1299
Aber der hat außer dem DIN noch ein extra ein DAISY_IN.

von Peter D. (peda)


Lesenswert?

Bert S. schrieb:
> Im Endeffekt brauche ich 20 x 8 ADCs

Für >8 Eingänge nehme ich Multiplexer (74HC4051). Um die Multiplexer zu 
wählen, noch einen 74HC595. Du brauchst also 2 /CS Anschlüsse für das 
SPI.
Für 160 Eingänge: 20 * 74HC4051 + 1 * 74HC595.

von Gustl B. (-gb-)


Lesenswert?


von Patrick C. (pcrom)


Lesenswert?

Bert S. schrieb:
> Im Endeffekt brauche ich 20 x 8 ADCs, also
> 20 solcher Chips.

Dann wuerde ich mich nicht so sehr sorgen machen ueber extra control 
lines aber mehr ueber power distribution, groesse der Platine in 
kombination mit connector-inputs fuer die analoge signalen, 
geschwindigkeit/sample rate usw... Erzahl mal etwas ueber die gesammt 
applikation bitte

von Rainer W. (rawi)


Lesenswert?

Bert S. schrieb:
> Im Endeffekt brauche ich 20 x 8 ADCs, also 20 solcher Chips.

Mit 20 von den Chips hast du genau 20 ADCs, weil jeder von denen nur 
genau einen ADC enthält (Datenblatt S.1). Jeder Chip kann dann wiederum 
zwischen 8 Analogeingängen per Multiplexer auswählen (falls du sie auf 
single endet konfigurierst, sonst nur 4).
Daisy Chain geht mit denen definitiv nicht (Kap. 3.5/3.6 DS). Manche 
DACs können das, falls sie über den SPI nur die Daten für die Ausgabe 
erhalten. Da ist dann aber keine Multiplexersteuerung erforderlich.

von Fabian N. (flyget)


Lesenswert?

Ohne jetzt das Datenblatt verglichen zu haben:

Wir verwenden 20 Stück der AD7766BRUZ hintereinander in 
DaisyChain-Konfiguration. Das funktioniert zuverlässig und sehr solide. 
Benötigt allerdings einen µC der auch ein entsprechendes Peripheral zum 
Auslesen der vielen Bits hintereinander hat. In unserem Fall ein DSP der 
TMS320 Familie. Der hat ein Multichannel-Peripheral das sowas in 
Kombination mit dem DMA unterstützt. Andere µC haben heutzutage oftmals 
"CustomLogic"-Peripherals, eine Art µFPGA, mit dem sich sowas evtl. 
realisieren lässt.

von Andi Y. (andiy)


Angehängte Dateien:

Lesenswert?

Du kannst das CS Signal und das Din Signal mit einem Schieberegister 
verzögern und zum nächsten MCP führen, das CMOS 4517 IC hat zum Beispiel 
2 Schieberegister mit 64 Stufen integriert. Da es Abgriffe bei 16, 32, 
48 und 64 Stufen gibt, kannst du mit einem 4517 gleich 2 ADCs 
"daisychainen".

Benötigt zwar ein zusätzliches (halbes) IC, aber spart viele Leitungen, 
wenn das ganze dezentral mit mehreren Modulen verwirklicht werden soll. 
Anbieten würden sich Module mit 2 MCPs auf einer Platine. (Siehe 
angehängtes Schema)

Die einzelnen ADCs lassen sich nacheinander nach jeweils 32 Clocks 
Verzögerung abfragen, und antworten alle auf der einen MISO Leitung.
Du musst halt zuerst CH0 von allen ADCs abfragen, dann CH1 von allen 
usw.

Andi

von Andi Y. (andiy)


Lesenswert?

Clock ist im Schema nicht eingezeichnet. Er wird halt mit allen Clock 
Eingängen verbunden.

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.