Forum: Mikrocontroller und Digitale Elektronik Levelshifter & Laufzeiten?


von deAnner (Gast)


Lesenswert?

Hallo,

Ich habe mal eben eine Frage:

Ich will einen PIC (SPI-Master) und einen Analog DSP über SPI verbinden. 
Der PIC erkennt die H-Ausgangspegel des DSPs als High, nur die 
H-Ausgangspegel des PICs sind für den DSP zu hoch...wie euch ja 
sicherlich bekannt ist...

Wenn ich jetzt einen Levelshifter-IC verwende, reicht es ja, nur die 
Datenleitung (MOSI/PIC->DSP) und die Clock-Leitung zu shiften, oder? 
Aber was ist dann mit der Datenleitung vom DSP zum PIC....sind die 
minimalen Laufzeitunterschiede zwischen dem geshifteten Clock und der 
ungeshifteten Datenleitung(MISO) von Bedeutung?

Bis zu welcher Übertragungsgeschwindigkeit ist der Laufzeitunterschied 
unbedenklich?

Viele Grüße

von Peter D. (peda)


Lesenswert?

deAnner schrieb:
> H-Ausgangspegel des PICs sind für den DSP zu hoch...wie euch ja
> sicherlich bekannt ist...

Nö, ist mir nicht bekannt.
Ich hätte jetzt echt erwartet, daß PICs an verschiedenen Spannungen 
laufen.
AVRs laufen jedenfalls  von 1,8 ... 5,5V.


> Bis zu welcher Übertragungsgeschwindigkeit ist der Laufzeitunterschied
> unbedenklich?

Da nimmste einfach das Datenblatt Deines PIC und Deines DSP und schaust 
rein.
Wir wissen ja nicht, welcher PIC und welcher DSP es sein soll.


Peter

von Jens G. (jensig)


Lesenswert?

> H-Ausgangspegel des PICs sind für den DSP zu hoch...wie euch ja
> sicherlich bekannt ist...

Woher sollen wir wissen, ob das stimmt - wir wissen doch gar nicht, was 
Du für eine PIC/DSP benutzt, und welche Ub Du dafür vorgesehen hast
Guck in DB des DSP, PIC, und anvisierten Levelshifter-IC, um zu sehen, 
wie viel zusätzliche Verzögerung Du dir leisten kannst, bzw. ob da 
programmtechnisch extra was kompensiert werden muß.
Ich hatte z.B. mal den 74ALVC164245 verbaut (aber bis jetzt immer noch 
nicht getestet die ganze Leiterplatte :-(, der hat Verzögerungszeiten, 
die fallen bei üblichen Taktfrequenzen von paar 10MHz gar nicht auf 
(typ. unter 5ns, max. unter 10ns)

von deAnner (Gast)


Angehängte Dateien:

Lesenswert?

Jap...sorry stimmt...mein PIC läuft mit 5v...das ist so ein eval-board 
von unserer FH...

Und ich habs nachgeschaut, der PIC packt die DSP Ausgangspegel 
nicht...die SPI-Pins des PICs haben "Schmitttrigger-Eingänge mit CMOS 
Pegeln" und diese wollen laut den "Electrical Characteristics" 0,8*VDD 
also 4V als High und der DSP briingt nur max. 3V3. Habs jetzt auch 
anders gelöst...Ich habe einen Analog ADG3304 4 Kanal bidirektional 
Levelshifter ohne Direction-Pin verwendet. Habe dafür eine 
Adapter-Platine gemacht, die auf das PIC-Board kommt. Ich habe mal ein 
Bild angehängt, wäre nett, wenn Ihr das mal betrachten könntet und mir 
sagen, ob das so tut...Ich bin da leider noch recht unerfahren...aber 
ich hab mein bestes mal versucht..

(verwendet: PIC18F4580 und Analog ADSP-21161N)

Kurze Erklärung:

2 reihige Stiftleiste (oben rechts PIN1):
  -  PIN1:  +5V
  -  PIN2:  SPI_SCK
  -  PIN3:  SPI-SDI
  -  PIN4:  SPI_SDO
  -  PIN5:  SPI-CS

Der IC im TSSOP14-Gehäuse ist der Levelshifter:
  -  PIN1:  VCC_A (3V3)
  -  PIN2:  I/O_A1
  -  PIN3:  I/O_A2
  -  PIN4:  I/O_A3
  -  PIN5:  I/O_A4
  -  PIN6:  NC
  -  PIN7:  GND
  -  PIN8:  EN (Enable High-aktiv)
  -  PIN9:  NC
  -  PIN10: I/O_Y4
  -  PIN11: I/O_Y3
  -  PIN12: I/O_Y2
  -  PIN13: I/O_Y1
  -  PIN14: VCC_Y (5V)

Der Levelshifter funktioniert bidirektional A1 <-> Y1, A2 <-> Y2, etc.

Der Festspannungsregler wandelt die 5v vom PIC-Board in 3V3.

C5 habe ich einfach mal so vorgesehen...damit der EN-PIN von 
Spannungsschwankungen, die möglicherweise von der Belastung der 3V3 
Schiene durch den Shifter entstehen können, unberührt bleibt(weiß nicht, 
ob das der Fall sein kann...aber er stört da ja nicht...ich muss ihn ja 
nicht bestücken). Aber können da irgendwelche Störungen eingetragen 
werden, die ihn möglicher weiße zwischen !EN und EN toggeln lassen oder 
so?

Die recht großen VIAs dienen dafür, dass ich mit Silberdraht 
durchkontaktieren kann. Wir haben keine Durchkontaktierungsanlage an der 
FH. Ich könnte auch Nieten verwenden, die sollten auch in die 0,9 
Bohrungen passen.

Der Wannenstecker unten...die vielen GND-Pins sind dafür da, dass ich 
die signale wie folgt über ein Flachbandkabel übertragen kann:

(CS)-(GND)-(GND)-(SDI)-(GND)-(GND)-(SDO)-(GND)-(GND)-(SCL)

Ich habe in dem Buch "Digitale Schnittstellen und Bussysteme" gelesen, 
dass das zu einer guten Signalintegrität  beiträgt.

So, ich hoffe, ich habe mich diesmal präziser ausgedrückt. Ich habe in 
den Datenblättern alles nachgeschaut. Das Level-Shiften ist notwendig. 
Ich will nicht, dass ihr mir hier die Arbeit abnehmt. Ich bin nur noch 
recht unerfahren und bin drum ganz glücklich, wenn jemand da mal drüber 
schaut, mir Tipps, Ratschläge und Verbesserungsvorschläge gibt....

Ach ja...maximal kann ich bei dem verwendeten PIC-Quarz bis 2Mbit/s 
übertragen. Was meint ihr, könnte man das mit meiner Schaltung 
erreichen?

Bitte nicht immer gleich so "du willst dass man dir Arbeit abnimmt". Das 
will ich keines Falls. Es kann nur mal sein, da man als Newie nicht 
immer an alles denkt, dass man mal was vergisst zu beschreiben oder zu 
erwähnen...

Danke bereits im Voraus für eure Antworten!

Greets, deAnner

von deAnner (Gast)


Lesenswert?

Ach ja...die Signal- und Clock-Leitungen zum und vom Levelshifter habe 
ich versucht, in der Länge anzupassen...laut Eagle habe ich auf den 
einzelnen Seiten einen maximalen Längenunterschied von 0,09mm!

von Pete K. (pete77)


Lesenswert?

Das geht bestimmt auch einseitig. Die Abstände auf Deiner Platine sind 
sehr klein gewählt. Setz mal isolation höher, z.B. auf 1,27 und mach 
einen DRC-Check.

TSSOP, puh, Du willst per Hand löten? Da gibt es vielleicht andere, die 
im SOIC Gehäuse zu finden sind (z.B. TXB0104).

2 MBit/s könnte auch noch mit einem Spannungsteiler funktionieren (siehe 
SD-Karten Anbindung z.B. von Ulrich Radig).

von deAnner (Gast)


Lesenswert?

Hallo Pete,

Danke für deine Antwort.

Ich kann das mit Isolate hochsetzen erst heut Abend machen, werd die 
Ergebnisse dann aber gleich posten.

Nach einem anderen umschauen, möchte ich mich nicht. Den werde ich da 
schon drauf bekommen. Ich kanns auch an der FH reflowen. Denkst du, ich 
bekomme ein Problem mit der Größe (beim Handlöten/beim Reflowen)?

Einseitig geht echt nicht. Der DSP kann ja maximal die Spannug 
raushauen, die er als VDD_ext (Spannungsversorgung für die 
I/O-Ausgangstreiber) bekommt und das sind 3V3. Das ist dem PIC zu 
niedrig, die SPI-Eingänge des Pic sind laut Datenblatt 
Schmitttrigger-Eingänge und da spucken die Electric Characteristics aus, 
dass die als Eingangs-highpegel min. 0,8xVDD benötigen. Da ich die 
Versorgungsspannung nicht runtersetzen möchte, da an den 5V auch noch 
ein LCD hängt passt es also nicht und kann auch nicht passend gemacht 
werden.

Einseitig würde es also nur gehen, wenn ich am DSP Spannungsteiler 
anbringe und da trau ich irgendwie nicht ganz.
Dann würde ja zudem auch noch mein eigentliches Problem wieder 
auftreten. Wenn ich in eine Richtung shifte und in die andere nicht, 
bekomme ich dann zwischen geshifteten Signalen und Ungeshifteten 
merkliche, störend wirkende zeitliche Verzögerungen? Das weiß ich halt 
nicht...

Aber die Platine steht jetzt ja. Wie ist dein allgemeiner Eindruck? Wird 
das so tun, Isolate check ich nochmal etc...

Nochmal ein ganz anderes Konzept möchte ich nicht unbedingt 
angehen....Zeit ist auch ein wenig Mangelware....Nur falls mein Ansatz 
gar nicht tut, dann muss ich wohl über eine andere Lösung nachdenken...

Greets!

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.