I2C: SDA auf 2 V statt 0 V

Hallo ng,

In meinem I2C-Netz (1 x Master: PIC18F252, 2 x Slave: PIC18F452) tritt folgendes Problem auf: Die Slaves können die Datenleitung nicht auf Null, sondern nur auf etwa 2 V ziehen. Prinzipiell funktioniert die Kommunikation, ich möchte jedoch saubere Signale haben.

Hier meine Schaltung (jeweils für SDA/SCL):

o +5V | _____R 1k_____ Slave 1 R 1k8 | | | Master _x_______x____R 1k_____ Slave 2

Danke für eure Hilfe.

Viele Grüße, Marko

Reply to
Marko Aschoff
Loading thread data ...

Marko Aschoff schrieb:

Dass die Slaves die Leitung nur bis 1,8V runterziehen können ist ja wohl klar, man Spannungsteiler. Wenn du die Ausgänge vor Kollision schützen möchtest, dann muss da sowohl beim Master wie bei den Slaves eine Diode parallel mit einem Widerstand rein, der Pullup bleibt.

Gruß Dieter

Reply to
Dieter Wiedmann

Pullup auf 47 kOhm vergrössern.

Robert

Reply to
R.Freitag

Am Wed, 23 Jun 2004 09:33:45 +0200 hat Marko Aschoff geschrieben:

Den Pullup kannst du etwas größer amchen (3k3) aber die 1k Widerstände sind seltsam. Normal verwendet I2C Open Collector Ausgänge, damit sind keine gefährlichen Kollisionen möglich (nur die dominanten/rezessiven Bits). Das macht man meist, indem man den sendenden port auf Low schaltet und die Datenbits per Datenrichtignsregister ausgibt. D.h. L = Output, für H schaltest du auf Input = Hochohmig. Damit simulierst du einen Open Coll./Drain Ausgang. Sollte das mit dem µC nicht möglich sein, dann kann man Dioden in Serie (A an Bus, K an Slave) schalten, die man für die Eingangssignale mit Widerständen (1k..10k) überbrückt.

--
Martin
Reply to
Martin Lenz

Laut AN736 S.14

formatting link

sind die Serienwiderstände für die I/O Isolation auf den Leitungen (Hotplug der Slaves). Eine Größenangabe fehlte jedoch, also habe ich einfach mal 1k genommen.

Welcher Typ sollte dann eingesetzt werden?

Reply to
Marko Aschoff

Marko Aschoff schrieb:

Ach je, I2C ist ja eigentlich nicht für hot plugging gedacht, aber 1k ist bedeutend zuviel. Nimm 100R.

Für den Zweck ist folgendes erprobt:

1N4148 .--->|--. ___ | ___ | Bus-|___|--o-|___|-o--Slave/ 100R 470R Master created by Andy´s ASCII-Circuit v1.24.140803 Beta
formatting link

Die 1N4148 kann man für verbesserten Störabstand durch BAT41 o.ä. ersetzen, Pullup am Bus sollte >= 1k sein.

Gruß Dieter

Reply to
Dieter Wiedmann

Dieter Wiedmann schrieb:

Was ist in diesem Kontext eigentlich unter I/O Isolation zu verstehen?

Reply to
Marko Aschoff

Marko Aschoff schrieb:

Die Widerstände sollen einen übermäßigen Strom (durch ESD) verhindern.

BTW: Hast du eigentlich die Contact-Sequence beachtet?

Gruß Dieter

Reply to
Dieter Wiedmann

Ja habe ich beachtet. Welcher Strom wird denn hier begrenzt, der vom Salve auf den Bus oder umgekehrt?

Grüße, Marko

Reply to
Marko Aschoff

Marko Aschoff schrieb:

Der von deinen geladenen Griffeln auf den Slave.

Gruß Dieter

Reply to
Dieter Wiedmann

Warum kommt mir das nur so bekannt vor, das versuchen manche Kunden auch immer :-).

Dein Problem sind die Serienwiderstände, die zusammen mit den Pullups einen Spannungsteiler bilden, so daß Du die Leitung nicht richtig auf 0V ziehen kannst.

Serienwiderständen sind bei I2C ganz übel und 1k deutlich zuviel.

cu, Marco

--
E-Mail: mb-news-blinuxhaven.de
Deutsches Linux HOWTO Projekt: http://www.linuxhaven.de
Reply to
Marco Budde

Das dürfte dann aber das Senden mit 400 kHz ziemlich schwierig machen, da die Flanken dann nicht steil genug sind.

cu, Marco

--
E-Mail: mb-news-blinuxhaven.de
Deutsches Linux HOWTO Projekt: http://www.linuxhaven.de
Reply to
Marco Budde

Serienwiderstände und Kapazitäten sind die Probleme bei I2C.

Serienwiderstände würde ich in der Regel eher mehr oder wenig wegoptimieren. Wir setzen dafür, wenn ich mich richtig erinnere, was um 100 Ohm ein.

Zum Schutz verwendet man besser Schutzdioden mit niedriger Kapazität.

I2C kann kein Hotplugging.

cu, Marco

--
E-Mail: mb-news-blinuxhaven.de
Deutsches Linux HOWTO Projekt: http://www.linuxhaven.de
Reply to
Marco Budde

Dafür verwendet man aber besser Schutzdioden parallel zum Eingang.

cu, Marco

--
E-Mail: mb-news-blinuxhaven.de
Deutsches Linux HOWTO Projekt: http://www.linuxhaven.de
Reply to
Marco Budde

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.