Realmente no hay un protocolo "general", lo que terminas usando depende mucho de la aplicación. Para que podamos darle una mejor respuesta, necesitamos entender un poco mejor sus necesidades. Menciona que le gustaría tener microcontroladores separados que se comunican entre sí como subsistemas.
Algunas preguntas sobre esta aplicación:
- ¿Habrá más de 2 microcontroladores en este proyecto?
- ¿Cuáles son sus requisitos de velocidad y rendimiento? ¿Qué tan rápido necesita llegar la información y con qué frecuencia está enviando / recibiendo datos?
Si respondió NO a la pregunta 1:
Si solo hay 2 microcontroladores en este proyecto, definitivamente puedes usar UART entre ellos. Si ambos necesitan iniciar la comunicación, use el control de flujo; de lo contrario, debería ser trivial enviar los datos en una dirección. En su mayor parte, debería ser "lo suficientemente rápido" dado que selecciona una de las velocidades de transmisión más altas. I2C y SPI normalmente solo son buenos para la arquitectura maestro / esclavo.
Si respondió SÍ (más de 2 controladores) a la pregunta 1:
- Si hay más de 2 microcontroladores en su proyecto, ¿cuál inicia las comunicaciones? ¿Solo será un controlador maestro (es decir, la arquitectura maestro-esclavo)? ¿O podría alguno de los subsistemas hablar en cualquier momento?
- ¿Es necesario que alguno de los subsistemas se comunique entre sí? por ejemplo: para los dispositivos A, B y C: A puede enviar a B y C, y B puede enviar a A y C, etc.
Así que ahora necesita algo más escalable donde pueda colocar dispositivos direccionables en un bus común. La respuesta a estas preguntas de seguimiento te ayudará a decidir entre I2C y SPI (maestro-esclavo) o algo así como CAN (maestro múltiple).
Lo más probable es que su microcontrolador tenga un periférico UART, los otros (especialmente CAN) pueden estar disponibles solo en chips de gama más alta. En cualquier caso, debería haber mucha documentación sobre cómo usar estos periféricos para mover bytes.