I2C durch SM-Bus ersetzen

Gast #1111339
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
Gast #1111349
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.
Gast #1111363
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.
Gast #1111370
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ß
Gast #1111378
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren