Forum: Mikrocontroller und Digitale Elektronik I2C durch SM-Bus ersetzen


von Daniel (Gast)


Lesenswert?

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

von Sebastian (Gast)


Lesenswert?

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.

von Chris (Gast)


Lesenswert?

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.

von Daniel (Gast)


Lesenswert?

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ß

von Chris (Gast)


Lesenswert?

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.

von Daniel (Gast)


Lesenswert?

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?

von Daniel (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.