El propósito de FSMC

Para un proyecto, necesito tener algo de memoria externa. Fui por 1 MB de SRAM.

Estoy usando un STM32 y descubrí el FSMC. Me costó entender el propósito de esto.

Lo que leí al respecto me llevó al hecho de que al usarlo, te brinda una ubicación de memoria directa. De modo que puede escribir en la memoria sin tener que controlar los pines específicos (como CE, OE, WE...). También le permite escribir/leer en SRAM sin tener que usar registros de escritura GPIO, por lo que es mucho más rápido. (por supuesto, hay muchas más ventajas). Si no me equivoco, supongo que es una muy buena idea usarlo.

¿Tengo razón en pensar así? ¿Me equivoqué completamente?

¿Que leíste? ¿ Leíste el documento dedicado ?
Más rápido ? No..
Si el FSMC proporciona alguna ventaja depende del STM32 que esté utilizando. Por ejemplo, no sería útil en ninguno de los productos de línea de valor (basado en M2), pero proporcionaría valor en la línea de alto rendimiento con el autobús AHB. No proporcionas detalles de tu configuración por lo que es imposible ayudarte.
@JackCreasey "basado en M2"? No estoy seguro de a qué te refieres aquí; no existe tal cosa como el Cortex-M2. Todos los microcontroladores STM32 tienen un AHB, pero no todos admiten FSMC.
@duskwuff Lo siento ... error tipográfico ... significaba basado en M3.
@JackCreasey Aún así, las partes de la "línea de valor" de ST no están definidas en función del núcleo ARM que usan. Todas las partes dentro de una familia usan el mismo núcleo; Las piezas de "línea de valor" suelen tener menos SRAM/flash, velocidades de núcleo más bajas y/o menos periféricos.
@duskwuff. Exactamente.
Siendo realistas, si necesita esto, probablemente eligió la plataforma equivocada. Puede haber regímenes estrechos de aplicabilidad ultra determinista de potencia ultrabaja, pero, en general, si necesita más de unos pocos cientos de K de RAM, debe considerar los Soc que usan DDR externo (posiblemente apilados en el paquete de la CPU). No son realmente más caros, a veces son más baratos. Tienden a ser órdenes de magnitud más capaces de computación, pero también tienden a ejecutar pilas de software más complejas llamadas "sistemas operativos" que traen sus propios beneficios y dolores de cabeza.
Espera, ¿no se supone que sea más rápido? Juro que el mío es mucho más rápido con FSMC. esto es aún más cierto cuando sus pines se distribuyen en múltiples GPIO

Respuestas (1)

¿Tengo razón en pensar así? ¿Me equivoqué completamente?

FSMC se puede utilizar para almacenar datos en una configuración volátil. Algunos (no todos) STM32 tienen FSMC asignado a un espacio de direcciones (en 0x60000000). El uso de una SRAM en serie es mejor para almacenar datos a los que no necesita un acceso rápido. Si lo usa para valores que son comunes en la ejecución, podría ralentizar su programa considerablemente.

Todavía tiene que configurar los pines para usar con FSMC y entender la interfaz y probarla.

Hola @laptop2d Claro, solo quiero usar para almacenar datos de una cámara para poder procesarlos más tarde, y para algunas imágenes para una pantalla TFT. Entendí que la FSMC proporciona una ubicación de memoria, por lo que se comporta como escribir en la RAM interna de la MCU en el lado de la programación. Si lo entiendo correctamente, permitir que el FSMC controle todos los pines automáticamente en el hardware es mucho más rápido para la MCU que intentar pilotar cada pin de comando manualmente, ¿verdad? Por cierto, estoy usando un MCU STM32L496ZG y este SRAM: cypress.com/file/43811/download
Podría usarlo como una rom y contar con que sea lento, pero estaría en el espacio de direcciones y sería volátil. Eso significa que si lo usara para una pantalla TFT y necesitara buscar la imagen con frecuencia, tendría un retraso cada vez que buscara la imagen. FMSC puede ser un poco más rápido, pero mucho más lento que la RAM, ya que los datos se envían en serie. meta.stackexchange.com/questions/126180/…