Forum: Mikrocontroller und Digitale Elektronik SPI mit 3 Spannungspegeln (3.3V=H, 2.2V=L, 0V=Z) bloß wie


von Timmo H. (masterfx)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,

ich habe ein kleines Problem bei der Implementierung eines SPI Slaves.
Ich habe ein Gerät mit einem SPI(-Master)-Interface. Jedoch sind hier 
die Pegel nicht einfach 0V und VCC. Der High-Pegel ist 3.3V bzw. 5V und 
der Low-Pegel ist 2.2V. Im inaktiven Zustand ist der Pegel 0V. Das gilt 
sowohl für SCK, MISO als auch MOSI. (siehe angehängtes Bild von SCK und 
MISO). Der Clock beträgt 200kHz.

Das SCK und MOSI Signal ist kein Problem, das schicke ich einfach über 3 
Komparatoren (einen extra für Active/Inactive), nur wie kann ich die 
gewünschten Pegel über den Hardware-SPI eines µCs am einfachsten 
ausgeben?

Ich hatte schon darüber nachgedacht den "GND" des µC auf 2.2V zu legen, 
dann müsste ich den Eingang nur vor der negativen Spannung schützen nur 
beim Ausgang auf 0V zu bringen wäre dann nicht mehr ganz so einfach.

Eine weitere Überlegung war einen Spannungsteiler zu machen und den 
"oberen" Widerstand mit einen Transistor bzw. P-MOSFET zu überbrücken 
wenn ich 2.2V haben will.

Aber gibts da nicht eine sauberere/elegantere Lösung? Gibts vielleicht 
sogar ICs?

von Max D. (max_d)


Lesenswert?

Bist du sicher, dass die Pegel "Pflicht" sind und nicht einfach nur ein 
(Mess-)fehler irgendwo in deiner Schaltung. Die 0V bei Z klingen so als 
ob dein Oszi einfach die (hochohmige) Rail auf seinen Referenz-Gnd (da 
wo du Masse angeklemmt hast) zieht.
Der "nicht nullige" low sieht aus wie eine Verschiebung deiner Messwerte 
weil du nicht die Gleiche Masse wie das SPI-Interface verwendest...

von Timmo H. (masterfx)


Lesenswert?

Max D. schrieb:
> Bist du sicher, dass die Pegel "Pflicht" sind und nicht einfach nur ein
> (Mess-)fehler irgendwo in deiner Schaltung. Die 0V bei Z klingen so als
> ob dein Oszi einfach die (hochohmige) Rail auf seinen Referenz-Gnd (da
> wo du Masse angeklemmt hast) zieht.
Ja die >3V für High und 2.2V für Low sind Pflicht. Die 0V für "inaktiv" 
auch. Das "Z" habe ich jetzt einfach mal genommen um den Titel kurz zu 
halten, eigentlich ist es nur der inaktive Status und nicht Hochohmig. 
Die 0V werden aktiv getrieben, mir würde es aber reichen wenn der CS auf 
auf High geht dass der Ausgang auf 0V geht.

von Max D. (max_d)


Lesenswert?

Für die Erzeugung von 3,3 V und 2,2 V reicht ein Spannungsteiler mit 
zwei widerständen in serie gegen Masse von denen einer mit nem Mosfet 
kurzgeschlossen wird und für 0 V ziehst du einfach deinen Anschlusspunkt 
(also "über" dem 2. R auf Masse) -> fertig. Das MISO wird hald vorher 
einmal invertiert NPN-Transe + paar Kohm nach Vcc. Den "inactive" 
Transistor musst du hald mit dem CS treiben und fertig is die Laube :D

von Timmo H. (masterfx)


Lesenswert?

Ja das habe ich mir ja auch schon überlegt, wie im Ausgangspost 
beschrieben. Aber irgendwie erscheint mir das etwas unsauber, zumal ich 
nicht genau weiß ob der MISO beim Master immer "so" hochohmig ist. Das 
würde bedeuten dass ich den Spannungsteiler profilaktisch recht 
niederohmig machen würde was wiederum zu einer erhöhten Stromaufnahme 
führen würde.

von Max D. (max_d)


Lesenswert?

Wenn du Ärger vorbeugen willst schalt hald zwischen den Pin vom Master 
und den Spannungsteiler noch nen (nicht zu großen) R, bei richtiger 
Dimensionierung verwischt der das Signal nur unwesentlich und begrenzt 
den KurzschlussStrom trotzdem auf ein für alle Partner erträgliches 
Niveau (AVRs halten laut db z.b. 40 mA aus)...

von Timmo H. (masterfx)


Lesenswert?

Max D. schrieb:
> Wenn du Ärger vorbeugen willst schalt hald zwischen den Pin vom Master
> und den Spannungsteiler noch nen (nicht zu großen) R, bei richtiger
> Dimensionierung verwischt der das Signal nur unwesentlich und begrenzt
> den KurzschlussStrom trotzdem auf ein für alle Partner erträgliches
> Niveau (AVRs halten laut db z.b. 40 mA aus)...
Ja nur die Batterie hält dann nicht so lange. Wollte da so ein 30-50mAh 
Lipo reinhauen und die Kapa wollte ich eigentlich nicht für den SPI 
verballern.

von Max D. (max_d)


Lesenswert?

ich dachte die fehlende Hochohmigkeit bei dem Master wäre nur in einem 
"unsauberen" fall zu finden (reset, aufgehängt oder so), wenn der immer 
an dem MISO rumzerrt dann würde ich über einen wechsel des 
Host-interfaces nachdenken.

PS: der Spannungsteiler zur Erzeugung der 2,2 und 3,3 V lässt sich zur 
not sehr hochohmig aufbauen und mit nem µA opamp puffern...

von Timmo H. (masterfx)


Lesenswert?

Ja hochohmig würde man bei einem normalen SPI MISO erwarten. Aber ich 
weiß nicht wie das generell aussieht. Ich glaube ich werde es einfach 
mal ausprobieren müssen. Evtl. hat der Master sogar einen Pulldown der 
bei "Z" des Slaves auf 0V zieht. Ich weiß nur nicht inwieweit ich mich 
darauf verlassen kann, da das halt alles nicht so richtig SPI ist, bis 
auf die Kommunikation ansich.

Aber das mit Spannungsteiler und OPV ist schonmal eine gute Idee...

Danke erstmal für deine Hilfe.

von Max D. (max_d)


Lesenswert?

Was ist das überhaupt für ein komisches Gerät?
Vlt. hat da ja schonmal jemand dran rumgefummelt, google liefert vlt. 
hilfreiche Ergebnisse ...

von Timmo H. (masterfx)


Lesenswert?

"Der Gerät" ist ein Canon ETTL-Blitz"gerät" ;)
Bisher haben sich die meisten nur mit dem "Sniffen" nicht aber mit der 
aktiven Kommunikation beschäftigt.
Gibts auch einige Seiten (Bill Grundmann und 
http://81.216.246.116/e/ettl/, die es leider nicht mehr gibt). Aber wie 
gesagt, die haben alle nur gesnifft, ich will noch etwas mehr als nur 
sniffen.

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.