Clase 21-I2c PDF
Clase 21-I2c PDF
STM – I2C
ROBINSON JIMENEZ MORENO
I2C o Circuito Interintegrado (Inter-Integrated Circuit) es un protocolo
de comunicación serial desarrollado por Phillips Semiconductors en la
década de los 80s. Se creó para poder comunicar varios chips al mismo
tiempo dentro de los televisores.
Con el protocolo I2C es posible tener a varios maestros controlando
uno o múltiples esclavos. Esto puede ser de gran ayuda cuando se van a
utilizar varios microcontroladores para almacenar un registro de datos
hacia una sola memoria o cuando se va a mostrar información en una
sola pantalla.
El protocolo I2C utiliza sólo dos vías o cables de comunicación, así
como también lo hace el protocolo UART.
Puertos y Pines:
• PF1-SCL (Reloj).
• PF0-SDA (Datos).
• Modulo I2C
RCC_AHB1ENR peripheral clock register.
Asignación de Puertos PF0 y PF1.
GPIOx_Moder port moder register
GPIOx_OTYPER port output type register.
GPIOx_PUPDR port pull-up/pull-down register.
GPIOx_OSPEEDR port output speed register.
RCC_APB1ENR peripheral clock enable register.
DCKCFGR2 dedicated clocks configuration register.
Control Register (I2C_CR1)
Los tiempos deben ser configurados de tal forma que permitan la transferencia y configuración de
información usada en los módulos maestros y esclavos. Esto se logra mediante la configuración del PRESC,
SCLDEL, SDADEL, en el registro I2C_TIMINGR.
Los tiempos deben ser configurados de tal forma que permitan la transferencia y configuración de
información usada en los módulos maestros y esclavos. Esto se logra mediante la configuración del PRESC,
SCLDEL, SDADEL, en el registro I2C_TIMINGR.
Función para recibir un dato por el modulo de
I2C:
EJEMPLO
SENSOR MPU6050
EL MPU6050 es una unidad de medición IMU de 6 grados de libertad pues combina un
acelerómetro de 3 ejes y un giroscopio de 3 ejes. Este sensor es muy utilizado en navegación, ya
que con él es posible realizar distintas mediciones como
goniometría, estabilización, temperatura. es un sensor de movimiento, que tiene un conversor ADC
de 16 bits que convierte los datos a un valor digital, el módulo se comunica a través de la
comunicación serie I2C a través del reloj serial (SCL) y datos (SDA).
Necesita 3.3V pero un regulador de voltaje en la tarjeta GY-521 le permite alimentarlo hasta 5V.
Este registro especifica el divisor de la velocidad de salida del sensor utilizado para generar la
frecuencia de muestreo para el MPU-60X0.
La frecuencia de muestreo se genera dividiendo la frecuencia de salida del sensor por SMPLRT_DIV:
Frecuencia de muestreo = Velocidad de salida del sensor / (1 + SMPLRT_DIV)
SENSOR MPU6050
donde la velocidad de salida del sensor = 8kHz cuando el DLPF está deshabilitado (DLPF_CFG = 0 o
7), y 1kHz cuando el DLPF está habilitado
GYRO_RESET: cuando se establece en 1, este bit restablece las rutas de señal digital y analógica del
giroscopio.
ACCEL_RESET: cuando se establece en 1, este bit restablece las rutas de señal analógica y digital del
acelerómetro.
TEMP_RESET: cuando se establece en 1, este bit restablece las rutas de señal analógica y digital del
sensor de temperatura.