Al comunicarse, debe haber un conjunto establecido de reglas sobre cómo interactuar. Al igual que cuando hablamos unos con otros, actualmente estamos utilizando el inglés. De manera similar, los chips deben tener un protocolo establecido sobre cómo se comunican para transferir datos entre ellos.
Al hablar, las reglas involucran el uso de sonidos que forman palabras, y luego reglas que describen cómo esas palabras van juntas para formar oraciones. Al escribir, tenemos símbolos que se juntan para formar palabras, y luego las mismas reglas sobre cómo las palabras se juntan para formar oraciones.
De la misma manera, tu chip tiene dos partes de comprensión. La primera parte es el protocolo, y la segunda parte es la interfaz. I2C tiene un protocolo y una interfaz al mismo tiempo. Describe la interfaz, que son las reglas de cómo un chip debe enviar electricidad a otro (como los sonidos para hablar o los símbolos para escribir). I2C también describe un protocolo, que son reglas sobre cómo interpretar esa información transmitida a través de la interfaz (como la sintaxis de una oración).
Ahora, los tipos de dispositivos que deben comunicarse mediante I2C son cosas como microcontroladores y computadoras. Cosas que tienen un nivel suficientemente alto de "comprensión" o al menos capacidad para pensar en cosas como "direcciones" y bytes. Cuando compra un dispositivo que enumera I2C (como este elegante led enlace ), entonces sabe que lo entenderá. esas reglas tanto para la interfaz como para el protocolo de I2C, y puede interactuar directamente con ella.
Un LED "normal" (como este: enlace ) no entiende nada como I2C. Es como una bombilla, ¡solo convierte la electricidad que recibe en luz! Debido a esto, no se puede "comunicar" con I2C. De la misma manera, un botón (como este: enlace ) tampoco habla I2C. Es como el interruptor que usaste. Si presiona el botón, conecta físicamente dos de los pines en el exterior. Si desea utilizar un botón o un LED como estos, debe buscar en algo denominado pines "Entrada / Salida de uso general", también llamado GPIO. Estos son los pines en su Raspberry PI que simplemente pueden enviar voltaje "hi" y "low" a un componente (como su LED), o leer si la electricidad en un pin es "hi" o "low" en sí misma.
Ahora, con todo eso fuera del camino, ¡déjame contestar algunas de tus preguntas reales!
P1) Por lo que entiendo, el "pi" ya es compatible con i2c y i2c no es una pieza de hardware, es solo un protocolo de lo que entiendo.
A1) Con una interfaz, es bastante tedioso e intensivo de CPU sentarse en un bucle y establecer repetidamente el pin "hi" y "low" y luego esperar un período de tiempo preciso para enviar sus datos. Como a menudo nos gustaría enviar los datos y luego hacer que la CPU haga algo más, muchos microcontroladores y CPUS incluyen secciones de hardware que comprenden cómo transformar los datos de una serie de bits en las señales eléctricas necesarias para comunicarse utilizando ciertos dispositivos. protocolos Dentro de tu raspberry pi, hay un conjunto especial de registros (o al menos ubicaciones de memoria) que, cuando se escriben, pueden hacer que algunos de tus pines se comporten de una manera consistente con las especificaciones I2C. Al hacer esto en Linux a través del kernel, esto puede ser bastante difícil, por lo que muchos diseñadores usarán "memmap" y / dev / mem para alternar esas ubicaciones de memoria directamente. Esto es bastante complicado y es probable que tenga que encontrar referencias más sustanciales de las que puedo proporcionar.
P2) ¿Necesito un chip de expansión GPIO para conectarme a mi "pi" antes de poder comenzar a conectar dispositivos usando la funcionalidad i2c?
A2) Como dije anteriormente, si no está dispuesto a usar los pines GPIO que ya están disponibles en la frambuesa pi, tendrá que encontrar un dispositivo que pueda transformar la información de I2C en una forma más sencilla que su LED y pulsador. botón "entender".
Q3) ¿Quién es el maestro y quién es el esclavo en mi bus I2C?
A3) Por lo tanto, solo hay un dispositivo en I2C que puede iniciar la comunicación a la vez. En este caso, el único dispositivo que debería ser un maestro es la frambuesa pi. Si, de hecho, tiene un botón pulsador que está habilitado para I2C, le dirá a la frambuesa pi que pregunte al botón esclavo "¿está presionado o no?" y el botón responderá, y luego usarás esa información.
Espero que ayude!