Comportamiento extraño de I2C con RTC y MPU6050

0

Encontré un comportamiento i2c muy extraño en mi proyecto.

Utilizo un Adafruit Feather M0 (3.3V) como maestro i2c y 3 esclavos (sensor de giroscopios MPU6050, DS3231 RTC, M24C01WP EEPROM) esquema a continuación

La EEPROM funciona sin fallas, el Gyro devuelve 0 en todos los registros existentes y el RTC solo funciona en minutos y segundos. La fecha y las horas siempre se devuelven mal.

Debido a Adafruit Feather M0 y la biblioteca Arduino estándar, el bus I2C funciona con 3.3 V a 100 kHz. Utilicé 1kOhm Pullups.

Todas las hojas de datos indican que los dispositivos son compatibles con 3.3v y 100kHz. También los 3 dispositivos tienen diferentes direcciones i2c.

Construí el dispositivo dos veces, así que no creo que el gyro o el rtc estén rotos.

Nuevamente los dispositivos responden a las solicitudes. Solo los valores son incorrectos.

MPU6050: enlace

DS3231: enlace

Edición: C1 está entre 3V3 y tierra, NO scl y datos

    
pregunta Canonip

1 respuesta

3
  1. 1 kΩ pullup a 3.3 V está fuera de especificación. La corriente máxima requerida para conducir cualquiera de las líneas bajas es de 3 mA.
  2. ¿Qué diablos está haciendo C1 allí? Eso va a arruinar las constantes de tiempo y juntar los bordes de una línea a la otra. Ni siquiera puedo imaginar qué alucinaciones llevaron a hacer esto.
respondido por el Olin Lathrop

Lea otras preguntas en las etiquetas