Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 54

MICROS 32 BITS

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.

SDA – Serial Data. Es la vía de comunicación entre el maestro y el


esclavo para enviarse información.
SCL – Serial Clock. Es la vía por donde viaja la señal de reloj.
I2C es un protocolo de comunicación serial: envía información a través
de una sola vía de comunicación. La información es enviada bit por bit
de forma coordinada. Trabaja de forma síncrona,el envío de bits por la
vía de comunicación SDA está sincronizado por una señal de reloj que
comparten tanto el maestro como el esclavo a través de la vía SCL.
La información viaja en mensajes divididos en tramas de datos. Cada
mensaje lleva un trama con una dirección la cuál transporta la dirección
binaria del esclavo al que va dirigido el mensaje, y una o más tramas
que llevan la información del mensaje. También el mensaje contiene
condiciones de inicio y paro, lectura y escritura de bits, y los bits ACK y
NACK.
Memoria I2C
Ejemplo:

Diseñar un programa que permita enviar y recibir un


dato a través del modulo I2C.

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.

Como la comunicación del módulo es vía​ I2C, esto le


permite trabajar con la​ mayoría de microcontroladores.
En el módulo los pines SCL y SDA tienen
una resistencia pull-up en la placa para una conexión
directa al microcontrolador que estemos utilizando. Las
características adicionales incluyen un oscilador en chip
con una variación de ± 1% sobre el rango de
temperatura de funcionamiento.
SENSOR MPU6050
Los datos dentro del conjunto de registros internos de los sensores siempre se actualizan a la
frecuencia de muestreo. Mientras tanto, el conjunto de registros de lectura orientados al usuario
duplica los valores de datos del conjunto de registros internos. Esto garantiza que una lectura de
ráfaga de los registros del sensor leerá las mediciones al mismo instante de muestreo.
Cada medición es de 16 bits una escala definida.
Las mediciones de temperatura se escriben en estos registros a la frecuencia de muestreo como
se define en el Registro 25.
Registro 25 - Divisor de frecuencia de muestreo SMPRT_DIV

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

Registros 65 y 66 - Medición de temperatura TEMP_OUT_H y TEMP_OUT_L


Tipo: solo lectura:

La temperatura en grados C para un valor de registro dado se puede calcular como:

Temperatura °C = (Valor de registro TEMP_OUT) / 340 + 36.53


"Tenga en cuenta que las matemáticas en la ecuación anterior están en decimal."
SENSOR MPU6050
Registros 104 – Signal Path Reset SIGNAL_PATH_RESET
Este registro se utiliza para restablecer las rutas de señal analógica y digital de los sensores de
giroscopio, acelerómetro y temperatura.
El reinicio revertirá la ruta de señal de los convertidores y filtros analógicos a digitales a sus
configuraciones de encendido.
"Este registro no borra los registros del sensor." Los bits 7 a 3 están reservados.

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.

También podría gustarte