Archiv verlassen und diese Seite im Standarddesign anzeigen : I2C "BUS"
ShadowPhoenix
24.03.2004, 23:07
Hallo!
Ähem würdet ihr mich einmal aufklären, was denn ein "I2C Bus" sein soll?
Ich habe leider überhaupt keine Ahnung,was das sein soll, also
könntet ihr mir das vielleicht dementsprechend erklären?? :-D
Danke!
Mit freundlichen Grüßen,
ShadowPhoenix
Das ganze ist nicht ganz neu und von Phillips vorangetrieben, um zwischen intelligenten Komponenten niederer Komplexität Leitungen zu sparen.
Während Prozessoren, in den 80'ern die ihre Peripherie über Adress, Daten und Steuerbus angesprochen haben, werden bein I2C BUS die Komponenten untereinander nicht über 20-30 Leitungen, sondern über 2 Leitungen verbunden. Welche Bausteine als Peripherie dienen, vieviele mit welcher Geschwindigkeit angesprochen werden, das sollte man in den entsprechenden Berichten nachlesen (auch hier im Forum).
Es haben sich danach weitere Bussysteme entwicklet, die zur Zeit sehr stark in Automobilen eingesetzt werden. Es ist für mich immer wieder erstaunlich, daß beispielsweise ein System wie eine Tür des Autos ein eigenes Bussystem hat, das dann an das zentrale Bussystem angeschlossen ist. Andere Autos auf der selben Straße haben rein mechanische Türschlösser und Fensterheber.
Manfred
http://www.semiconductors.philips.com/buses/i2c/
Hallo ShadowPhoenix,
der I2C-Bus (eigentlich ja I-quadrat-C Bus, was heißt: Inter-Integrated-Circuit) ist ein serieller Zweidraht-Bus, der dafür ausgelegt ist, z.B. verschiedene IC´s auf einer Platine zu verbinden, d.h. dass diese IC´s über diesen Bus kommunizieren können.
Es gibt imho zwei verschiedene Datenraten, und zwar 100 Kb/s und 400 Kb/s, was dann als fast mode bezeichnet wird. Das unterstützen aber nicht alle Komponenten.
Ich bin heute zu müde, um noch mehr zu schreiben, aber Google sollte hier auch weiterhelfen.
Grüsse, Martin
Der I2C Bus besteht aus 2 Leitungen! Über diesen können zahlreiche Schaltkreise oder weitere Controller miteinander verbunden werden. Trotz dieser einfachen Kabelverbindung können auf diese Weise die Controller Daten und Befehle austauschen. Die Programmierung um Daten und Befehle auszutauschen ist bei I2C-Bus ebenfalls sehr einfach möglich. Wegen des geringen Kabelwirrwars und der einfachen Handhabung ist dise Art der Verbindung sehr beliebt.
So setzte ich den Bus sehr stark auf dem RNBFRA Board ein um noch zusätzliche I/O Ports bereitzustellen. Auch die LED´s werden somit quasi über den I2C Bus angesteuert. Kannst dir ja mal die Bascom Testprogramme zum RNBFRA Board anschaun.
Die Erweiterungsmöglichkeiten über diese 2 Leitungen sind enorm vielfältig. Neben Porterweiterungen gibt es LCD Treiber, Servotreiber (siehe unseren Wettbewerb), Temeraturfühler, Echtzeituhren usw.
Nähere Informationen findest DU in Hülle und Fülle wenn Du mal bei Google unter i2c blätterst!
Gruß Frank
Red Dragon
25.03.2004, 15:21
Ich habe noch eine generelle frage zu digitaltechnik und da ich gerade bei I2C bus bin stell ich sie einfach mal hier rein.
Habe ich mir den Datenstrom einer i2C übertragung so vorszustellen?:
start->bit1(1o.0)->Clock->bit2(1o.0)...->ende
oder wie bestehen die zusammenhänge zwischen clock und den datenausgängen in der digitaltechnik? Wird also mit Clock signalisiert das das nächste bit gesendet wird?
So ähnlich: http://www.gilbert.gmxhome.de/avr/i2csoft.html
ShadowPhoenix
25.03.2004, 17:51
Boah, ein Dankeschön für diese vielen Informationen!
Jetzt kenne ich mich aus! :-)
*geradeerstnachhausegekommenbinundnunallesnachles*
Mit freundlichen Grüßen,
ShadowPhoenix
Red Dragon
26.03.2004, 15:18
kann ich den D/A wandler direkt an die pins des µC hängen oder brauch ich noch nene zwischenkontroller? und was muss ich noch deklarieren an ports oder variablen außer dem was im codebeispiel in dem link steht?
Ich denke da verstehts du was falsch. Ode rmeinst du ob man einen D/A Wandler IC mit I2C Bus an den I2C Bus anschließen kann? Alle IC´s die für I2C Bus vorgesehen sind, lassen sich da auch anschließen. In den jeweiligen Datenblättern steht drin wie man sie ansteuert
Red Dragon
26.03.2004, 16:41
ich meine ob ich die beiden i2c ports des wandlers (sda und scl) direkt an die I/Oports des µC anschließen kann oder ob ich noch ein bauteil brauche das ersteinmal die schnittstelle zwischen i2c und µC herstellt
Die Bus-Leitungen (SDA und SCL) kannst Du jeweils direkt miteinander verbinden:
Die SDA-Leitung des Master ist wie ein langes Kabel, mit dem alle SDA's aller Slave Chips direkt verbunden sind ("Bus"); analog die SCL-Leitung.
Jede Bus-Leitung braucht lediglich noch einen PullUp.
Die Länge der Leitungen ist allerdings beschränkt auf Grössenordnung 30 cm (ist ja ein IIC Bus "zwischen den IC's", und nicht "zwischen Rechnern" oder "zwischen Netzwerken").
Red Dragon
26.03.2004, 19:06
also mit pull-up meinst du einfach einen 10k vom port gegen 5 V. die datenleitungen kommen dann auch an die ports oder?
Welche Datenleitungen? Von den I2C Schaltkreisen wird nud SDA und SCL mit dem Controller verbunden - sonst nix
10K Pull-up halte ich für etwas hoch. Bei mir funktionierts mit 4k7 recht gut. Du brauchst auch keine Datenleitungen, nachdem I2C ein serieller Bus ist, bei dem die Daten der Reihe nach geschickt werden. (daher seriell :-))
Das ist ja der Vorteil von einem Seriellen Bus, dass er eben weniger Datenleitungen bzw. Portpins belegt.
Red Dragon
26.03.2004, 20:40
ich meinte die beiden busleitungen
Ja, es gibt nur die beiden Busleitungen, und sonst nichts, ausser GND.
Red Dragon
30.03.2004, 18:42
gut dann werde ich den jetzt nehmen.
Könnt ihr mir auch noch einen analod digitalwandler mit parallelem ausgang und einem spannungsbereich von 0-5 volt empfehlen. ich habe schon im i-net sucht aber nur einen seriellen gefunden.
Mfg Robert
Warum parallelen Ausgang?????? Ich dachte du wolltest I2c-Bus nehmen? Mir scheint du verstehts da noch was falsch
Red Dragon
30.03.2004, 19:46
nein. für D/A nehme ich I2C, aber für A/D-würde ich gerne einen mit parallem ausgang nehmen. das ist für ein ganz anderes projekt.
Hi, das teil ist nun da. Ich habe es nun eingelötet. und wollte mich an die bascom-software machen. Ich habe es nach dem muster aus dem link von davil gemacht.
I2CSTART
I2cwbyte 72 , Ack
I2cwbyte 0 , Ack
I2cwbyte 63 , Ack
I2cstop
doch es werden nur fehler beim compilieren erzeugt. Vonwegen invalid datatype und variable not dimesioned
Was ist denn daran falsch und woher bekomme ich was richtiges. bei google habe ich nichts gefunden[/code]
The.Tomac
12.06.2004, 17:26
Also hab ich das nun richtig verstanden :
Man hat also zwei "Drähte", SDA und SCL, die werden beide jeweils mit einem 10k pullup nach 5v (pullUP) verbunden
an diese "Drähte" kan man dann
a) unendlich ?
b)256 ?
periphere chips dranhängen!
Die SDA leitung kommt jeweils an den SDA Pin des chips (falls vorhanden)
Die SCL leitung kommt jeweils an den SCL pin des controllers
- Nicht an irgendwelche A/D prots oder so
Nur um nochmal zusammen zu fassen
Ist das so richtig?
- ich hab selber keine Ahnung, das sind nur die Informationen, die ich bisher weiss
O:)
Kennt jemand von euch ein gutes buch ( vielleicht selber gelesen ) über AVR und I²C ?
Thx
Gruß, Gregor
Da normalerweise ja ein Byte übertragen wird, und ein Bit zur Unterscheidung Lesen/Schreiben benutzt wird, bleiben noch 7 Bit zur Adressierung übrig, also 128 Adressen.
Es gibt aber auch ein "Extended Addressing" mit 10 Bit, da sind es dann ein paar mehr :-)
Alles andere stimmt soweit schon.
Grüsse, Martin
Hallo ,
bei 10bit währen das dan ca. 512 also das 4 fache von von 8bit.
Frage für was braucht man so viele Adressen beim 1²C Port??
mfg bertie
The.Tomac
13.06.2004, 17:49
Ich hab jetzt die pdf datei über I²C ( die Ist irgendwo gepostet ) durchgelesen - da steht, dass die beiden leitungen nur durch die Länge ( 30cm) und die Kapazität?? (400pF) begrenzt sind
also wenn man will, bekommt man auf 30 cm Länge bei SMD ohne Probleme mehrere Hundert chips :cheesy:
Gruß, Gregor
Das mit 30cm ist ein Gerücht! Philips selbst spricht von 1m !
The.Tomac
14.06.2004, 17:55
ach - das ist ja echt ne ganze menge, aber was meint das datenblatt mit kapazität?
das mit dem handshaking hab ich immer nich nicht verstanden
Mit Kapazität meint das Datenblatt, dass ja zwischen den zwei Leitungen SDA und SCL bzw. zwischen diesen und GND eine Kapazität besteht. (weil zwei Drähte nebeneinander eben eine Kapazität darstellen.)
Mit dieser Kapazität und dem unvermeidlichen Serienwiderstand ergibt sich ein Tiefpass, der die Anstiegszeit der Signale begrenzt, und damit auch die maximale Datenrate, die über den Bus möglich ist.
Das heißt je länger die Leitungen, umso langsamer muss die Übertragung sein. Daher auch die Begrenzung auf eine bestimmte Länge.
Handshaking???
Meinst du die Start- und Stop-Conditions oder was? Das sind einfach bestimmte Pegel, die ein Master auf die Leitungen legt, um den Slaves mitzuteilen: Achtung, gleich kommt was, bitte zuhören (oder so ähnlich :-))
Grüsse, Martin
The.Tomac
14.06.2004, 18:38
achso, dann wäre das jetzt auch noch geklärt -- mann ich will nach hause und endlich mit dem AVR starterboard (500) spielen :cheesy:
ich geh in england zur schule
und hab grad examenszeit
Üben Üben Üben ](*,)
Naja - ich hab soweit jetzt alles verstanden - Danke Martin
ich brauch jetzt nur noch ein bisschen praktische Anwendung
Grüsse, Gregor
Ja, geht mir auch immer so.
Ich hab bald Prüfungen und mir schwirrt so viel Zeug im Kopf rum, was ich mal bauen will :Haue ...aber man muß ja lernen...
Grüsse, Martin
shadow-netz
14.06.2004, 19:25
ich glaube nicht, dass SCL einen Pullup benötigt.
und ein Pullup für SDA sollte doch auch reichen, oder?
Laut Definition braucht man auf jeden Fall einen Pullup Widerstand auf den beiden Leitungen. Ohne funktioniert das nicht !!!
MfG Kjion
Also ich habs bis jetzt nur mit 2 Pullups gesehen, ausserdem funktionierts auch so bei mir. Gehts hier um Sparmassnahmen :shock:
SCL ist die Clock-Leitung, warum sollte die keinen brauchen? (Alternativ zum Pullup gibts ja noch die Luxusversion mit Stromquelle)
Grüsse, Martin
Notfalls kann man auch die internen Pullup´s im AVR aktivieren. Sind zwar viel zu hochohmig aber für kurze Testzwecke tun die das auch meistens. Aber die der Regel sind zwei 10K besser. Da schadet es nämlich auch nicht wenn man zwei Boards mit jeweils 2 Widerständen verbindet.
shadow-netz
14.06.2004, 19:34
weil eine clockleitung normalerweise immer einen definierten pegel hat.
die datenleitung hat jedoch bei jedem gerät einen tristate ausgang und der kann bzw ist sicher mehr als einmal undefiniert ohne pullup.
was willst dabei mit ner stromquelle? es geht um spannungspegel.
Die Pullups werden benötigt, weil die Leitungen von den einzelnen Bausteinen nur auf Masse gezogen werden. Wenn also kein Baustein den Leitung auf Masse zieht würde das ganze in der Luft hängen, hätte also einen undefinierten Pegel. Deswegen Pullups... da wird man nicht dran vorbei kommen ;-)
Luxusversion mit Stromquelle ?? Hab ich bis jetzt ehrlich gesagt noch nie gesehen ...
MfG Kjion
Wow, drei Leute die innerhalb von drei Minuten dasselbe posten ;-)
... und ich hab wieder zu lange gebraucht ](*,) :D
shadow-netz
14.06.2004, 19:40
lol...
ok geb mich geschlagen... 2 pullups
hab grad die spec überflogen:
http://www.semiconductors.philips.com/acrobat/literature/9398/39340011.pdf
@shadow-netz
For higher capacitive bus-line loads (>100 pF), the resistor Rp can be replaced by external current source pull-ups to meet the rise time requirements.
Bei konstantem Widerstand ist die Ladefunktion eines Kondensators eine e-Funktion, bei einer Stromquelle eine Gerade --> schneller!
Hab ich gerade noch in der PDF (s.o.) gefunden:
Both SDA and SCL are bi-directional lines, connected to a
positive supply voltage via a current-source or pull-up
resistor (see Fig.3). When the bus is free, both lines are
HIGH.
Geht aber hier glaube ich zuweit.
shadow-netz
14.06.2004, 19:47
@shadow-netz
For higher capacitive bus-line loads (>100 pF), the resistor Rp can be replaced by external current source pull-ups to meet the rise time requirements.
Bei konstantem Widerstand ist die Ladefunktion eines Kondensators eine e-Funktion, bei einer Stromquelle eine Gerade --> schneller!
Geht aber hier glaube ich zuweit.
ja die spannungsquelle über den pullups durch ne stromquelle ersetzen... klar das gibt dann mehr schmackes auffa leitung ;)
aber das geht wirklich zu weit...
@ shadow-netz
Ok. Ok. Ich hör schon auf.
Schönen Abend noch!
Grüsse, Martin
The.Tomac
14.06.2004, 22:05
jo, viel Glüch denn -
Was studierst du?
shadow-netz
14.06.2004, 22:07
wer? ;)
The.Tomac
14.06.2004, 22:24
sorry, war irgendein fehler - hat erst nach ner stunde (oder 2 gepostet)
gemeint war martin ganz oben auf der 2. Seite
Ja, geht mir auch immer so.
Ich hab bald Prüfungen und mir schwirrt so viel Zeug im Kopf rum, was ich mal bauen will ...aber man muß ja lernen...
Grüsse, Martin
na, gehört hier warscheinlich sowiso net rein - sorry -
hat mich halt nur mal interressiert, was ihr so studiert
shadow-netz
14.06.2004, 22:33
aso. schau, das post hatte ich eben gar net gefunden. drum hab ich mich gefragt, wer gemeint war...
Ich studier Technische Informatik im 8. Semester an der TU Berlin.
gehört hier zwar wirklich net rein, aber was solls. kann man auch notfalls auch im offtopic weiterlabern. ;)
The.Tomac
14.06.2004, 22:37
TU berlin - klingt gut -- ich bin noch total unentschieden : in England, Deutschland, Österreich(Wien)
bis jetzt noch keine Ahnung - weisst du, ob man in Deutschland Elektroingeneurwesen mit einem robotik zweig studieren kann ?
shadow-netz
14.06.2004, 22:44
uff schwere frage... ich weiß dass man, wenn man Elektrotechnik studiert man sich danach noch vertiefen kann.
Robotik und Prozessdatenverarbeitung kommen aber mehr aus dem Informatikbereich und ist sicher nicht dass, was du dir darunter vorstellst
(Koordinatentransformationen, Prozesse in Echtzeitsystemen, ADA um ein paar Beispiele zu nennen)
ich bin mir net so sicher, wass du dir unter Robotik und ETechnik vorstellst.
Robotik(im Baselsinne) ist hochgradig fachübergreifend(Mikroelektronik, Mechanik, Steuerungstechnik, etc...). Da muss man schon genauer wissen, was man will.
The.Tomac
14.06.2004, 22:52
hmm ich wer dann wohl nochmal ein bisschen genauer das kleingedruckte lesen -- danke für die Info
So : das Thema,
.
.
.
.
.
.
Wo waren wir ? :-k
shadow-netz
14.06.2004, 22:55
dass man 2 pullups nimmt und den mist einfach zusammenklemmt? O:)
The.Tomac
14.06.2004, 23:05
I²C - also von einer spannungsversorgung von SDA und SCL hab ich auch nioch nix gehört -- ich hab aber auch keine ahnung
- wie gasagt ich bin in england und komm nicht an mein Elektronikspielzeug von Reichelt ran (ist gestern angekommen)
ich wär auch echt dankbar wenn jemand ein bascom programm posten könnte, das zum beispiel einem D/A wandler über I²C sagt, dass es A out 1 auf den Wert 100 setzen soll soll (oda so)
ich kann mir das ganze noch nicht so gut vorstellen
cu
mfG Gregor
Also ich... (obwohl es OT ist)
...studiere Elektrotechnik an der FH München momentan im 7. und auch im 6. Semester.
Schwerpunkt Nachrichtentechnik, was mich aber nicht abhält, Roboterähnliche Geräte zu bauen.
P.S. Falls jemand eine Diplomarbeit in diese Richtung (im Raum München) hat, bitte per PN melden.
Grüsse, Martin
The.Tomac
18.06.2004, 18:12
Also wenn ichs mir recht überlege, dann braucht ihr euch garnet so eine Mühe zu machen - ich werd mir demnächst ein AVR Buch kaufen
Hoffentlich steht das da drin
Die Bus-Leitungen (SDA und SCL) kannst Du jeweils direkt miteinander verbinden:
Die SDA-Leitung des Master ist wie ein langes Kabel, mit dem alle SDA's aller Slave Chips direkt verbunden sind ("Bus"); analog die SCL-Leitung.
Jede Bus-Leitung braucht lediglich noch einen PullUp.
Die Länge der Leitungen ist allerdings beschränkt auf Grössenordnung 30 cm (ist ja ein IIC Bus "zwischen den IC's", und nicht "zwischen Rechnern" oder "zwischen Netzwerken").
Also mit 10K + 4K7 + 4K7 hab ich 20Meter überbrückt. und der I2C funktioniert noch.
Die 10K hab ich auf der einen Platine.
Die 2x 4K7 in Reihe auf der zweiten Platine.
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.