Tengo dos tablas:
Board M: Master board
Junta S: Junta de esclavos
Estoy intentando implementar un protocolo de comunicación UART (longitud de datos = 8 bits) entre ellos. La tarjeta maestra M enviará las solicitudes a la tarjeta esclava S y esta última responderá.
Ejemplo 1:
Tablero M (Tx) - > GET_VALUE - > (Rx) S tablero
S board (Tx) - > 150 - > (Rx) M board
Ejemplo 2:
Tablero M (Tx) - > GET_STATUS - > (Rx) S tablero
S board (Tx) - > I_AM_READY - > (Rx) M board
Ejemplo 3:
Tablero M (Tx) - > GET_STATUS - > (Rx) S tablero
S board (Tx) - > I_AM_BUSY - > (Rx) M board
Tengo algunas preguntas:
1. ¿Es una buena opción usar un búfer de anillo FIFO en UART ISR?
2. ¿Cómo elegir el número de bytes intercambiados entre los dos tableros?
3. ¿Cómo elegir el tamaño del búfer?
4. ¿Qué modo es mejor para este tipo de comunicación? Half dúplex o dúplex completo?
5. ¿Qué tipo de datos debo usar? Debo definir algunas macros como esta:
#define GET_VALUE 0x01
#define GET_STATUS 0x02
o simplemente uso esta implementación:
#define BUFFER_LENGTH = x;
uint8_t buffer[BUFFER_LENGTH] = "GET_VALUE\n";