Tengo algunas preguntas con respecto al uso de un controlador esclavo I2C (de Arria 10 FPGA).
Actualmente estamos evaluando el soporte del protocolo MCTP en nuestro dispositivo, cuya capa física se basa en SMBus / I2C, de acuerdo con las especificaciones de MCTP. Nuestro punto de partida sería utilizar el controlador I2C incorporado en nuestro procesador fijo dentro del fpga. Nuestro dispositivo solo actuaría como esclavos I2C, lo que significa que no inicia ninguna comunicación.
Entiendo que SMBus e I2C tienen similitudes en su mayoría en el nivel de la señal eléctrica, excepto en las velocidades (SMBus solo alcanza el reloj de 100 KHz, mientras que I2C es compatible con relojes más altos; una preocupación). Sin embargo, más adelante en las especificaciones de MCTP, describe el comportamiento de MCTP solo en términos del protocolo SMBus, como la escritura de bloque SMBus que no veo protocolo equivalente exacto en I2C. También recomendó el uso de ARP, que creo que no está especificado en I2C y solo en SMBus. Así que espero que el host MCTP me envíe, el dispositivo, los comandos en términos del protocolo SMBus. Ahora, si tenemos un controlador SMBus en Arria 10, esto no será un problema, pero solo tenemos I2C, y no estoy seguro de si nuestro controlador "esclavo" I2C entenderá el protocolo SMBus. He tratado de investigar en línea, pero tengo puntos de vista contradictorios. También le he preguntado a Altera pero todavía estoy esperando su respuesta. Lo que seguí leyendo es que "SMBus es un subconjunto de I2C".
Estoy más preocupado por las transacciones de múltiples bytes (escritura de bloque, lectura, escritura de múltiples bytes, sean cuales sean sus nombres), ya que el host enviará paquetes y responderé con cierto número de bytes de datos. ¿Funcionará nuestro controlador I2C con el protocolo SMBus? Déjame saber lo que piensas.