¿Puedo comunicarme con un dispositivo SMBus/PMBus con I2C? Estuve leyendo las especificaciones y me confundí bastante. Me parece que la única diferencia son los niveles de voltaje y la necesidad de tener una condición de reinicio. ¿Estoy en lo correcto o me estoy perdiendo algo?
SMBUS es básicamente un superconjunto de i2c. Tiene algunas características adicionales. Si no necesita esas características adicionales, entonces sí.
Algunas lecturas ligeras sobre las diferencias generales:
https://www.maximintegrated.com/en/app-notes/index.mvp/id/476
http://www.ti.com/lit/an/sloa132/sloa132.pdf
Los detalles sobre lo que hace el dispositivo y cómo funciona se pueden ver en la hoja de datos. Es posible que no indique directamente qué características son los comandos normales de i2c, pero siempre que comprenda cómo funciona i2c, puede diferenciarlos.
SMBus es un subconjunto definitivo de los estándares I2C.
Consulte http://www.smbus.org/specs/index.html
Para conocer las especificaciones I2C (mantenidas por NXP), consulte esto: http://cache.nxp.com/documents/user_manual/UM10204.pdf
Las principales diferencias para SMBus:
SMBus solo usa direccionamiento de 7 bits (esto se define de acuerdo con la especificación ACPI), aunque SMBus define un registro adicional para la dirección de 10 bits, actualmente no se usa en ninguna PC ACPI que conozca.
Para el uso de ACPI (PC), SMBus utiliza una velocidad de datos mínima de 10k bps y máxima de 100k bps. Hay un nuevo estándar (aún no ratificado que aumenta la velocidad, pero aún no se ha introducido como parte de ACPI). I2C especifica el reloj del bus a CC (parado) y puede funcionar mucho más rápido, con el nuevo estándar hasta 3,4 Mbps.
SMBus admite una especificación de extracción de bus de baja potencia de 350 uA y un modo de alta potencia de 3 mA, I2C especies una capacidad de corriente de extracción de bus de 4 mA. Esto da como resultado una longitud de línea y una capacidad de potencia mucho más cortas para SMBus.
Los esclavos SMBus deben implementar un tiempo de espera de reinicio automático de 35 mS. No encuentra esto en los chips I2C, por lo que debe monitorear los tiempos de espera en lo que sea que impulse al maestro. Esto afecta los tiempos de extensión del reloj, ya que si el reloj se mantiene presionado por más de 35 mS, el SMBus se reiniciará, mientras que I2C técnicamente puede extender el reloj indefinidamente (no es algo bueno, por supuesto).
Para obtener una mejor cobertura de las diferencias, lea el Apéndice B en la especificación SMBus y la sección 4 de la especificación NXP U10204.
En su mayoría, puede usar periféricos I2C en un SMBus, pero lo contrario no es cierto. Las implementaciones de periféricos SMBus pueden fallar debido a problemas de 'extensión de reloj' (que provocan reinicios) o a velocidades bajas < 10k bps.
Transeúnte
flashburn
Transeúnte
jack creasey