Hallo Stefan,
vielleicht hilft Dir das weiter:
http://www.mikrocontroller.net/articles/I2C_als_Hausbus
Da geht es auch darum, das I²C Signal über lange Leitungen zu übertragen.
Viele Grüße
teamohnename
Werbung
Hallo Stefan,
vielleicht hilft Dir das weiter:
http://www.mikrocontroller.net/articles/I2C_als_Hausbus
Da geht es auch darum, das I²C Signal über lange Leitungen zu übertragen.
Viele Grüße
teamohnename
@Besserwessi:
wie es zu überschwingern kommen soll, verstehe ich nicht. Wann/wie treten die auf?
Clock-stretching wird nicht nötig sein. Aber zumindest was den Datenfluss von Master zu Slave angeht, sollte doch ein Schmitt-Trigger Eingang am Slave genügen, denn wenn wenn das Taktsignal seinen Zustand erreicht hat, sollte das doch auch für die Datenleitung gelten. Ggf. kann im Protokoll ja eine kleine Wartezeit bis zum auslesen des Daten-Pegels eingebaut werden.
@teamohnename:
danke für den Link. Der ist ja ganz informativ.
Ich werde mal sehen, ob ich hier ein 10m Kabel rumliegen habe. Dann kann ich einen Test machen.
Gibt es denn irgendwelche Alternativen, welche die harten Kostenanforderungen erfüllen? Ich hatte bisher noch RS485 oder CAN in Erwägung gezogen, aber das wird nicht direkt vom µC unterstützt und würde dann deutliche Mehrkosten für Buscontroller zur Folge haben.
Überschwinger können durch Reflexionen am Leitungsende entstehen. Bei genügender Länge des Kabel, d.h. wenn die Laufzeit nicht mehr gegen die Anstiegszeit (bzw. auch die fallende Flanke) zu vernachlässigen ist, verhält sich auch ein Digitalsignal wie eine Welle und wird gff. am Ende des Kabels reflektiert. Die µCs haben oft Anstiegszeiten im Bereich 5-10 ns , da fangen die ersten Problem so ab 30 cm an.
Gegen die Reflexionen kann man die Kabel am Ende mit dem Wellenwiderstand abschließen. Bei I2C ist das aber so direkt keine wirkliche Option weil die rund 100 Ohm für I2C zu niederohmig sind. Man kann auch die Flanken (hier die fallende) absichtlich langsamer machen - das machen einige I2C ICs auch schon. Nachträglich sind dem aber Grenzen gesetzt.
Lesezeichen