microcontroladores múltiples y un ram para usar como un búfer circular para la intercomunicación, ¿cómo hacer y seleccionar?

0

Estoy estudiando el desarrollo de un hardware compuesto de módulos, inicialmente pensé en un bus serie como ICSP, I2C o incluso CAM para comunicarme entre módulos, pero me pregunto si no podría usar un ram en común entre procesos para cree búferes circulares para cada módulo y sus estructuras de datos serializados, por lo que los módulos estarían presentes a través de espacios reservados para identificarlos y cada búfer circular se definiría de acuerdo con la presencia del módulo.

Estos módulos serían, por ejemplo, un GPS controlado por un Cortex-M0 (existiendo una alternativa a un ESP8266 A7), un ESP8266 A6 se usaría para la comunicación celular y otro para la comunicación WiFi, por lo que el módulo GPS depositando en su memoria intermedia los datos recopilados y el GPS preprocesado, los otros módulos inalámbricos también mantendrían la comunicación a través de sus memorias intermedias en esta memoria RAM, con pináculos conectados a la corteza central-M que activan alertas ISR cuando se escuchan casos de emergencia que deben ser priorizado.

Bueno, la gran pregunta es cómo usar una memoria RAM compartida entre estos módulos. Sé que hay chips de línea Cortex-M que permiten tales características, pero ¿habría tal posibilidad con el ESP8266?

Suponiendo dos escenarios:

Una primera en la que todos los módulos se basarían en Cortex-M, eligiendo los más adecuados para trabajar, respectivamente, la recopilación de datos GPS, la comunicación GSM / GPRS y la comunicación WiFi / BlueTooth, y finalmente un módulo central de procesamiento y registro a través de la tarjeta SD.

Y un segundo módulo tiene esta mezcla entre Cortex-M y ESP8266, con ESP8266 responsable de la comunicación inalámbrica y por GPS, y Cortex-M para el procesamiento central y el registro de datos.

¿Cuáles serían los modelos Cortex-M disponibles para usar con memoria RAM externa, cómo adaptar el ESP8266 para tal uso? Y, por supuesto, ¿qué RAM externa podría utilizarse?

    
pregunta Delfino

2 respuestas

5

Hay muchos problemas aquí. La primera es que muchos de estos módulos ya se comunican con interfaces seriales, por lo que si desea dedicar una interfaz de memoria a cada dispositivo, tendrá que agregar algo de lógica (tal vez incluso microcontroladores adicionales) para traducir. Entonces, la mayoría de las RAM son de puerto único, por lo que no puede conectarlas directamente a dos dispositivos. O necesitará un árbitro o necesitará una RAM de doble puerto muy cara (y bastante pequeña).

O simplemente puede usar los puertos seriales de hardware en su microcontrolador e implementar sus búferes circulares con software en la memoria RAM del chip en la placa.

Ahora, si su chip no tiene suficientes puertos serie de hardware para todos los dispositivos que desea conectar, entonces podría valer la pena agregar un microcontrolador periférico secundario que tenga más puertos serie y pueda realizar operaciones en nombre de Controlador principal y luego respuestas agregadas. Algo así como la serie xmega de Atmel podría ser una buena opción, ya que estos chips tienen muchos y muchos puertos en serie (hasta 8 UART, múltiples controladores I2C y SPI, una cantidad decente de RAM, funcionarán a 32 MHz en el oscilador interno, etc. ). Entonces, todo lo que necesita es una interfaz relativamente rápida entre los dos microcontroladores. Un bus rápido UART o I2C sería razonable. O incluso podría usar USB si su controlador principal puede actuar como un host USB.

    
respondido por el alex.forencich
1

Hay es un tipo de RAM utilizada para este tipo de cosas, es memoria de doble puerto. Un solo banco de RAM que puede tener dos o más interfaces independientes para que se pueda acceder simultáneamente a múltiples dispositivos (o más exactamente a múltiples ubicaciones de memoria).

Sin embargo, hay un problema: nunca he visto ninguna memoria de puerto dual (o múltiple) que no haya utilizado una interfaz paralela (por lo que más de 20 pines cada , 8/16/32 etc. para datos, varios para controles y lotes para las direcciones de memoria).

Como suena a que tratas con serial (y slow serial en eso), creo que te serviría más si solo usaras la memoria integrada de un micro y la implementación del búfer en el software ( y, a menos que necesite decenas de megabits, es probable que incluso pueda usar el flash incorporado, aunque la resistencia de escritura puede ser un problema: TI fabrica algunos chips, además del SRAM, el FRAM en lugar del flash, afirman algo así como un billón de R / Ciclos de W)

    
respondido por el Sam

Lea otras preguntas en las etiquetas