Der Zweck von FSMC

Für ein Projekt brauche ich einen externen Speicher. Ich habe mich für 1 MB SRAM entschieden.

Ich verwende einen STM32 und habe den FSMC entdeckt. Ich hatte eine harte Zeit, den Zweck davon zu verstehen.

Was ich darüber gelesen habe, führte mich zu der Tatsache, dass es Ihnen durch die Verwendung einen direkten Speicherort gibt. So können Sie in den Speicher schreiben, ohne die spezifischen Pins (wie CE, OE, WE ...) steuern zu müssen. Es ermöglicht Ihnen auch, in SRAM zu schreiben/lesen, ohne GPIO-Schreibregister verwenden zu müssen, sodass Sie viel schneller sind. (Natürlich gibt es noch viel mehr Vorteile). Wenn ich richtig liege, denke ich, dass es eine sehr gute Idee ist, es zu benutzen.

Habe ich Recht, so zu denken? Habe ich es komplett falsch verstanden?

Was hast du gelesen? Haben Sie das entsprechende Dokument gelesen ?
Schneller ? Nö..
Ob der FSMC einen Vorteil bringt, hängt vom verwendeten STM32 ab. Zum Beispiel würde es auf keinem der Value Line-Produkte (M2-basiert) verwendet werden, aber es würde auf der Hochleistungslinie mit dem AHB-Bus einen Mehrwert bieten. Sie geben keine Details zu Ihrer Konfiguration an, daher ist es unmöglich, Ihnen zu helfen.
@JackCreasey "M2-basiert"? Ich bin mir nicht sicher, worauf Sie sich hier beziehen; Den Cortex-M2 gibt es nicht. Alle STM32-Mikrocontroller haben einen AHB, aber nicht alle unterstützen FSMC.
@duskwuff Entschuldigung ... Tippfehler ... meinte M3-basiert.
@JackCreasey Trotzdem werden die "Value Line" -Teile von ST nicht basierend auf dem ARM-Kern definiert, den sie verwenden. Alle Teile innerhalb einer Familie verwenden denselben Kern; "Value Line"-Teile haben typischerweise weniger SRAM/Flash, niedrigere Kerngeschwindigkeiten und/oder weniger Peripheriegeräte.
@duskwuff. Exakt.
Wenn Sie dies benötigen, haben Sie sich realistischerweise wahrscheinlich für die falsche Plattform entschieden. Es kann enge Regime der ultra-deterministischen Anwendbarkeit mit extrem geringem Stromverbrauch geben, aber wenn Sie mehr als ein paar hundert K RAM benötigen, sollten Sie sich Socs mit externem DDR ansehen (möglicherweise auf dem CPU-Paket gestapelt). Sie sind nicht wirklich teurer, manchmal sind sie sogar billiger. Sie sind in der Regel um Größenordnungen rechenfähiger, führen aber auch komplexere Software-Stacks aus, die als „Betriebssysteme“ bezeichnet werden und ihre eigenen Vorteile und Kopfschmerzen mit sich bringen.
warte, es soll nicht schneller sein? Ich schwöre, meins ist viel schneller mit FSMC. Dies gilt umso mehr, wenn Ihre Pins auf mehrere GPIOs verteilt sind

Antworten (1)

Habe ich Recht so zu denken? Habe ich es komplett falsch verstanden?

FSMC kann zum Speichern von Daten in einer flüchtigen Konfiguration verwendet werden. Bei einigen (nicht allen) STM32 ist FSMC einem Adressraum (bei 0x60000000) zugeordnet. Die Verwendung eines seriellen SRAM eignet sich am besten zum Speichern von Daten, auf die Sie keinen schnellen Zugriff benötigen. Wenn Sie es für Werte verwenden, die bei der Ausführung üblich sind, kann es Ihr Programm erheblich verlangsamen.

Sie müssen noch die Pins für die Verwendung mit FSMC konfigurieren und Ihren Kopf um die Schnittstelle wickeln und sie testen.

Hi @laptop2d Sicher, ich möchte nur Daten von einer Kamera speichern, damit ich sie später verarbeiten kann, und einige Bilder für ein TFT-Display. Ich habe verstanden, dass der FSMC einen Speicherplatz bereitstellt, sodass er sich auf der Programmierseite wie das Schreiben in den internen MCU-RAM verhält. Wenn ich es richtig verstehe, ist es für die MCU viel schneller, den FSMC alle Pins in der Hardware automatisch steuern zu lassen, als zu versuchen, alle Befehlspins manuell zu steuern, oder? Übrigens verwende ich eine STM32L496ZG-MCU und dieses SRAM: cypress.com/file/43811/download
Sie könnten es wie ein Rom verwenden und sich darauf verlassen, dass es langsam ist, aber es wäre im Adressraum und flüchtig. Das heißt, wenn Sie es für ein TFT-Display verwenden und das Bild häufig abrufen müssten, würden Sie jedes Mal, wenn Sie das Bild abrufen, eine Verzögerung haben. FMSC ist zwar etwas schneller, aber immer noch viel langsamer als RAM, da die Daten seriell gesendet werden. meta.stackexchange.com/questions/126180/…