Ich habe zwei Drähte an die SMBus-Uhr und die Datenleitungen meines Motherboards angeschlossen (manuell über Drähte verlötet, da kein Header vorhanden ist). Ich möchte diesen Bus an meinen Mikrocontroller anschließen.
Ich habe diese an mein Zielfernrohr angeschlossen und sie zeigen die korrekten 3,3 V oder so (dies scheint mir, dass die Drähte angeschlossen wurden, da es einen Pullup gibt).
Ich kann diesen SMBus über Python-Smbus unter Linux lesen und schreiben. Der gleiche SMBus nimmt sogar die SPD-Eeproms auf Speichermodulen auf, sodass DIESER SMBUS definitiv funktioniert. Aber ich kann keine dieser Aktivitäten in meinem Bereich sehen.
Gibt es nur einen SMBus auf PC-Motherboards? Oder gibt es mehrere, und so schließe ich meine Drähte an den falschen Stellen an?
Mein Motherboard ist ein ASRock X58 Extreme 6 (Southbridge ist ICH10R)
Antworten:
Schauen Sie sich das Datenblatt für die ICH10-Familie an .
Auf Seite 214 wird der SMBus beschrieben. Es gibt nur eine integrierte SMBus-Schnittstelle zum Steuern / Abfragen von Motherboard-Geräten, aber es gibt einen zusätzlichen Slave- SMBus, über den ein externes Master-Gerät Ereignisse an den ICH10 senden kann. Es gibt keine Möglichkeit, dies programmgesteuert von der Computerseite aus zu verwenden. In Abschnitt 5.20.7 auf Seite 222 wird beschrieben, wie dies funktioniert und was Sie tun können. Es sieht so aus, als würde es für das Lichtausfallmanagement, externe Wachhunde, Sensortelemetrie usw. verwendet.
Es kann durchaus sein, dass Sie an diese Slave-Schnittstelle angeschlossen sind, weshalb Sie keinen Datenverkehr sehen. Die Klimmzüge an diesen Pins dienen wahrscheinlich zum Schutz hochohmiger Eingänge.
quelle
Wie viele Busse es gibt, hängt vom System ab.
Derzeit (2017) verwenden viele Single-Prozessor-Sockel-Motherboards den Single-SMBus-Controller in der South Bridge. Dieser Bus kann an BEIDE SMBus-Pins in den PCIe-Steckplätzen angeschlossen werden und wird beispielsweise zum Lesen der DRAM-Konfigurationsinformationen von eeprom verwendet. Prozessoren, die Sockel mit mehr Pins verwenden, wie die Intel Xeon E5-Prozessoren, verfügen über mehrere zusätzliche I2C-Busse, um mit den Speicher-Eeproms zu kommunizieren. Teilen Sie daher keinen einzigen I2C-Bus zwischen Steckplätzen und Motherboard-Geräten.
Wenn eine Karte in einem Steckplatz eine widersprüchliche Adresse hat oder falsche Signale auf den Bus legt, startet das System möglicherweise nicht (es kann die DIMM-Parameter zum Initialisieren der DRAM-Controller nicht lesen) oder hat möglicherweise Betriebsprobleme mit dem Motherboard I2C Geräte wie die Temperatur- / Spannungsmonitore.
Leider erfordert der SMBus-Standard derzeit keine Geräte, um sehr häufige I2C-Adressen wie 0x50-0x57 (DIMM SPD-Eeproms) zu vermeiden. Daher wurden Karten hergestellt, die auf High-End-Servern mit mehreren Bussen einwandfrei funktionieren, auf niedrigeren jedoch nicht Endserver mit einem gemeinsam genutzten Bus. Welche Adressen in einem gemeinsam genutzten Busdesign verwendet werden, hängt vom Motherboard-Design ab und davon, welche Speichersteckplätze belegt sind. Möglicherweise verfügen Sie über ein System mit 4 Speichersteckplätzen, 2 davon, und eine PCIe-Controller-Karte, die SMBus verwendet und alles funktioniert einwandfrei. Wenn Sie zwei weitere DIMMs hinzufügen, startet das System nicht. Der Grund dafür ist, dass die SMBus-Adresse der Controllerkarte mit der I2C-Adresse der neuen DIMMs in Konflikt steht. Das Problem ist die Controllerkarte, nicht der Speicher.
Zu den Problemumgehungen gehören: Anbringen von Klebeband an den SMBus-Pins der Controllerkarte (die richtigen Pins finden Sie im Wikipedia-Artikel auf PCIe) oder einige Motherboards verfügen über einen Jumper, mit dem Sie steuern können, ob der SMBus zu den Steckplätzen geleitet wird.
Eine langfristige Lösung wäre, die SMBus-Spezifikation zu ändern, um diese Realität von gemeinsam genutzten SMBus / I2C-Computern widerzuspiegeln, und Adressen 0x50-0x57 und jede andere häufig verwendete Adresse für Wärmesensoren und dergleichen für Add-On-Karten zu verbieten. Die SPD-Spezifikation (DIMM Serial Presence Detect) könnte auch präzisiert werden, um darzulegen, wie Geräte in gemeinsam genutzten I2C-Bussen Konflikte verursachen können, und möglicherweise den Fall zu ergreifen, dass Maßnahmen zur Vermeidung von Adresskonflikten eine gute Idee sind. Die Micron SPD-Spezifikation, die ich gesehen habe, spricht über Bitmuster, und Sie müssen sorgfältig lesen, um zu erkennen, welche I2C-Adressen verbraucht werden.
quelle