STM32 HAL I2C y MLX90621

2

Estoy trabajando en un proyecto utilizando una placa de núcleo STM32F4 y un dispositivo MLX90621. Tengo un problema con respecto a la comunicación entre los dos que utilizan la biblioteca HAL I2C.

La EEPROM tiene dos dispositivos adentro, una EEPROM y el propio dispositivo térmico IR. Al usar la biblioteca HAL con la implementación I2C, puedo leer la EEPROM perfectamente pero no puedo leer el dispositivo en sí. Lo comprobé con el osciloscopio y el dispositivo no reconoce cuando quiero leerlo. ¿Cuál podría ser la causa?

Adjuntaré algunas imágenes de captura de osciloscopio a continuación y cómo deberían verse en la hoja de datos. Leyendo todo el cuadro:

Faltadereconocimiento:

    
pregunta Cezar Chirila

2 respuestas

2

De acuerdo con las especificaciones I2C, cuando se utiliza el llamado "formato combinado",

debehaber"INICIO repetido" entre la etapa de configuración (direcciones de inicio y detención internas y el número de bytes para leer) y la función LEER, pero no DETENER.

Cuando la interfaz se encuentra en STOP, "se olvida" de los parámetros de lectura enviados, por lo que la siguiente LECTURA independiente no sabe de dónde leer y los NAK.

    
respondido por el Ale..chenski
0

No sé si esto resuelve su problema, pero puedo decir por mis propios errores con I2C que si un esclavo no ACEPTA una solicitud, casi siempre es porque la dirección del esclavo I2C no es correcta. Tenga en cuenta que el último bit del primer byte de dirección es el bit R / W y, a menudo, debe cambiar la dirección de la hoja de datos un bit a la izquierda antes de ponerla en el bus.

    
respondido por el Stefan Wyss

Lea otras preguntas en las etiquetas