Realmente no hay un protocolo "general", lo que terminas usando depende en gran medida de la aplicación. Para que podamos darle una mejor respuesta, necesitamos entender sus requisitos un poco mejor. Usted menciona que le gustaría tener microcontroladores separados que se comuniquen 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 envía / recibe datos?
Si respondió NO a la pregunta 1:
Si solo hay 2 micrcocontroladores en este proyecto, definitivamente puede usar UART entre ellos. Si ambos necesitan iniciar la comunicación, use el control de flujo, de lo contrario, debería ser trivial enviar datos en una dirección. En su mayor parte, debe ser "lo suficientemente rápido" dado que selecciona una de las velocidades de transmisión más altas. I2C y SPI generalmente 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? ¿Será solo un controlador maestro (es decir, arquitectura maestro-esclavo)? ¿O alguno de los subsistemas podría hablar en cualquier momento?
- ¿Es necesario que alguno de los subsistemas se comunique entre ellos? 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.
Entonces, ahora necesita algo más escalable donde pueda colocar dispositivos direccionables en un bus común. La respuesta a estas preguntas de seguimiento lo ayudará a decidir entre I2C y SPI (maestro-esclavo) o algo así como CAN (multi-maestro).
Lo más probable es que su microcontrolador tenga un periférico UART, los otros (especialmente CAN) solo pueden estar disponibles 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.