SMBus mit AVR?

Ich möchte einige Sensoren verwenden, die über eine SMBus-Schnittstelle verfügen. Die Signalisierung sieht sehr nach I2C aus.

Was sind die Hauptunterschiede zwischen I2C und SMBus? Kann die TWI-Hardware eines AVR mit SMBus-Peripheriegeräten kommunizieren? Wenn die Antwort "es kommt darauf an" lautet, wo liegen dann die Einschränkungen?

Wikipedia hat eine ziemlich gute Zusammenfassung der Unterschiede en.wikipedia.org/wiki/System_Management_Bus
@PeterJ danke, das ist eine gute Referenz; Ich muss meine Wiki-Fu-Fähigkeiten verbessern, um meine Google-Fu-Fähigkeiten zu ergänzen
Schauen Sie sich jetzt (2019) PackProbe an: powercartel.com/projects/PackProbe Dort finden Sie viele Informationen und ein nettes Dienstprogramm (verfügbar auf GitHub).

Antworten (3)

Das SMBus-Protokoll kann mit AVR-Mikrocontrollern verwendet werden, entweder durch Bit-Banging des Protokolls oder durch die I2C-Hardwareunterstützung. Einige SMBus-Geräte hatten anscheinend Probleme mit dem I2C-Protokoll, wie es in früheren Versionen der Arduino-Bibliotheken "wire.h" implementiert wurde, aber da in der Frage kein Arduino erwähnt wird, ist dies vermutlich nicht Teil des Problems. @vicatcu weist darauf hin, dass dieses Problem in der aktuellen Arduino-Version behoben wurde.

Siehe Peter Fleurys I2C Master Interface- Bibliothek für AVR-gcc als Ausgangspunkt. Dies funktioniert mit ein paar SMBus-Sensoren, die ich verwende.

Außerdem gibt es im AVR Freaks-Forum einige Diskussionen über die SMBus-Implementierung , die Ihnen helfen könnten, bestimmte Schlaglöcher entlang der SMBus-Straße zu umgehen.

Ich bin daran interessiert, mehr über die Probleme mit SMBus und Arduino zu lesen, wenn es Ihnen nichts ausmacht, diesen Punkt näher zu erläutern ...
@vicatcu Siehe diesen Blog-Artikel , in dem erwähnt wird, dass " die Wire-Bibliothek die Verwendung der Funktion zum wiederholten Starten nicht unterstützt ", und die von mir erwähnte Alternative bietet. Siehe auch diese Nachricht auf Arduino.cc: „ Ich habe es mit einer anderen Bibliothek zum Laufen gebracht. Es scheint, dass die Verkabelung (sic) das nicht kann “.
Danke für die Referenzen ... diese Vorstellung könnte jedoch etwas veraltet sein. Auf der Entwickler-Mailingliste gab es im vergangenen Jahr viel Verkehr, um Unterstützung für wiederholte Starts hinzuzufügen. Dieser Thread scheint zu bestätigen ... arduino.cc/forum/index.php?topic=137607.0 Unterstützung wurde der endTransmission-Funktion und der requestFrom-Funktion hinzugefügt, und die API-Dokumentation stimmt zu

Ich habe weitere Fragen, habe aber ein Dokument von TI gefunden, das die Unterschiede zwischen den beiden sowohl in Bezug auf die Elektrik als auch auf die Software genau beschreibt.

Unterschiede i2c und SMBus von TI

Ich habe ein i2c-Gerät und ein SMBus-Gerät. Sie arbeiten getrennt, aber nicht zusammen. Ich denke es ist ein Softwareproblem. Der Link ist eine gute Referenz. :)

Schauen Sie sich jetzt (2019) PackProbe an: https://powercartel.com/projects/PackProbe/

Dort gibt es viele Informationen und ein nettes Arduino-Dienstprogramm (verfügbar auf GitHub).

@DaveTweed: Dies ist kein Goody oder Service, lesen Sie es sorgfältig durch.