MS5611 envía un byte adicional después de NACK

0

Actualmente estoy intentando usar el MS5611 (sentado en un CJMCU-117) sobre I²C con libopencm3 en un STM32F103C8.

Cuando hago una lectura, el esclavo envía un byte adicional (0xFF) después de que el maestro ha enviado un NACK. Esto sucede tanto para la lectura de PROM (2 bytes) como para la lectura de ADC (3 bytes).

El siguiente Código da como resultado la siguiente forma de onda, la hoja de datos [1] muestra en la página 13 cómo debería ser.

// Send
i2c_transfer7(I2C2, 0x77,
    commandPtr, 1,
    nullptr, 0);

// Read
i2c_transfer7(I2C2, 0x77,
    nullptr, 0,
    bufferPtr, 3);

¿Puedealguienayudarmearesolveresto?

[1] enlace

    
pregunta Tonke

1 respuesta

1

La función i2c_transfer7 de libopencm3 se implementa utilizando I2C con sondeo, pero no sigue el manual de referencia de STM32 (RM0008, página 759, método 2), que establece el manejo especial de 1 y 2 bytes recibidos. Esto da como resultado la eliminación del bit ACK en el momento incorrecto.

Consulte enlace

    
respondido por el Tonke

Lea otras preguntas en las etiquetas