Tengo dos dispositivos que deben comunicarse a través de I2C. El maestro escribe algunos datos al esclavo, y luego debe leer una respuesta del esclavo.
Ni el esclavo ni el maestro conocen la longitud del mensaje que se debe recibir. En el Esclavo, esto no es un problema, configuro el DMA para que reciba 255 bytes (más de lo que el maestro escribirá en un solo mensaje), y luego espero que se levante la condición de PARADA para indicar el final de la transferencia.
En el Maestro no puedo averiguar cómo leer un mensaje del esclavo sin saber cuántos bytes se deben leer. ¿Hay alguna forma de hacer esto? Mi entendimiento es que el Maestro genera la condición de DETENER, por lo que no puedo usar eso.
Actualmente, acabo de leer un byte del esclavo que contiene la cantidad de bytes que se van a transferir, y luego hago otra lectura para esa cantidad de datos, pero estoy buscando una forma más eficiente y rápida.
Estoy usando MCU STM32L433 y he usado las bibliotecas LL para el código I2C con DMA para transferir los mensajes al periférico.
Saludos cordiales