Tengo una aplicación en mente en la que necesito comunicarme a través de SPI con un FPGA. Tanto el FPGA como el microcontrolador están bajo nuestro control, por lo que tengo la flexibilidad de definir el protocolo como mejor me parezca. Sin embargo, me preguntaba si existen buenos usos de ejemplo que funcionen bien.
Aquí está lo que estaba pensando. (orientado a bytes)
Master: <REG><WR+LEN><MSTR_DATA><CHK>
Slave : < 0 >< 0 ><SLAV_DATA><CHK>
REG : register within FPGA to read or write
WR : read / write bit
LEN : 7 bit payload length (not including REG,WR+LEN or CHK)
MSTR: master data if write mode.
SLAV: slave data if read mode.
MCHK: 8 bit checksum of MSTR_DATA (by master), (CRC8, XOR, mod 256 etc)
SCHK: 8 bit checksum of SLAV_DATA (by slave ), (CRC8, XOR, mod 256 etc)
¿Esto es viable? ¿Hay mejores ejemplos por ahí?
EDIT1: Algunas aclaraciones sobre los requisitos:
- El microcontrolador es para leer y escribir pequeños bloques de datos a / desde El FPGA.
- El FPGA apoyará operaciones de lectura / escritura en los registros.
- Los registros pueden tener muchos bytes de profundidad. (como un fifo) o autoincremento (el siguiente byte de lectura o escritura viene de el siguiente registro).
- me gustaría el operación incluyendo la suma de control / Ack de ocurrir en una sola transmisión.
- Me gustaría que esto tenga una sobrecarga baja, algunas operaciones se recuperarán o publicarán de 5 a 10 bytes. El más grande podría ser 127 o 64.