Tengo una Raspberry Pi y STM32F072. Lo que quiero hacer es muy simple: generar muchos datos en la Raspberry Pi y transferirlos al STM32.
Hay varias cosas que son importantes:
- El STM32 necesita tiempo para procesar datos, por lo que la Raspberry Pi debe enviar datos solo cuando el STM32 está listo para procesarlos.
- La comunicación debe ser robusta . Con esto quiero decir entrega garantizada y sin errores (debe estar presente algún tipo de corrección de errores). También quiero estar seguro de que la conexión puede permanecer viva indefinidamente.
- Preferible al menos 1 Mbit / s de velocidad.
Consideré usar SPI, I²C, UART y USB, pero todos comparten un problema común: todos son de un nivel demasiado bajo (nivel 1-2 del modelo OSI) y carecen de control de flujo (por lo tanto, no son robustos ).
-
¿Hay implementaciones de algunos protocolos de transporte preferiblemente livianos que se puedan usar?
-
Si tengo que implementar un protocolo de transporte de este tipo, ¿qué protocolo subyacente será el más sencillo de usar? Aquí están mis pensamientos; corríjame si me equivoco en alguno de estos:
- UART es simple, pero lento en Raspberry Pi. Creo que puedo usar un convertidor de USB a UART (por ejemplo, ch340) para hacerlo más rápido, pero ¿es una buena idea?
- SPI es rápido y simple. Sin embargo, hay un inconveniente: Raspberry Pi admite SPI solo en modo maestro, lo que hace que el protocolo sea un poco más complicado.
- I²C probablemente esté bien, pero no está claro por qué podría ser mejor que SPI en mi caso.
- El USB es rápido, tiene corrección de errores y entrega garantizada incorporada, pero es muy complejo.