"Backup-SRAM" vs. "Backup-Register"

Heute habe ich mir das STM32F205-Datenblatt angesehen . Diese MCU hat eine Funktion. außer 20 × 32-Bit-Sicherungsregistern verfügt es über 4 KB Sicherungs-SRAM. und aufgrund datenblatt:

Abbildung 1

Und schau dir das an:

Figur 2

Wird "Backup SRAM" nach dem Zurücksetzen gelöscht?

Nun, bisher ist "Backup SRAM" größer als "Backup-Register" und "Backup-SRAM" kann alles, was "Backup-Register" tun (außer nach dem Zurücksetzen verbleiben?). Gibt es einen Unterschied zwischen "Backup-SRAM" und "Backup-Registern"? Warum haben sie keine größeren "Backup-Register" anstelle von "Backup-SRAM" eingebaut? ist es nicht schneller? verbraucht es nicht weniger Strom?

Antworten (2)

Wenn Sie sich die Funktionssätze für jede Familie für alle STM32F-Teile ansehen, werden Sie feststellen, dass viele der Teilefamilien (z. ) haben ein batteriegestütztes Back-up-Register (BKP) und befinden sich in der batteriebetriebenen Backup-Domäne, die auch die Real-Time-Clock (RTC) enthält. Die Batterieversorgungsstifte waren bei jedem Paket auf den gleichen Stiften. Einige dieser Familien sind über 10 Jahre alt. Daher konzentriert sich ST sehr darauf, die Kompatibilität innerhalb von Teilefamilien und über Generationen vergleichbarer Familien hinweg aufrechtzuerhalten.

Daher sind batteriegepufferte Register seit seinen früheren Familien ein produktübergreifendes Merkmal vieler STM32F-Familien. Software kann sich also ziemlich darauf verlassen, dass sie von jüngeren Familien stammt, wenn sie von älteren Generationen stammt. Daher wäre es einfach, Code familienübergreifend zu portieren, und die Funktion würde wahrscheinlich aus diesem Grund beibehalten, selbst wenn andere batteriegestützte Speicher hinzugefügt würden.

Der BKP ist jedoch ein recht kleiner Bereich (z. B. STM32F101xx, STM32F102xx und STM32F103xx, STM32F105xx und STM32F107xx usw.) mit 42 16-Bit-Registern, die in 42 32-Bit-Wörtern gespeichert sind. Sie sind also nicht einmal zusammenhängend und daher nicht für die Speicherung von Variablen oder Code für allgemeine Zwecke geeignet. Um es zu verwenden, müssten Sie also explizit Werte in jedem Register speichern. Dies ist akzeptabel, wenn Sie es nur zum Speichern eines Zustands verwenden, der über einen Stromausfall hinaus bestehen muss. Es ist jedoch nicht so flexibel, wie wir es uns wünschen.

Das Erhöhen der Größe der Backup-Register wird bei der Code-Portierung nicht helfen, da der zusätzliche Platz im alten Code nicht verfügbar war. Sie haben auch keinen großen Nutzen, um die Unannehmlichkeiten bei der Verwendung der Sicherungsregister zu mindern, da vorhandene Apps dies gelöst haben.

Batteriegepufferter SRAM ist nicht für alle STM32F-Familien verfügbar, er ist relativ neu. ST hatte in seinen ursprünglichen STM32F-Familien kein EEPROM, daher war der BKP-Bereich ziemlich wichtig. Ich kann mir jedoch leicht vorstellen, dass eine kluge Marketingperson eine Produktnische identifiziert, die von viel mehr batteriegestütztem Speicher als den Registern profitieren würde. Machen Sie es außerdem zu einem großen Block "richtigen" Speichers. Dies könnte für Variablen innerhalb eines Programms verwendet werden, indem es dem Linker ermöglicht wird, es für Variablen zu verwenden. Es wären keine expliziten Aktionen erforderlich, um Werte im batteriegepufferten SRAM zu speichern, dies würde nur als Nebeneffekt des normalen Programmbetriebs geschehen. Es ist also viel einfacher zu verwenden und kann viel mehr Informationen enthalten.

Zusammenfassung:
Batteriegestützte Register waren bei STM32F-Familien von einigen der frühesten Familien. Es war wichtig, da es den Mangel an EEPROM mildert. Ich glaube, es wird aus Kompatibilitätsgründen beibehalten und um die Portierung von Code und Systemen auf neuere STM32-Familien zu vereinfachen. In vielen Fällen kann eine alte Anwendung neu kompiliert und mit neuen Bibliotheken verknüpft werden, und es wird „einfach funktionieren“.

Batteriegepuffertes SRAM ist eine neuere Innovation für STM32 und nicht in älteren Familien. Es ist einfacher zu bedienen als batteriegepufferte Kassen, flexibler und viel größer. Es erfordert jedoch eine Codeänderung, um es zu verwenden, daher ist es sinnvoll, batteriegepufferte Register beizubehalten.

Ein unterschiedlicher Stromverbrauch ist ein Vorteil, aber meiner Meinung nach nicht der Grund, warum es zwei verschiedene technische Ansätze gibt. Sie dienen der Kompatibilität oder erheblichen Verbesserung.

Der Backup-SRAM-Block und die Backup-Register werden von Vbat versorgt. Sie werden durch einen Reset nicht gelöscht. Ich denke, der Grund, warum sie beide haben, ist, dass Sie die Wahl zwischen einem kleinen Block (80 Bytes) oder einem größeren Block (4 KB) auf Kosten eines höheren Stromverbrauchs der Batterie haben. Abhängig von Ihrer Anwendung können Sie auswählen, was für Sie am besten geeignet ist. Soweit ich aus dem Datenblatt verstehen kann, machen sowohl Backup-Register als auch Baskup-SRAM dasselbe. Sie werden jedoch etwas anders aufgerufen, nicht dass es normalerweise eine Rolle spielt. Der Stromverbrauch ist wahrscheinlich das gleiche Pr-Byte. Die Möglichkeit zu haben, den 4k-Block herunterzufahren, wenn Sie ihn nicht verwenden, klingt also nach einer guten Sache.