El bus de administración del sistema ( SMBus o SMB ) es un bus simple de dos cables con un solo extremo que se utiliza para comunicaciones livianas. Se encuentra comúnmente en los chipsets de las placas base de las computadoras para comunicarse con la fuente de energía para instrucciones de encendido y apagado. La funcionalidad exacta y las interfaces de hardware varían según los proveedores.
Se deriva de I²C para la comunicación con dispositivos de bajo ancho de banda en una placa base , especialmente chips relacionados con la energía, como el subsistema de batería recargable de una computadora portátil (consulte Sistema de batería inteligente y ACPI ). Otros dispositivos pueden incluir hosts maestros externos, sensor de temperatura, sensores de ventilador o voltaje, interruptores de tapa, generador de reloj e iluminación RGB . Las tarjetas complementarias de interconexión de componentes periféricos (PCI) pueden conectarse a un segmento SMBus.
Un dispositivo puede proporcionar información del fabricante, indicar su modelo o número de pieza, guardar su estado para un evento de suspensión, informar distintos tipos de errores, aceptar parámetros de control, devolver el estado a través de SMBus y sondear los registros del conjunto de chips. El SMBus no suele ser configurable ni accesible por el usuario. Aunque los dispositivos SMBus normalmente no pueden identificar su funcionalidad, una nueva coalición PMBus ha ampliado SMBus para incluir convenciones que lo permitan.
El SMBus fue definido por Intel y Duracell en 1994. [1] Transporta reloj, datos e instrucciones y se basa en el protocolo de bus serial I²C de Philips . Su rango de frecuencia de reloj es de 10 kHz a 100 kHz. (PMBus lo extiende a 400 kHz). Sus niveles de voltaje y tiempos están definidos de manera más estricta que los de I²C, pero los dispositivos que pertenecen a los dos sistemas a menudo se mezclan con éxito en el mismo bus. [ cita requerida ]
SMBus se utiliza como interconexión en varios estándares de gestión de plataformas, incluidos: Formato estándar de alerta (ASF), Arquitectura de escritorio y móvil para hardware del sistema (DASH) e Interfaz de gestión de plataforma inteligente (IPMI).
SMBus se utiliza para acceder a la información de configuración de DRAM como parte de la detección de presencia serial (SPD). SMBus se ha convertido en una amplia variedad de casos de uso de enumeración de sistemas además de la administración de energía.
Si bien SMBus se deriva de I²C, existen varias diferencias importantes entre las especificaciones de los dos buses en las áreas de componentes eléctricos, sincronización, protocolos y modos operativos. [2] [3] [4] [5]
Al mezclar dispositivos, la especificación I²C define los niveles de entrada como 30% y 70% del voltaje de suministro V DD , [4] : 9 que puede ser 5 V, 3,3 V o algún otro valor. En lugar de relacionar los niveles de entrada del bus con V DD , SMBus los define como fijos en 0,8 y 2,1 V. SMBus 2.0 admite V DD que van de 3 a 5 V. SMBus 3.0 admite V DD que van de 1,8 a 5 V y V IH = 1,35 V. [3]
SMBus 2.0 define una clase de "Alta Potencia" que incluye una corriente de sumidero de 4 mA que no puede ser controlada por chips I²C a menos que la resistencia pull-up esté dimensionada según los niveles del bus I²C.
Los dispositivos NXP tienen un conjunto de características eléctricas de mayor potencia que SMBus 1.0. La principal diferencia es la capacidad de disipación de corriente con V OL = 0,4 V.
Los dispositivos de 'alta potencia' SMBus y los dispositivos de bus I²C funcionarán juntos si la resistencia pull-up está dimensionada para 3 mA.
El reloj de SMBus se define de 10 a 100 kHz, mientras que el de I²C puede ser de 0 a 100 kHz, de 0 a 400 kHz, de 0 a 1 MHz y de 0 a 3,4 MHz, según el modo. Esto significa que un bus I²C que funcione a menos de 10 kHz no será compatible con SMBus, ya que los dispositivos SMBus pueden agotar el tiempo de espera. Sin embargo, muchos dispositivos SMBus admiten frecuencias más bajas.
SMBus 3.0 agrega velocidades de bus de 400 kHz y 1 MHz.
Existen las siguientes diferencias en el uso de la señalización del bus NACK: En I²C, se permite que un receptor esclavo no reconozca la dirección del esclavo, si por ejemplo no puede recibir porque está realizando alguna tarea en tiempo real. SMBus requiere que los dispositivos reconozcan su propia dirección siempre, como un mecanismo para detectar la presencia de un dispositivo extraíble en el bus (batería, estación de acoplamiento, etc.).
I²C especifica que un dispositivo esclavo, aunque puede reconocer su propia dirección, puede decidir, algún tiempo después en la transferencia, que no puede recibir más bytes de datos. I²C especifica que el dispositivo puede indicar esto generando el mensaje de no reconocimiento en el primer byte siguiente.
Además de indicar la condición de dispositivo ocupado de un esclavo, SMBus también utiliza el mecanismo NACK para indicar la recepción de un comando o dato no válido. Dado que dicha condición puede ocurrir en el último byte de la transferencia, se requiere que los dispositivos SMBus tengan la capacidad de generar el acuse de recibo después de la transferencia de cada byte y antes de la finalización de la transacción. Esto es importante porque SMBus no proporciona ninguna otra señalización de reenvío. Esta diferencia en el uso de la señalización NACK tiene implicaciones en la implementación específica del puerto SMBus, especialmente en dispositivos que manejan datos críticos del sistema, como el host SMBus y los componentes SBS.
Cada transacción de mensajes en SMBus sigue el formato de uno de los protocolos SMBus definidos. Los protocolos SMBus son un subconjunto de los formatos de transferencia de datos definidos en las especificaciones I²C. Los dispositivos I²C a los que se puede acceder a través de uno de los protocolos SMBus son compatibles con las especificaciones SMBus. No se puede acceder a los dispositivos I²C que no se adhieren a estos protocolos mediante métodos estándar, tal como se define en las especificaciones SMBus y Advanced Configuration and Power Interface (ACPI).
El SMBus utiliza hardware I²C y direccionamiento de hardware I²C, pero añade software de segundo nivel para construir sistemas especiales. En particular, sus especificaciones incluyen un Protocolo de Resolución de Direcciones que puede realizar asignaciones de direcciones dinámicas. La reconfiguración dinámica del hardware y el software permite que los dispositivos de bus se conecten en caliente y se utilicen inmediatamente, sin reiniciar el sistema. Los dispositivos se reconocen automáticamente y se les asignan direcciones únicas. Esta ventaja da como resultado una interfaz de usuario plug-and-play. En ambos protocolos se hace una distinción muy útil entre un host del sistema y todos los demás dispositivos del sistema que pueden tener los nombres y funciones de maestros o esclavos.
SMBus tiene una función de tiempo de espera que reinicia los dispositivos si una comunicación tarda demasiado. Esto explica la frecuencia de reloj mínima de 10 kHz para evitar bloquear el bus. I²C puede ser un bus "DC", lo que significa que un dispositivo esclavo estira el reloj maestro cuando realiza alguna rutina mientras el maestro está accediendo a él. Esto notificará al maestro que el esclavo está ocupado pero no quiere perder la comunicación. El dispositivo esclavo permitirá la continuación después de que su tarea se complete. No hay límite en el protocolo de bus I²C en cuanto a cuánto puede durar este retraso, mientras que para un sistema SMBus, estaría limitado a 35 ms. El protocolo SMBus simplemente supone que si algo tarda demasiado, significa que hay un problema en el bus y que todos los dispositivos deben reiniciarse para borrar este modo. Los dispositivos esclavos no pueden mantener el reloj BAJO demasiado tiempo.
SMBus 1.1 y versiones posteriores definen la comprobación de errores de paquetes ( PEC ) opcional. En ese modo, se añade un byte PEC (código de error de paquete) al final de cada transacción. El byte se calcula como suma de comprobación CRC-8 , calculada sobre todo el mensaje, incluida la dirección y el bit de lectura/escritura. El polinomio utilizado es x 8 + x 2 + x + 1 (el algoritmo CRC-8- ATM HEC , inicializado a cero). [6] [7] [8]
SMBus tiene una señal de interrupción compartida opcional adicional denominada SMBALERT#, que los esclavos pueden usar para indicarle al host que les pregunte sobre eventos de interés. SMBus también define un "protocolo de notificación al host" menos común, que proporciona notificaciones similares pero transmite más datos y se basa en el modo multimaestro I²C.
Los dispositivos SMBus son compatibles con FreeBSD , OpenBSD , NetBSD , DragonFly BSD , Linux , Windows 98 y versiones más recientes y Windows CE .