Hallo zusammen, ich würde gerne einen µC mit einem Arduino verbinden. Dabei habe ich das "Problem, dass dieser ja mit 5V versorgt wird und mein µC nur mit 3,3V. Ich habe im Netz bei einigen Schaltungen gesehen, dass für diese unidirektionale Leitungen (CLK, CS, MOSI) nur ein Spannungsteiler mit einem Pull-Up (4k7 oder 10k) gegen 3,3V und eine Standarddiode (im Anhang) genügen. Kann mir jemand dabei erklären, wie das schaltungstechnisch funktioniert bzw. wie sich dieser 4k7 bzw. 10k berechnen lässt, da ich im Netz meist nur "aus Bauchgefühl" Lösungen gefunden habe? Gibt es zu dieser Schaltung auch noch eventuelle "einfache" Alternativen? Vielen Dank im Voraus! Stefan
Soll das eine bidirektionale Verbindung werden? Ein Pull-up-Widerstand bewirkt eine Verlangsamung, die Kapazität des Eingangs muss erst aufgeladen werden. Für schnelle Datenraten im MHz-Bereich ist eine aktive Pegelwandlung besser.
Christoph db1uq K. schrieb: > Soll das eine bidirektionale Verbindung werden? Grundsätzlich dachte ich mir, dass es eine unidirektionale Verbindung werden soll, da der CLK ja vom Arduino an meinen Chip sendet, der MOSI vom Arduino zum Chip und der CS ebenfalls das gleiche?! Oder habe ich das nicht ganz richtig verstanden? Christoph db1uq K. schrieb: > Für schnelle Datenraten im > MHz-Bereich ist eine aktive Pegelwandlung besser. Was für alternativen gäbe es da?
Mein Chip unterstützt maximal 5MHz, also "besonders schnell" muss das ganze nicht laufen.
Stefan schrieb: > ich würde gerne einen µC mit einem Arduino verbinden. Dabei habe ich das > "Problem, dass dieser ja mit 5V versorgt wird und mein µC nur mit 3,3V. > Ich habe im Netz bei einigen Schaltungen gesehen, dass für diese > unidirektionale Leitungen (CLK, CS, MOSI) nur ein Spannungsteiler mit > einem Pull-Up (4k7 oder 10k) gegen 3,3V und eine Standarddiode (im > Anhang) genügen. Tu dir einen Gefallen und nimm einen RICHTIGEN Pegelwandler. 74HC4050 und 74HCT125 sind deine Freunde. > Gibt es zu dieser Schaltung auch noch eventuelle "einfache" > Alternativen? Es gibt BESSERE!
Da sollte die einfache Lösung ausreichen. Es gibt als Einzelgatter den bidirektionalen 74LVC1T45, der hat zwei Versorgungsspannungen, die z.B. 3,3V und 5V betragen dürfen. Aber der will noch ein Richtungssignal DIR. Es gibt auch noch die Schaltung mit MOSFETs als Spannungsbegrenzer, die funktionieren ohne Umschaltung in beide Richtungen. Das wird oft am I2C-Bus benutzt. https://www.nxp.com/docs/en/application-note/AN10441.pdf
:
Bearbeitet durch User
Falk B. schrieb: > Tu dir einen Gefallen und nimm einen RICHTIGEN Pegelwandler. > 74HC4050 und 74HCT125 sind deine Freunde. Vielen Dank dafür! Von denen habe ich auch schon gelesen, ich wollte die Schaltung lediglich so einfach und billig wie möglich halten. Leider würde ein weiterer 74HC4050 bzw. 3 74LVC1T45 die Schaltung nicht mehr so "kompakt" halten wie geplant... Inwiefern ist die Widerstands-Dioden-Schaltung nicht besonders gut?
Stefan schrieb: > Inwiefern ist die Widerstands-Dioden-Schaltung nicht besonders gut? Mit den Dioden erzeugt 0 V am Master ca. 0,6 V am Slave. Und wenn der Master auf 5 V schaltet, werden die parasitären Kapazitäten in der Schaltung nur durch den Pull-Up umgeladen; der Wert des Pull-Ups ist ein Kompromiss zwischen Stromverbrauch und Geschwindigkeit. > Leider würde ein weiterer 74HC4050 bzw. 3 74LVC1T45 die Schaltung nicht > mehr so "kompakt" halten wie geplant... Zum Heruntershiften von unidirektionalen Signalen genügt ein beliebiger Puffer mit überspannungs-toleranten Eingängen, z.B. 74LVC3G17 (als XSON oder BGA wäre er kleiner als dreimal Diode+Pullup).
Clemens L. schrieb: > Mit den Dioden erzeugt 0 V am Master ca. 0,6 V am Slave. Und wenn der > Master auf 5 V schaltet, werden die parasitären Kapazitäten in der > Schaltung nur durch den Pull-Up umgeladen; der Wert des Pull-Ups ist ein > Kompromiss zwischen Stromverbrauch und Geschwindigkeit. Danke für die Erklärung. Also gibt es keine "richtige" Ermittelung für den 10k Pull-Up? Clemens L. schrieb: > Zum Heruntershiften von unidirektionalen Signalen genügt ein beliebiger > Puffer mit überspannungs-toleranten Eingängen, z.B. 74LVC3G17 (als XSON > oder BGA wäre er kleiner als dreimal Diode+Pullup). Vielen Dank, dieser scheint für 5V als optimal! Was ich leider vergessen habe zu erwähnen ist, dass ich die Schaltung eventuell auch mit 3,3V betreiben würde, was die Pegelschaltung überflüssig macht. Somit werden ich den 74LVC3G17 leider nicht verwenden können.
Stefan schrieb: > Gibt es zu dieser Schaltung auch noch eventuelle "einfache" > Alternativen? Die Dioden kannst Du Dir sparen wenn Dein 5 V - Controller open drain - Ausgänge hat. Bzw wenn Du Dir den open drain selber baust indem Du den Pin bei Low auf Output Low und bei High auf Input schaltest. Die Pullup-Widerstände müssen eher klein gewählt werden, damit die Anstiegszeit der Signale schnell genug ist.
Statt Diode und R kannst Du auch einfach 1 ... 10k in die Leitungen schalten, wenn Dein 3V Kreis mehr als 0.5 ... 5mA verbraucht und das Device keine ungewöhnlichen eingangspins hat.
Soul E. schrieb: > Die Dioden kannst Du Dir sparen wenn Dein 5 V - Controller open drain - > Ausgänge hat. Bzw wenn Du Dir den open drain selber baust indem Du den > Pin bei Low auf Output Low und bei High auf Input schaltest. Also benötige ich die Diode nur, wenn es keine fixen Ausgänge gibt bzw. wenn dieser nicht standardmäßig auf Open-Drain ist? Soul E. schrieb: > Die Pullup-Widerstände müssen eher klein gewählt werden, damit die > Anstiegszeit der Signale schnell genug ist. Was heißt eher klein? So in etwa 4k7?
A. S. schrieb: > Statt Diode und R kannst Du auch einfach 1 ... 10k in die Leitungen > schalten, wenn Dein 3V Kreis mehr als 0.5 ... 5mA verbraucht und das > Device keine ungewöhnlichen eingangspins hat. Also einfach einen R (1-10k) seriell in die Leitung schalten? Ist das ganze dann aber 3,3V UND 5V kompatibel?
Stefan schrieb: > Also benötige ich die Diode nur, wenn es keine fixen Ausgänge gibt bzw. > wenn dieser nicht standardmäßig auf Open-Drain ist? Dein Controller darf an seinem Pin niemals High-Pegel (5 V) ausgeben. Wenn Du das sicherstellen kannst, brauchst Du keine Diode. Falls Du die Verbindung in SW steuerst ("bitbanging"), dann schaltest Du den Pin für Low auf Output Low und für High auf Input. In diesem Fall sorgt der Pullup für den 3,3 V-Pegel. Wenn Du eine Hardware-SPI verwendest, welche die Pins direkt steuert, dann müssen diese auf open drain konfiguriert werden um sich so zu verhalten wie oben beschrieben. Ob Dein Controller das kann steht im Datenblatt. >> Die Pullup-Widerstände müssen eher klein gewählt werden, damit die >> Anstiegszeit der Signale schnell genug ist. > > Was heißt eher klein? So in etwa 4k7? Der Wert hängt ab von der Streukapazität der Leiterbahnen und der Portpins. Bei 3 MHz SPI-Takt und 5 cm Leitungslänge hat sich bei mir 1 kOhm bewährt. Guck Dir die steigende Flanke mit dem Oszilloskop an. Die muss steil genug sein, dass die Setup- und Hold-Zeiten (schon wieder Englisch...) eingehalten werden.
Stefan schrieb: > Also einfach einen R (1-10k) seriell in die Leitung schalten? Ist das > ganze dann aber 3,3V UND 5V kompatibel? Signale von 5V zu 3.3 oder 5V sind OK. Auch von 3.3V zu 3.3V. Was nicht geht, sind von 3.3V nach 5V. Wenn Du das auch brauchst, dann müsstest Du schauen, welche Eingangspegel das 5V-Device hat. Meist 80%Vcc für High, also 4V. Das geht mit diesem Transistor wie bei I2C bidirektional oder auch mit einem beliebigen Pegelwandler. Oder mit einem 74HCT-Baustein. Das sind zwar keine Pegelwandler, aber die brauchen nur TTL-Pegel am Eingang, da reichen die 3.3V.
Stefan schrieb: > Vielen Dank dafür! Von denen habe ich auch schon gelesen, ich wollte die > Schaltung lediglich so einfach und billig wie möglich halten. Ein 74HC4050 kostet in Einzelstückzahlen um die 40ct. Wieviel Aufwand willst du denn treiben, um diese Investition zu vermeiden? ;-)
Es gab doch da die ursprüngliche, bidirektionale I2C Schaltung von Philips mit den zwei BSS138 FET, die nun auch fix und fertig als Arduino Baukastenteil vierkanalig hier https://www.adafruit.com/product/757 oder wahlweise vom Chinesen zu haben ist. Oder eben Selbstnachbau. Genial, einfach, billig und gut. Ob die nun SPI Fullspeed kann steht natürlich auf einem anderen Blatt.
A. S. schrieb: > Oder mit einem 74HCT-Baustein. Reden wir von Einzelstücken oder von Serie? Ist es wichtig, ob die Summe der Bauteile 5 Euro oder sieben beträgt? Muß unbedingt Platz gespart werden? Sowohl für I2C als auch SPI verwende ich den TXS018E, gibt es Lochrasterfreundlich als 'Breakoutboard' vom Chinesen um einen Euro und der bedient beide Richtungen. A. S. schrieb: > Was nicht geht, sind von 3.3V nach 5V. Da habe ich mal einen 74HCT125 eingesetzt, um den Rückweg eines China-µSD-Moduls zum A*-Nano sicher zu machen. Den Wandler in die andere Richtung haben die ab Werk drauf. Die meisten Pfuscherschaltungen verlassen sich darauf, dass der 5V-AT328 ein 3V-High noch erkennt, ich mag das nicht. Drehspulmeßinstrument schrieb: > Es gab doch da die ursprüngliche, bidirektionale I2C Schaltung von > Philips mit den zwei BSS138 FET, die nun auch fix und fertig als > Arduino Baukastenteil vierkanalig hier Kenne ich, würde mich am SPI aber lieber nicht drauf verlassen, Thema Geschwindigkeit.
Wolfgang schrieb: > Ein 74HC4050 kostet in Einzelstückzahlen um die 40ct. Wieviel Aufwand > willst du denn treiben, um diese Investition zu vermeiden? ;-) Grundsätzlich wäre ich damit zufrieden, nur stellt sich mir die Frage ob das für meinen Fall geht, da ich ja mit 3,3V UND 5V betreiben will. Manfred schrieb: > Reden wir von Einzelstücken oder von Serie? Ein paar Stück... entschuldige für die Angabe, wieviele es sind, weiß ich leider noch selber nicht. Manfred schrieb: > Ist es wichtig, ob die Summe der Bauteile 5 Euro oder sieben beträgt? > Muß unbedingt Platz gespart werden? Naja, da es schlussendlich doch einige Platinen werden, wäre mir billiger lieber. Aber nur wegen dem Preis sollte die Qualität/Leistung nicht darunter leiden. Bezüglich Platz. Mir wäre eine platzsparendere Platine von Vorteil :)
Drehspulmeßinstrument schrieb: > Es gab doch da die ursprüngliche, bidirektionale I2C Schaltung von > Philips mit den zwei BSS138 FET, die nun auch fix und fertig als Arduino > Baukastenteil vierkanalig hier https://www.adafruit.com/product/757 oder > wahlweise vom Chinesen zu haben ist. Oder eben Selbstnachbau. Genial, > einfach, billig und gut. Ob die nun SPI Fullspeed kann steht natürlich > auf einem anderen Blatt. DAS ist das Problem! Ein I2C Pegelwandler ist schwach, hochohmig und langsam, da reden wir von 2-3kOhm Pull-Up Widerstand! Ein echter, aktiver Pegelwandler mit einem Baustein hat vielleicht 30-50 Ohm Ausgangswiderstand, sowohlb bei LOW und HIGH und ist damit im Größenordnungen stärker, schneller und besser!
Stefan schrieb: >> Reden wir von Einzelstücken oder von Serie? > Ein paar Stück... > entschuldige für die Angabe, wieviele es sind, > weiß ich leider noch selber nicht. Kein Problem, letztendlich musst Du kalkulieren. Eine grobe Abschätzung 10 Stück oder 5000 sollte schon vorliegen. > Manfred schrieb: >> Ist es wichtig, ob die Summe der Bauteile 5 Euro oder sieben beträgt? >> Muß unbedingt Platz gespart werden? > > Naja, da es schlussendlich doch einige Platinen werden, > wäre mir billiger lieber. Musst Du kalkulieren. > Aber nur wegen dem Preis sollte die Qualität/Leistung > nicht darunter leiden. Auch, falls ich mich wiederhole: Ein korrektes Schaltungsdesign erfordert nach meinem Gefühl ein IC, welches für diese Aufgabe spezifiziert ist. > Bezüglich Platz. > Mir wäre eine platzsparendere Platine von Vorteil :) Ich hatte den TXS0108E erwähnt, der benötigt auf jeden Fall weniger Platz als zwei 74xxx. Der hat noch eine kleine Schwester TXS0104E, mit der ich aber noch nichts gemacht habe. Ich denke, Du solltest Dir die Baureihe TI-Pegelwandler anschauen, dabei unbedingt die Nachsetzbuchstaben beachten.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.