Teóricamente
I2C y SMBUS son esencialmente compatibles siempre que esté operando a una velocidad de bus de 100 kHz. La hoja de datos en la página 15 (7.4.3.1.1) sugiere leer un registro que 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á resistencias pullup en las líneas SCK y SDA (3.3kOhm debería estar bien). El valor del comando dependerá de lo que esté intentando hacer como se describe en la página 16 (7.4.6).
Realidad (?)
Sin embargo, hay un párrafo (7.4.1) en la página 13 que dice:
Con el fin de proporcionar acceso a cualquier
dispositivo o para asignar una dirección a un SD
antes de que se conecte al bus
sistema, la comunicación debe comenzar
con cero SA seguido de un bit RWB bajo.
Cuando este comando se envía desde el MD,
el MLX90614 siempre responderá y
ignorará el código interno del chip
información.
... ahora que es una descripción vaga de una especialización del protocolo en el mejor de los casos, pero parece ser lo que está explotando el código github.
Si uno es creer el código 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 de esa manera en la hoja de datos.
Sidenote en 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 PEC incluye todos los bits
excepto el INICIO, INICIO REPETIDO,
Bits STOP, ACK, y NACK. El PEC es un
CRC-8 con polinomio X8 + X2 + X1 + 1. los
El bit más significativo de cada byte es
transferido primero.
Básicamente es CRC-8-CCITT (consulte wikipedia ): existen implementaciones, solo busque Google para ello o publique un pregunta separada sobre el CRC ...