Linux I2C core, bus y controladores de dispositivo

  
 

El bus I2C usa solo dos líneas de señal, SCL y SDA, para realizar la interacción de datos entre dispositivos, simplificando enormemente la ocupación de los recursos de hardware y el espacio de diseño de la placa PCB. Por lo tanto, el bus I2C se usa ampliamente en interfaces entre dispositivos como EEPROM, relojes reales y pantallas LCD y CPU pequeñas.

Linux define la arquitectura del controlador I2C del sistema. En los sistemas Linux, el controlador I2C consta de tres partes: el núcleo I2C, el controlador del bus I2C y el controlador del dispositivo I2C. Estas tres partes trabajan juntas para formar un marco I2C muy versátil y adaptable.

La primera sección de este capítulo analizará la arquitectura I2C de Linux y explicará las funciones e interconexiones de los tres componentes.

El Capítulo 2 analizará el núcleo I2C de Linux y explicará las funciones del archivo i2c-core.c y la implementación de las funciones principales.

Las secciones 3 y 4 detallarán los métodos de escritura del controlador de bus I2C y del controlador de dispositivo I2C, respectivamente, y proporcionarán plantillas de diseño para referencia.

Las Secciones 5 y 6 se basarán en las plantillas de diseño proporcionadas en las Secciones 3 y 4, explicando el controlador de bus I2C S3C2410 ARM y el dispositivo de chip de video analógico /convertidor digital SAA7113H montado en él. Escribe un método.

15.1 Arquitectura I2C de Linux

La arquitectura I2C de Linux se divide en tres componentes:

? I2C Core

I2C Core proporciona el bus I2C Registro del controlador del dispositivo y del controlador, método de cierre de sesión, método de comunicación I2C (es decir, "algoritmo", creo que la traducción literal es "método de cálculo" no es apropiado, para evitar confusiones, lo siguiente utilizará directamente el "algoritmo" El código que no está relacionado con el adaptador específico y el dispositivo de detección, el código de la capa superior de la dirección del dispositivo de detección y similares.

? Controlador de bus I2C

El controlador de bus I2C es una implementación del lado del adaptador de la arquitectura de hardware I2C. El adaptador puede ser controlado por la CPU o incluso directamente integrado en la CPU.

El controlador de bus I2C incluye principalmente la estructura de datos del adaptador I2C i2c_adapter, la estructura de datos del algoritmo del adaptador I2C i2c_algorithm y una función que controla el adaptador I2C para generar señales de comunicación.

El código controlado por el bus I2C nos permite controlar el adaptador I2C para generar el bit de inicio, el bit de parada, el ciclo de lectura y escritura, y la lectura y escritura, generar ACK, etc. en el modo esclavo.

? Controlador de dispositivo I2C

El controlador de dispositivo I2C es la implementación del dispositivo en la arquitectura de hardware I2C. El dispositivo generalmente está conectado al adaptador I2C controlado por la CPU e intercambia datos con la CPU a través del adaptador I2C. .

El controlador de dispositivo I2C incluye principalmente las estructuras de datos i2c_driver y i2c_client. Necesitamos implementar las funciones miembro de acuerdo con el dispositivo específico.


Figura 15.1 Arquitectura I2C de Linux

En el núcleo de Linux 2.6, todos los dispositivos I2C se muestran en el sistema de archivos sysfs y existen en /sys /bus /El directorio I2c /aparece en la forma de la dirección del adaptador y la dirección del chip, tales como:

$ tree /sys /bus /i2c /

/sys /bus /i2c /

Copyright © Conocimiento de Windows All Rights Reserved