I2C an uC - kleine Frage

25/11/2008 - 22:22 von Falk Willberg | Report spam
Leider muß ich mich jetzt doch mit I2C befassen. (Hat man halt davon,
wenn man exotische Komponenten vorschlàgt)

I2C wird via bit-banging realisiert, der Slave ist einfach am uC
angeschlossen. Eigentlich sollen SDA und SCL mit Open Collector
getrieben werden, ich mag jetzt aber nicht mehr löten.

Ich habe das einfach so gelöst, daß ich SCL/SDA am Controller fest auf
Low setze und wenn High gewünscht ist, der Port als Eingang konfiguriert
wird. Die (10k) Pullups ziehen den Bus dann ja irgendwann auf High...

Ist etwas dagegen einzuwenden, so vorzugehen, statt zwei FETs zu spendieren?

Ich frage, weil sich der STDS75, den ich zum Testen verwende,
gelegentlich etwas anders benimmt, als das Datenblatt beschreibt, so
schickt er gelegentlich keine ACKs, obwohl ich brav darauf warte, daß er
sein SCLK loslàsst.

Es besteht auch die Möglichkeit, daß der im Web gefundene Code noch mehr
Verbesserungspotenzial hat, als ich bis jetzt feststellen konnte.

Falk
 

Lesen sie die antworten

#1 Peter Schaeffer
25/11/2008 - 22:54 | Warnen spam
Falk Willberg wrote:
Leider muß ich mich jetzt doch mit I2C befassen. (Hat man halt davon,
wenn man exotische Komponenten vorschlàgt)

I2C wird via bit-banging realisiert, der Slave ist einfach am uC
angeschlossen. Eigentlich sollen SDA und SCL mit Open Collector
getrieben werden, ich mag jetzt aber nicht mehr löten.

Ich habe das einfach so gelöst, daß ich SCL/SDA am Controller fest auf
Low setze und wenn High gewünscht ist, der Port als Eingang konfiguriert
wird. Die (10k) Pullups ziehen den Bus dann ja irgendwann auf High...



Externe Pullups? Die internen koennen irgendwas sein.

Ist etwas dagegen einzuwenden, so vorzugehen, statt zwei FETs zu spendieren?



Passt schon. Clock kann man auch push-pull betreiben, wenn
man kein Multimaster hat.

Ich frage, weil sich der STDS75, den ich zum Testen verwende,
gelegentlich etwas anders benimmt, als das Datenblatt beschreibt, so
schickt er gelegentlich keine ACKs, obwohl ich brav darauf warte, daß er
sein SCLK loslàsst.



Deine Clockleitung prellt. Entweder noch 100pF gegen Masse spendieren
und bei mehr als 100kHz zusaetzlich die Pullups auf 1K reduzieren,
oder Clock als push-pull betreiben. Letzteres spart einen Pullup und
den Kondensator.



Peter

Ähnliche fragen