Sobre detección de errores hay mucho en internet. Se me ocurre una forma rápida:
- Maestro envía el byte de tu dato (ejemplo 0xFA)
- Maestro envía el byte anterior pero más 0x55 (ejemplo 0xFA + 0x55 = 0x014f), pero solo envía el byte bajo (queda 0x4F)
- Esclavo recibe los dos bytes
- Al primer byte recibido le suma 0x55. Si el resultado coincide con el segundo byte recibido la comunicación fue exitosa
- Si hubo éxito, esclavo responde con 0x55
- Si hubo error, esclavo responde con 0xFF
El 0x55 es un 0b01010101 que si llega con error deformaría el cálculo significativamente, pero puedes elegir cualquier otro byte (0xAA su contraparte).
Hay muchas otras formas, distancias de Hamming, redundancia, pero creo que esa te sirve por ahora.