1 votos

FXOS8700CQ - Arduino core I2C no funciona, SoftI2C sí

Utilizo las librerías del núcleo de Arduino en mi último proyecto (ATMega328P MCU)

Estoy tratando de hablar con un FXOS8700CQ a través de I2C. La lectura del registro 0x0D debería devolver 0xC7.

El método típico de la librería Arduino Wire,

Wire.beginTransmission(address);
Wire.write(subAddress);
Wire.endTransmission();
Wire.requestFrom(address, (uint8_t) 1);
uint8_t data = Wire.read();

da la siguiente respuesta incorrecta:

enter image description here

Usando una librería SoftI2C de fuera de la web obtengo la siguiente respuesta correcta:

enter image description here

  • ¿Cuál es la diferencia que hace que uno funcione y el otro no?
  • Estoy usando pull-ups de 10K, ¿son demasiado altos?

2voto

meds Puntos 271

Para responder a mi propia pregunta: Wire.endTransmission() envía un bit de parada, pero lo que necesitaba era un reinicio usando Wire.endTransmission(false)

Ahora funciona:

enter image description here

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X