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
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
> 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)
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
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!
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).
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!