¿Qué es una interfaz en chip y por qué es beneficioso tener una interfaz I2C en chip que el sondeo [cerrado]?

0

En el manual de especificaciones de I2C se da "Cuando el dispositivo no tiene tal interfaz, debe monitorear constantemente el bus via software "

Lo siento, pero no entiendo lo que significa tener una interfaz en chip en un microcontrolador u otro periférico.

Y si no está presente, tenemos que sondear el bus pero, según mi opinión, esa es la única manera. Entonces, ¿qué hace una interfaz que es una interfaz?

    
pregunta user2984602

2 respuestas

2

Imagina un chip que detecta alguna condición externa que no sabes cuándo ocurrirá. Digamos, por ejemplo, que el chip IIC realiza alguna comunicación externa a algún otro dispositivo. Ese otro dispositivo envía mensajes ocasionalmente, pero no sabes cuándo.

Dado que IIC es la única interfaz de este chip, la única forma de saber si el dispositivo externo envió un mensaje es sondear el chip. Eso podría consumir una gran cantidad de ancho de banda del bus IIC, especialmente si necesita leer el mensaje con baja latencia.

En casos como este, el chip puede proporcionar una salida adicional que puede utilizar si lo desea . Puede conectarlo a una entrada digital separada del microcontrolador. Ahora no tiene que enviar un mensaje de lectura IIC solo para descubrir que el chip IIC no tiene nada nuevo para usted. En su lugar, simplemente marque la entrada dedicada adicional.

Puedes llevar esto un paso más allá, es usar interrupciones. En el caso anterior, el firmware todavía está revisando regularmente la entrada dedicada del chip IIC. Eso es más simple y más rápido que hacer una lectura IIC para ver si el chip tiene algo para usted, pero aún requiere una verificación activa. La solución es conectar la señal del chip IIC a una entrada de interrupción del micro. Ahora el código de primer plano no tiene que hacer ninguna comprobación en absoluto. La rutina de interrupción se ejecuta solo cuando el chip IIC tiene datos nuevos para usted.

Con algo tan lento como IIC, se vuelve más complicado que eso. Es posible que no desee realizar la transacción IIC completa en la rutina de interrupción para evitar una latencia prolongada en el servicio de otras interrupciones. Ahora también debe considerar cómo tratar con el código de primer plano utilizando el bus IIC cuando se dispara la interrupción. Al final, encuestar la línea dedicada desde el chip IIC en una tarea separada, luego las transferencias IIC cuando hay datos pueden ser la mejor arquitectura de firmware. El bucle de sondeo incluye una forma de permitir que otras tareas se ejecuten cuando no hay datos nuevos antes de volver atrás y verificar nuevamente.

    
respondido por el Olin Lathrop
2

Nota: esta respuesta se escribió bajo la presunción de que el OP estaba preguntando sobre el enfoque de I²C del hardware en comparación con un enfoque de software ("bit banging").

Para simplificar enormemente el tema, una interfaz I²C incorporada funciona de tal manera que el software de la aplicación (la parte que usted escribe) solo tiene que ofrecer datos para enviar o saber en qué registro buscar los datos recibidos. El hardware subyacente maneja el tiempo real y el tiempo de los bits enviados, y la reconstrucción del reloj para los bits recibidos. Un conjunto bien definido de vectores de interrupción suele estar disponible para señalar eventos importantes del bus.

Tal configuración hace que sea mucho más fácil escribir aplicaciones que usan un bus I²C, al costo de tener menos control sobre el tiempo y los detalles de implementación exactos, como la libertad de elegir qué pines se usan para SDA y SCL.

Debido a que el envío de bits se realiza mediante hardware que está separado del procesador principal de la aplicación (generalmente, solo se vincula a través de la RAM), su código puede volcar algunos datos para enviarlos e inmediatamente pasar a hacer otras cosas que el hardware maneja con la transmisión. . Cuando escribe su propia interfaz I²C basada en software, su código es responsable de sincronizar cada bit enviado y recibido correctamente, lo que hace que sea mucho más difícil realizar otras tareas de procesamiento intensivo al mismo tiempo.

    
respondido por el Mels

Lea otras preguntas en las etiquetas