Esiste un solo SMBus su schede madri per PC?


8

Ho collegato due fili all'orologio SMBus e alle linee dati della mia scheda madre (saldate manualmente tramite fili, perché non c'è intestazione). Desidero interfacciare questo bus con il mio microcontrollore.

Ho collegato questi al mio ambito di applicazione e mostrano i 3.3V o successivi corretti (questo mi sembra che i fili siano stati collegati poiché c'è un pullup).

Posso leggere e scrivere su questo SMBus tramite python-smbus su Linux. Lo stesso SMBus raccoglie persino le eeprom SPD sui moduli di memoria, quindi QUESTO smbus funziona sicuramente. Ma non riesco a vedere nessuna di queste attività sul mio campo di applicazione.

C'è solo un SMBus su schede madri per PC? O ci sono più, e quindi sto collegando i miei fili in posti sbagliati?

La mia scheda madre è un ASRock X58 Extreme 6 (Southbridge è ICH10R)


2
Che chipset hai? La risposta dipende dal tuo IC South Bridge. SMBUS e I²C sono così facili da implementare, non è impossibile averne più. Dal punto di vista dell'utente, tutte le schede madri per PC sono praticamente le stesse. A un livello basso, tuttavia, le cose sono drasticamente diverse. Il chipset estrae molte delle complessità anche a livello hardware.
Alexios,

Southbridge è
ICH10R

Risposte:


4

Dai un'occhiata alla scheda tecnica per la famiglia ICH10 .

Nella pagina 214, descrive l'SMBus. C'è solo un'interfaccia SMBus integrata per controllare / eseguire il polling dei dispositivi della scheda madre, ma c'è un SMBus slave aggiuntivo , attraverso il quale un dispositivo master esterno può inviare eventi a ICH10. Non c'è modo di usarlo a livello di programmazione dal lato del computer. La sezione 5.20.7 a pagina 222 descrive come funziona e cosa è possibile fare. Sembra che sia usato per la gestione delle luci spente, i cani da guardia esterni, la telemetria dei sensori, ecc.

Potrebbe essere che tu sia collegato a quell'interfaccia slave, motivo per cui non vedi traffico. I pull-up su quei pin sono probabilmente lì per proteggere gli ingressi ad alta impedenza.


0

Quanti bus ci sono dipende dal sistema.

Attualmente (2017) molte schede madri con socket a processore singolo utilizzano il controller SMBus singolo nel ponte sud. Questo bus può essere collegato a ENTRAMBE i pin SMBus sugli slot PCIe e viene utilizzato per cose come leggere le informazioni di configurazione DRAM da eeprom. I processori che utilizzano socket con più pin, come i processori Intel Xeon E5, hanno più bus I2C extra per comunicare con le eeprom di memoria, quindi non condividere un singolo bus I2C tra slot e dispositivi della scheda madre.

Se una scheda in uno slot ha un indirizzo in conflitto o inserisce segnali fasulli sul bus, il risultato è che il sistema potrebbe non avviarsi (non è in grado di leggere i parametri DIMM per inizializzare i controller DRAM) o potrebbe avere problemi operativi con la scheda madre I2C dispositivi come i monitor temp / voltaggio.

Sfortunatamente, lo standard SMBus attualmente non richiede dispositivi per evitare indirizzi I2C molto comuni, come 0x50-0x57 (eeprom DID SPD), quindi sono state realizzate schede che funzionano bene su server di fascia più alta con più bus ma non funzionano su server finali con un bus condiviso. Quali indirizzi vengono utilizzati in un progetto di bus condiviso dipenderà dal design della scheda madre e dagli slot di memoria popolati. Potresti avere un sistema con 4 slot di memoria, 2 di quelli popolati e una scheda controller PCIe che utilizza SMBus e tutto funziona bene. Quando si va ad aggiungere altri 2 DIMM, il sistema non si avvia e il motivo è perché l'indirizzo SMBus della scheda controller è in conflitto con l'indirizzo I2C dei nuovi DIMM. Il problema è la scheda controller, non la memoria.

Le soluzioni alternative includono: l'inserimento di nastro sui pin SMBus della scheda controller (vedere l'articolo di Wikipedia su PCIe per i pin corretti) o alcune schede madri hanno un ponticello per controllare se SMBus viene instradato agli slot.

Una soluzione a lungo termine sarebbe quella di cambiare le specifiche SMBus per riflettere questa realtà dei computer SMBus / I2C condivisi e rendere gli indirizzi 0x50-0x57 e qualsiasi altro indirizzo comunemente usato per i sensori termici e simili, vietati per l'aggiunta di schede. Le specifiche DIMM Serial Presence Detect (SPD) potrebbero anche essere chiarite per chiarire come i dispositivi sui bus I2C condivisi possono essere in conflitto e forse ipotizzare che adottare misure per evitare conflitti di indirizzo sia una buona idea. Le specifiche SPD di Micron che ho visto parlano di bit pattern e devi leggere attentamente per capire quali indirizzi I2C verranno consumati.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.