¿Hay solo un SMBus en las placas madre de PC?

8

He conectado dos cables al reloj SMBus y a las líneas de datos de mi placa base (soldadas manualmente a través de cables, porque no hay cabecera). Deseo conectar este bus a mi microcontrolador.

Los conecté a mi alcance, y muestran los 3.3V correctos o aproximadamente (esto me parece que los cables se han conectado ya que hay un pullup).

Puedo leer y escribir en este SMBus a través de python-smbus en linux. El mismo SMBus incluso recoge los eeproms de SPD en los módulos de memoria, por lo que este smbus definitivamente funciona. Pero no puedo ver nada de esta actividad en mi alcance.

¿Hay solo un SMBus en las placas base de PC? ¿O hay varios, y entonces estoy conectando mis cables a los lugares equivocados?

Mi placa base es un ASRock X58 Extreme 6 (Southbridge es ICH10R)

    
pregunta cksa361

2 respuestas

4

Eche un vistazo a la hoja de datos para el ICH10 familia .

En la página 214, describe el SMBus. Hay solo una interfaz SMBus en la placa para controlar / sondear dispositivos de la placa base, pero hay un SMBus esclavo adicional, a través del cual un dispositivo maestro externo puede enviar eventos al ICH10. No hay manera de usar esto programáticamente desde el lado de la computadora. La Sección 5.20.7 en la página 222 describe cómo funciona esto y lo que puede hacer. Parece que se usa para la administración de luces apagadas, perros guardianes externos, telemetría de sensores, etc.

Es posible que esté conectado a esa interfaz esclava, por lo que no está viendo tráfico. Los pull-ups en esos pines probablemente estén ahí para proteger las entradas de alta impedancia.

    
respondido por el Alexios
0

La cantidad de buses que hay depende del sistema.

Actualmente (2017) muchas placas base con un solo procesador utilizan el único controlador SMBus en el puente sur. Este bus se puede conectar a AMBOS pines SMBus en las ranuras PCIe y se usa para cosas como leer la información de configuración DRAM de eeprom. Los procesadores que usan sockets con más pines, como los procesadores Intel Xeon E5, tienen varios buses I2C adicionales para hablar con los eeproms de memoria, así que no compartan un solo bus I2C entre las ranuras y los dispositivos de la placa base.

Si una tarjeta en una ranura tiene una dirección conflictiva o coloca señales falsas en el bus, es posible que el sistema no se inicie (no puede leer los parámetros DIMM para inicializar los controladores DRAM) o puede tener problemas operacionales Con dispositivos I2C de placa base como los monitores de temperatura / voltaje.

Desafortunadamente, el estándar SMBus actualmente no requiere que los dispositivos eviten la dirección I2C muy común, como 0x50-0x57 (eeproms SPD DIMM), por lo que las tarjetas han funcionado bien en servidores de gama alta con varios buses pero no trabajar en servidores de gama baja con un bus compartido. Las direcciones que se utilizan en un diseño de bus compartido dependerán del diseño de la placa base y de las ranuras de memoria que se llenan. Puede tener un sistema con 4 ranuras de memoria, 2 de las que están pobladas, y una tarjeta controladora PCIe que usa SMBus y todo funciona bien. Cuando va a agregar 2 DIMM más, el sistema no se inicia, y el motivo es que la dirección SMBus de la tarjeta controladora entra en conflicto con la dirección I2C de los nuevos DIMM. El problema es la tarjeta controladora, no la memoria.

Las soluciones alternativas incluyen: colocar la cinta en los pines SMBus de la tarjeta controladora (consulte el artículo de Wikipedia en PCIe para obtener los pines correctos), o algunas placas base tienen un puente para controlar si el SMBus se enruta a las ranuras.

Una solución a largo plazo sería cambiar la especificación de SMBus para reflejar esta realidad de las computadoras compartidas SMBus / I2C, y hacer las direcciones 0x50-0x57 y cualquier otra dirección comúnmente utilizada para sensores térmicos y demás, prohibida para tarjetas adicionales. La especificación de Detección de presencia en serie (DIMM, por sus siglas en inglés) DIMM también podría aclararse para explicar cómo los dispositivos en los buses I2C compartidos pueden entrar en conflicto, y quizás argumentar que tomar medidas para evitar conflictos de direcciones es una buena idea. La especificación de SPD de Micron que he visto habla sobre patrones de bits y usted tiene que leer detenidamente para darse cuenta de qué direcciones I2C se consumirán.

    
respondido por el Jan Bottorff

Lea otras preguntas en las etiquetas