¿SMBus con AVR?

Estoy buscando usar algunos sensores que tienen una interfaz SMBus. La señalización se parece mucho a I2C.

¿Cuáles son las principales diferencias entre I2C y SMBus? ¿Puede el hardware TWI de un AVR comunicarse con los periféricos SMBus? Si la respuesta es "depende", ¿cuáles son las limitaciones?

Wikipedia tiene un resumen bastante bueno de las diferencias en.wikipedia.org/wiki/System_Management_Bus
@PeterJ gracias, es una buena referencia; Tendré que mejorar mis habilidades de wiki-fu para complementar mis habilidades de google-fu
Ahora (2019), eche un vistazo a PackProbe: powercartel.com/projects/PackProbe Hay mucha información allí y una buena utilidad (disponible en GitHub).

Respuestas (3)

El protocolo SMBus se puede utilizar con microcontroladores AVR, ya sea mediante el bit-banging del protocolo o a través del soporte de hardware I2C. Aparentemente, algunos dispositivos SMBus han tenido problemas con el protocolo I2C implementado en versiones anteriores de las bibliotecas "wire.h" de Arduino, pero dado que la pregunta no menciona un Arduino, presumiblemente eso no es parte del problema. @vicatcu señala que este problema se ha resuelto en la versión actual de Arduino.

Consulte la biblioteca de interfaz maestra I2C de Peter Fleury para AVR-gcc como punto de partida. Esto funciona con un par de sensores SMBus que uso.

Además, hay un par de debates sobre la implementación de SMBus en el foro de AVR Freaks , que podrían ayudarlo a sortear los baches específicos que se encuentran en el camino de SMBus.

Estoy interesado en leer más sobre los problemas con SMBus y Arduino si no le importaría profundizar en ese punto...
@vicatcu Vea este artículo de blog , que menciona " la biblioteca Wire no admite el uso de la función de inicio repetido " y proporciona la alternativa que mencioné. También vea este mensaje en Arduino.cc, " Lo hice funcionar usando una biblioteca diferente. Parece que el cableado (sic) no puede hacerlo ".
Gracias por las referencias... aunque esa noción podría estar un poco desactualizada. Hubo mucho tráfico en la lista de correo de los desarrolladores sobre agregar soporte para inicios repetidos el año pasado. Este hilo parece confirmar... arduino.cc/forum/index.php?topic=137607.0 se agregó compatibilidad con la función endTransmission y la función requestFrom, y los documentos API están de acuerdo

Tengo más preguntas, pero he localizado un documento de TI que es específico en las diferencias entre los dos en términos eléctricos y de software.

Diferencias i2c y SMBus por TI

Tengo un dispositivo i2c y un dispositivo SMBus. Trabajan por separado, pero no juntos. Creo que es un problema de software. El enlace es una buena referencia. :}

Ahora (2019), echa un vistazo a PackProbe: https://powercartel.com/projects/PackProbe/

Mucha información allí y una buena utilidad de Arduino (disponible en GitHub).

@DaveTweed: Esto no es un obsequio o un servicio, lea atentamente.