Hallo, ich bin gerad' dabei mir eine Anwendung unter Benutzung des I2C-Busses zu bauen. Der Bus wird zu jeder Seite ca. 1,50 bis 1,80m aus dem Schaltungsgehäuse herausgeführt. Im Bereich des MC, also ca in der Busmitte, habe ich SDA und SCL über 10k Pullups auf +5V gelegt. Der Master und auch die 2 Slaves (PCF8574) sind jeweils über Rs 330 an Daten- und Clockleitung geführt. Als MC verwende ich, nun aber nicht lachen ;), die MICRO von dem großen C. Jetzt meine Frage: Ist es erforderlich, oder macht es Sinn auch an den exteren Slaves jeweils Pullups vorzusehen, oder kommt es damit eher zu Problemen ? mfg Gerhard
Hallo Gerhard, die Überlegung, den I2C-Bus an den Enden mit zusätzlichen Pullups zu "terminieren", ist grundsätzlich richtig. Dann hättest Du aber 3*10k parallel, macht 3,3k. Wenn Du nun die SDA bzw SCL-Leitung über 330R vom µC treibst, ergeben sich durch diesen Spannungsteiler etwa 0,5 Volt auf der Leitung für eine logische Null. Bis 0,8 Volt sollte es gehen! Soweit die Gleichstrombetrachtung. Mit welcher Datenrate arbeitest Du auf dem Bus? Bei den I2C-üblichen Geschwindigkeiten sollte es noch ohne Terminierung gehen. Wenn es Probleme geben sollte, würde ich den Pullup in der Mitte weglassen, und stattdessen je 20k (o.k., gibt es nicht, also 22k) an den Enden vorsehen. Hast Du ein Oszi zur Hand? Schau dir mal die Signale an. Wie sehen die Flanken aus, mit und ohne Terminierung? Gruß, Markus_8051
Hallo Gerhard Ich hab die Spezifikation von I²C noch nicht wirklich durch gearbeitet aber ich glaube Du bist um Groessenordnungen zu lang. Das was ich mit I²C gemacht habe war so um die 20cm. Kopplund der Chip's direkt ohne Widerstaende und je (SDA,SCL) ein 680 Ohm nach VCC. Für etwas laenger giebt es Bustreiber. Vieleicht schaffst Du damit deine Länge. Wie gesagt bislang nur höremsagen aber der I²C ist kein Feldbus. T'schau Reiner
HAAAAAAAAAAAAAAALT !!! @Reiner: 1) Tu mal ´ne 1 vor Deine 680R, dann bist Du bei dem minimalen Pullupwiderstandswert, den man benutzen könnte, ohne daß die Chips am Bus anfangen zu leuchten. Ideal ist das aber nicht! Die 10k sind da schon in Ordnung. 2) die 330R, mit denen Gerhard seine I2C-Bausteine an den Bus hängt, sind zwar nicht erforderlich, aber durchaus üblich. Habe ich auch mal in einer App-Note von Philips so gesehen, und selbst auch schon so aufgebaut. 3) Bustreiber?!? Du weißt aber schon, daß der I2C-bus bidirektional ist?!!!!! So, bevor Du hier weiter die User verwirrst, lies erstmal die Spec. weiter! Mit der Länge hast Du allerdings recht, der I2C-Bus wurde für die Komunikation von ICs innerhalb eines Gehäuses entworfen, von daher sollten die Kabellängen niedrig gehalten werden. Die Tatsache, daß Gerhard sich über die Kabellängen seines Busses Gedanken macht, zeigt mir aber, daß er von dieser Problematik weiß. Ich selbst habe schon stabil laufende I2C-Busse mit 2 Metern gebaut (bei etwa 400kHz). Der längste, von dem ich bisher hörte, war 9m lang. Gruß, Markus_8051
Hallo Markus Asche auf mein Haupt wenn ich hier mist erzähle!! Detail: Also die 680 Ohm hab ich aus der eine Artikelserie zum AVR mit Bascom. Also so ein ganzbekannter Philips Chip ein 8 eingängen (sorry mir fällt der Typ gerade nicht ein, hat noch nen Bruder für anderen Adressbereich, Ihr wisst schon) und DS1307 tun's momentan ohne zu murren. Aber ich muss Zugeben das ich die Datenblätter nicht genau zum Pullup befragt hab. --teilschuld?-- Werd ich aber nachholen! 2. Widerstände zum Bus - unwissenheit!! Volles Schuldeigeständniss! 3. Habe ich bei Philips bei den I²C Bauteile gesehen - ich schwöre - Hatte das Datenblatt gesaugt kurz überflogen. Aber nach dem ich mich hier wohl schon ziemlich blammiert hab muss ich erst noch wieder lesen bevor ich was genaues dazu sage. Von den Buslängen bin ich ziemlich geplättet. War die Umgebung "störstrahlungfrei"? Hintergrund: Ich hatte mal überlegt mein Motorrad mit diversen elektronischen Spielerrein auszustatten, und hatte den I²C dafür ins Auge gefasst. Das hab ich dann wieder verworfen weil Buslänge Störungen der Zündung, Mobilfunkender nachgebrannter LKW-Fahrer aus dem befreundeten Ausland usw. Aber so 2m würden mir ja reichen. Und 100kHz tätens auch ... Vielleicht probier ich das doch mal aus, Wieder was gelernt!! Reiner
@markus: Danke für Deine Erläuterungen. Darüber, das sich der Gesamtwiderstand reduziert und die Auswirkungen auf die Busspannung, hatte ich bisher noch nicht nachgedacht. Werde ich dann aber durch Erhöhung der Einzelwiderstände berücksichtigen. Da ich auf dem Gebiet MC, I2C etc. noch ziemlich grün bin, ging es mir auch darum, grundsätzliche Erfahrungen zu diesem Thema zu hören. Ich habe bisher nur die App.-Note von Philips durchgesehen, da ist halt immer nur ein Pullup vorgesehen. Über die Datenrate kann ich nichts sagen, nur soviel, das I2C-Protokoll wird an 2 Ports in Basic emuliert. Kann also nicht allzu flott sein. Das LCD wird aber trotzdem recht schnell beschrieben. Da die Schaltung bisher nur als Testaufbau mit geringen Buslängen (ca. je Seite 90 + 40 cm, Pullups nur an den Enden) anscheinend funzt, werde ich im nächsten Schritt mal mit größeren Längen, mit/ohne Terminierung und 2 oder 3 Pull's probieren. Ein Oszi steht mir z.Zt. nicht zur Verfügung. Werde mir dann mal eins ausleihen oder zu Weihnachten wünschen. ;)) Gerhard
Hi, hier noch ein bischen Literatur für das I2C und SMBus - Design. ( mit Berechnung ) Gruss Steffen
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.