Forum: Mikrocontroller und Digitale Elektronik DDR/douplepumped SPI Interface


von Christian B. (Gast)


Lesenswert?

Hallo zusammen,

Ich habe vor mehrere INTAN RHD2164 parallel per Mikrocontroller (µC) 
anzusteuern. Diese verfügen über Serial Peripheral Interface (SPI), 
welche allerdings für den Datenrücktransport (MISO) einen Dual Data Rate 
(DDR) Ansatz verwenden. Daher suche ich nun seit einiger Zeit nach einer 
Lösung um dieses DDR SPI zu handhaben. Bei meiner Recherche bin auf 
etliche Beiträge gestoßen, welche aber mit DDR "Data Direction Register" 
oder mit SPI "System Packet Interface" meinen.
Auch fand ich einige Hinweise auf Flash-Speicher mit DDR-SPI allerdings 
keinerlei Informationen ob es entsprechende µC gibt, die ein 
entsprechendes Interface mitbringen.
Meine Frage(n) wäre(n) also daher:
-sind euch entsprechende µC bekannt, die von Haus aus ein entsprechend 
modifiziertes SPI mitbringen?
-ist alternativ die Verwendung eines Demux/entsprechenden 
Schieberegisters(als Delay-Line)+ ein µC mit Dual-SPI realistisch?
-oder ist die Verwendung eines FPGA bzw. Hybrid (FPGA+µC) notwendig?

Ich würde gerne Sachen wie bit banging vermeiden und das ganze so simpel 
wie möglich halten. Daher würde ich auch lieber einen µC statt eines 
FPGA verwenden.

Vielen Dank in Voraus!

P.S: Der Chiptyp um den es geht ist der INTAN RHD2164 ( 
http://www.intantech.com/files/Intan_RHD2164_datasheet.pdf ). Es handelt 
sich dabei um zwei 32 Kanal Ableitungschips, die sich auf einem Die 
befinden und deren Daten per DDR MUx rausgeschrieben werden.

von ttl (Gast)


Lesenswert?

der kann ja nur 1 Mbit, das kannst du doch locker in Software machen auf 
einem flotten MC

von foo (Gast)


Lesenswert?

Hmm, mit zwei SPI am Master könnte das schon gehen.
Den Clock zurückführen auf die zweite SPI am uc (in Slave 
Konfiguration). MISO vom Chip auch zusätzlich zum Slave.
Die erste SPI stellst du auf steigende Flanke, die zweite auf fallende. 
Die beiden 16 bit Werte wieder zusammenrechnen zu einem 32 bit Wert.

von Christian B. (Gast)


Lesenswert?

Warum ich gerne einen Softwareansatz vermeiden würde ist, weil ich 
mehrere von den INTAN parallel ansteuern will und der µC zusätzlich noch 
die Kommunikation mit der Außenwelt in Form eines Netzwerks durchführen 
soll.

Die Idee mit dem zweiten SPI in Slave Einstellung klingt verlockend 
einfach. Ich bin allerdings recht neu in der Thematik und frage mich, ob 
zwei Schnittstellen an einem µC hinreichend synchron sind, dass das 
"Durchschleifen" des Clock-Signal ausreicht um hinterher die einzelnen 
Bits korrekt zuordnen zu können.

von foo (Gast)


Lesenswert?

Christian B. schrieb:
> ob zwei Schnittstellen an einem µC hinreichend synchron sind, dass das
> "Durchschleifen" des Clock-Signal ausreicht um hinterher die einzelnen
> Bits korrekt zuordnen zu können.

Synchroner gehts fast nicht mehr als Master und Slave am selben uc.

Ein Problem seh ich jedoch wenn ich mir das Timing ansehe.
Mit meinem Ansatz würdest du das Bit B0 verlieren...
Bei diesem tollen Chip soll nämlich bei der steigenden, der fallenden 
Flanke, UND steigenden CS Flanke (B0) gesampelt werden.
Sowas kann wieder nur einem Hardwarekollegen eingefallen sein...

von Klaus 2. (klaus2m5)


Lesenswert?

Es müsste doch eigentlich möglich sein, die beiden Kanäle nacheinder zu 
lesen, indem nach dem Lesen eines Kanals die SPI Polarität umgeschaltet 
wird. Allerdings wird dabei die Hälfte der Samples verworfen. Aber 
besser als Bit_Banging allemal, denn man braucht schon eine relativ hohe 
SCLK (laut Spec. max. 25MHz) um die maximalen 1,05 Megasamples mal 16 
bit ausnutzen zu können.

von foo (Gast)


Lesenswert?

Klaus 2m5 schrieb:
> Es müsste doch eigentlich möglich sein, die beiden Kanäle nacheinder zu
> lesen,

Auch wenn du es nacheinander machst, was nicht nowendig ist wennst zwei 
SPI hast, hast du noch immer das Problem mit B0. Das will auf die 
steigende Flanke von CS gesampelt werden (kein Clock). Mann könnte noch 
was tricksen und nach dem Senden noch das B0 manuell lesen. Ist nur die 
Frage wie lang das noch ansteht, und ob sich das zeitlich ausgeht.

von Klaus 2. (klaus2m5)


Lesenswert?

Wenn man unter CS aktiv SCLK polarity umschaltet, wird bereits eine 
halbe clock erzeugt. Man hat allerdings am Ende dann eine halbe clock 
zuviel...

Wenn ich das richtig sehe, bleibt am Ende B0 stehen bis CS deaktiviert 
wird.

von Uwe B. (Firma: TU Darmstadt) (uwebonnes)


Lesenswert?

Hilft vielleicht das SPIFI Interface bei den neueren NXP LPC Bausteinen 
weiter?

von Hans-Georg L. (h-g-l)


Lesenswert?

ttl schrieb:
> der kann ja nur 1 Mbit, das kannst du doch locker in Software machen auf
> einem flotten MC

Erst Datenblatt lesen, dann schreiben.

Im Datenblatt steht: Maximum SCLK frequency is 24 MHz und DDR.
Da ist nix mehr mit einem beliebigen 8Bit MC und erst recht nicht in 
Software.

@Christian B

Wieviel von den Dingern willst du anschliessen und mit welcher 
Übertragungsdatenrate betreiben ?

Und denk daran das nach der Übertragung die Daten ja auch irgendwie 
bearbeitet werden.

: Bearbeitet durch User
von Christian B. (Gast)


Lesenswert?

Zunächst sind nur 4 Chips mit einer Sampling Rate von grob 300 Hz 
geplant. Später soll aber die Rate möglichst hoch werden. Könnte es 
nicht sein, dass das Timing Diagramm einfach nur "unzureichend" 
gezeichnet ist bzw. was hindert mich denn daran einfach noch ein Clock 
dranzuhängen (zur Not schiebe ich halt ein NOP über das MOSI)?

von Christian B. (Gast)


Lesenswert?

Okay ein NOP nach jedem Befehl ist Blödsinn...
Das SPIFI schaue ich mir mal an. Müsste ich nur Controller finden, die 
davon mehrere unterstützen, falls es das ist was ich suche.

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

Christian B. schrieb:
> Okay ein NOP nach jedem Befehl ist Blödsinn...
> Das SPIFI schaue ich mir mal an. Müsste ich nur Controller finden, die
> davon mehrere unterstützen, falls es das ist was ich suche.

Du könntest auch ein kleines FPGA oder ein CPLD mit der Arbeit betrauen 
und dann gff. Parallel ausgeben.

von ttl (Gast)


Lesenswert?

@ h g l

Wer hat was von 8bit controler geschrieben?  Bleib mal ruhig

von Hans-Georg L. (h-g-l)


Lesenswert?

Christian B. schrieb:
> Zunächst sind nur 4 Chips mit einer Sampling Rate von grob 300 Hz
> geplant. Später soll aber die Rate möglichst hoch werden. Könnte es
> nicht sein, dass das Timing Diagramm einfach nur "unzureichend"
> gezeichnet ist bzw. was hindert mich denn daran einfach noch ein Clock
> dranzuhängen (zur Not schiebe ich halt ein NOP über das MOSI)?

Das Datenblatt, das ich gefunden habe zeigt nur das SPI Timing und auch 
das ist nicht so ganz klar, denn es wird nur eine Übertragung von 16/32 
Bit gezeigt. Der Chip selbst hat aber intern 8Bit Register.

Der Rest ist Schweigen ... Warum die Wandlungsrate für 32 kanäle 1Ms/s
und bei 64 Kanälen nur 30Ks/s obwohl da 2 Ad Wandler mit jeweils einem 
32:1 Mux davor vorhanden sind.

Da die SPI Schnittstelle viel schneller ist, kannst du prinzipell 
während der AD Wandler beschäftigt ist den nächsten Chip bedienen.

Ich wünsch dir auf jedem Fall viel Spass mit den Dingern ;)

von Dirk K. (dekoepi)


Lesenswert?

Falls ich da mal doof fragend reingrätschen darf: Meine 
SPI-Speichermodule 23LC1024 haben ja sogar die Möglichkeit, nicht nur 
DDR, sondern QDR-SPI auf zusätzlichen Leitungen zu machen. Die Idee ist 
zwar naheliegend, aber gibt es überhaupt µCs, die das ansprechen können? 
So bin ich auf den "Normal-SPI"-Modus angewiesen und verschwende 75% der 
möglichen Geschwindigkeit.

Da ist zwar ein zweiter SPI-Port denkbar, aber bei den Geschwindigkeiten 
zweifel ich fast, das in Software zusammengebastelt zu bekommen in den 
korrekten Datenstrom. (20 MHz max mit QDR wären ja fast 80 MBit bei 
linearem kontinuierlichen Zugriff.)

Entschuldigung für das Zwischenfragen, aber es passt ja irgendwie schon.

von Nosnibor (Gast)


Lesenswert?

Dirk K. schrieb:
> Falls ich da mal doof fragend reingrätschen darf: Meine
> SPI-Speichermodule 23LC1024 haben ja sogar die Möglichkeit, nicht nur
> DDR, sondern QDR-SPI auf zusätzlichen Leitungen zu machen. Die Idee ist
> zwar naheliegend, aber gibt es überhaupt µCs, die das ansprechen können?

Wenn der Controller Hardware-Unterstützung für SD-Karten mitbringt 
vielleicht.

von Christian B. (Gast)


Lesenswert?

Als kleiner Nachtrag, falls jemand jemals ein ähnliches Problem haben 
sollte:
Also es ist tatsächlich möglich mit einen RHD2164 mit Hilfe von zwei SPI 
Modulen eines µC (MSP430) korrekt zu kommunizieren, indem man das SPI 
Modul A als Master mit UCCKPH und SPI Modul B als Slave ohne UCCKPH 
betreibt und hinterher das B0 Bit manuell aufsammelt.

von TelTower (Gast)


Lesenswert?

Da stand was mit LVDS im Datenblatt. Ergibt sich daraus eine DDR-SPI?

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.