Hallo, kennt sich hier jemand mit der Einbindung eines Sm-Bus aus? hier mal ein kleiner Vergleich von I2C und Sm-Bus I²C SMBus Timeout No Yes Minimum Clock Speed DC 10kHz Maximum Clock Speed 100kHz od. 400kHz 100kHz VHIGH 0.7 × VDD, 3.0V Fixed 2.1V VLOW 0.3 × VDD, 1.5V Fixed 0.8V Max I 3mA 350μA Clock Nomenclature SCL SMBCLK Data Nomenclature SDA SMBDAT General Call Yes Yes Alert# No Yes Habe ein fertiges Programm mit I2C für ein LCD Display. I2C und Sm-Bus ist ja anscheinend kompatibel. Was heisst das denn ganz genau? Würde das mit Blick auf den Vergleich oben bedeuten, dass ich einfach wo jetzt noch bei Clock Nomenclature(vom I2C) SCL steht, einfach durch SMBCLK vom SM-Bus in meinem Programm abändere? Grüße
Wenn ich mal Wikipedia zitieren darf: "Der SMBus basiert auf dem I²C-Serienbusprotokoll von Philips." Also: Im Prinzip muß im Programm nichts geändert werden, wenn der Takt schnell genug ist und die Signalpegel kein Problem, die Pull-Up-Widerstände nicht zu klein sind, dann kann man direkt SMBCLK als SCL anschließen und SMBDAT als SDA.
Anstatt TTL sind basiert der SMB auf CMOS I/O, speziell der 0.8/0.6/... low pegel kann zu Problemen führen. Was du natürlich einführen solltest ist das SMB-Timeout. Sonst kann es passieren, daß dein I2C Slave den ganzen Bus lahmlegt, ohne Ausweg. Was SMB auch noch hat, ist eine dynamisch Adressvergabe der Bausteine, denke aber nicht, daß du das implementieren musst.
arbeite mit 100kHz. also von dem her kein Problem. Kenne mich halt noch nicht so aus in der Materie. Meinst du also das ich den Code, z.B.: SCL in SMBCLK abändern müsste oder einfach alles so lassen? Wie bekomme ich das denn mit den Spannungen hin? Minimum Pullup Resistor Values per Bus Specifications 3V VDD 5V VDD I²C Bus > 1k > 1.6k SMBus > 8.5k > 14k Kannst du mit den Werten etwas anfangen? Gruß
Was ich dir raten würde, den Timeout einzubauen. Alles andere kannst du in SW lassen. Die Spannung, nimm CMOS I/O´s, viele uC nutzen das auch bei I2C, sonst brauchst du einen Buffer. Die Pull-ups sind die Wiederstände, welche zu 3V oder 5V geführt werden, damit der I2C slave startet.
müsste ich somit auf Seite des Mikrocontrollers und auf der anderen Seite des Sm-Buses die Pull ups anlegen? hab ja schon einen Controller, den LPC2129. Was meinst mit CMOS I/O's?
Wie baue ich denn den Timeout in das Programm ein?Chris: Was meinst du mit SW? Könntest du mir evtl noch erklären wie man das mit den pull ups macht? gruß
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.