Teóricamente
I2C y SMBUS son esencialmente compatibles siempre que se opere a una velocidad de bus de 100kHz. La hoja de datos en la página 15 (7.4.3.1.1) sugiere que para leer un registro usted (como maestro) tiene que hacer:
Start
SLA+W (slave acks)
Command (slave acks)
Repeated Start
SLA+R (slave acks)
READ data byte low (you ack)
READ data byte high (you ack)
READ PEC (you ack)
STOP
El SLA apropiado es 0x5A. Al igual que con I2C, necesitarás resistencias pullup en las líneas SCK y SDA (3,3kOhm debería estar bien). El valor de los comandos dependerá de lo que estés tratando de hacer como se describe en la página 16 (7.4.6).
La realidad ( )
Sin embargo, hay un párrafo (7.4.1) en la página 13 que dice:
Para proporcionar acceso a cualquier dispositivo o para asignar una dirección a un SD antes de que se conecte al sistema de bus sistema de bus, la comunicación debe comenzar con cero SA seguido de un bit RWB bajo. Cuando se envía este comando desde el MD, el MLX90614 siempre responderá y ignorará la información del código de chip interno interno.
... ahora eso es una vaga descripción de una especialización del protocolo en el mejor de los casos, pero parece ser lo que el código de github está explotando.
Si hay que creer el código de github, en realidad está ilustrando un comportamiento de protocolo no documentado. A saber:
START
SLA(0)+W (slave acks)
Command(7) (slave acks) (writes to the RAM read-address register the value 7 = TOBJ1?)
STOP
START
SLA(0)+R (slave acks)
READ low byte (master acks)
READ high byte (master acks)
READ pec (master nacks)
STOP
He visto este "sabor" de la interacción I2C antes, pero estoy contigo en que no se describe así en la hoja de datos.
Nota sobre el PEC
En cuanto a "cómo se genera el PEC" se describe en la página 14 al final de la página:
El cálculo del PEC incluye todos los bits excepto los bits START, REPEATED START STOP, ACK y NACK. El PEC es un CRC-8 con el polinomio X8+X2+X1+1. El bit más significativo de cada byte se se transfiere primero.
Básicamente es CRC-8-CCITT (ver wikipedia ) - existen implementaciones, sólo tienes que buscar en Google, o publicar una pregunta separada sobre CRC...