Frage:
Warum gibt es in STM32F4-MCUs kein EEPROM?
scico111
2019-02-20 04:14:07 UTC
view on stackexchange narkive permalink

Warum gibt es in den MCUs der STM32F4-Serie kein EEPROM?

Meistens habe ich Microchip-MCUs und sie haben EEPROM in sich, aber ich habe gerade herausgefunden, dass es in den STM32F4-MCUs nicht verfügbar ist ... Und es sieht so aus, als ob es nicht in anderen Familien wie 'F0, F1, F2 und F3 istentweder.

Gibt es eine Möglichkeit, Parameterwerte ohne EEPROM zu speichern?

"Was könnte ein guter Grund sein?"Fragen passen nicht in die Stack Exchange-Mission, und "ein so wichtiger Speicherbereich" ist sehr ** anwendungsabhängig **.Sieht aus wie kein EEPROM in den STM32L4, aber die L0 und L1 haben es.Oder Sie können einen zusätzlichen Chip hinzufügen, wenn Sie einen Bedarf haben, für den die Emulation nicht funktioniert.
Ist es sicher genug, einen emulierten EEPROM gegen einen externen EEPROM-Chip zu verwenden?
Das wäre völlig * anwendungsabhängig *.Da Sie nichts darüber gesagt haben, was Sie für eine Frage tun möchten, bei der die Einzelheiten äußerst detailliert berücksichtigt werden müssten, kann Ihnen niemand helfen.
Die wahrscheinlichste Erklärung ist, dass die Anwendung (en), für die der Chip ursprünglich entwickelt wurde, dies nicht erforderte.Denken Sie daran, dass JEDER jemals entwickelte Chip für eine bestimmte großvolumige Anwendung entwickelt und erst später in den allgemeinen Katalog des Herstellers aufgenommen wurde.Der Overhead eines neuen Chipdesigns ist einfach zu hoch, um Chips spekulativ entwerfen zu können.
"so ein wichtiger Speicherbereich" - wichtig für wen?Ich arbeite derzeit an einem Projekt mit einem STM32F4-Gerät und hätte für ein bisschen internes EEPROM überhaupt keine Verwendung.Die zusätzlichen Kosten, die dem Gerät entstehen würden, würden jedoch sicherlich einen Unterschied machen.
Kleine Mengen von irgendetwas mögen nicht teuer sein, aber im Maßstab von Millionen, in Bezug auf die Gesamtstückkosten, kann es sehr bedeutend sein.
Dafür benötigen Sie die L0-Serie.Das emulierte EEPROM im Programm-Flash ist sehr mühsam zu bearbeiten. Ich würde dringend empfehlen, sich davon fernzuhalten.
Vielleicht begründen die Hersteller, dass es besser ist, Kunden, die ein EEPROM benötigen, die geringen Kosten für das externe Hinzufügen zu ermöglichen, als alle Kunden mit den Kosten für das interne EEPROM zu belasten, die viele oder die meisten Kunden nicht benötigen.
Drei antworten:
duskwuff -inactive-
2019-02-20 04:20:56 UTC
view on stackexchange narkive permalink

Alle STM32-MCUs verfügen über einen selbstprogrammierbaren Flash-Speicher.Wenn Sie Benutzereinstellungen speichern müssen, können Sie diese in einem Flash-Bereich speichern.

ST bietet eine Bibliothek zur Durchführung der EEPROM-Emulation auf dem STM32F4.(Es gibt ähnliche Bibliotheken auch für die meisten anderen Teile.) Auch wenn Sie nicht vorhaben, diese Bibliothek zu verwenden, kann es interessant sein, ihren Anwendungshinweis zu lesen, der erklärt, wie es funktioniert. P.>

Dies ist richtig, aber es ist ein schlechter Ersatz.Die CPU kann nicht ausgeführt werden, während der Flash geschrieben oder gelöscht wird, und das Löschen dauert lange.Es gibt Tricks (Multi-Flash-Bänke, RAM-Funktionen), aber keine ist so ordentlich wie ein internes EEPROM wie AVR und PIC.
@Jon von 577 Microchip PIC32- und Atmel 32-Bit-MCUs, die derzeit in Produktion sind, haben nur 63 ein Daten-EEPROM.https://www.microchip.com/ParamChartSearch/chart.aspx?branchID=211&popular=1
@Jon, Nicht sicher, warum Sie glauben "Die CPU kann nicht ausgeführt werden, während der Flash geschrieben oder gelöscht wird ..." Ich habe diese Methode auf einem F1-Gerät verwendet.Wenn die CPU während eines Schreibvorgangs in Flash angehalten hätte, hätte ich es wahrscheinlich bemerkt
@user28910 ist keine Ansichtssache.Es befindet sich in der Produktdokumentation.Vielleicht haben Sie ein Dual-Bank-Gerät verwendet (die größeren).Diese können von einer Bank aus ausgeführt werden, während in eine andere geschrieben wird. Dies bedeutet jedoch, dass Sie den gesamten relevanten Code in der richtigen Bank aufbewahren müssen.
@Bruce Abbott interessanter Punkt.Ich wusste, dass es Chips ohne EEPROM gibt, wusste aber nicht, dass sie so umfangreich sind.
@user28910 Er bedeutet, dass kein Code von derselben Flash-Bank ausgeführt werden kann, die geschrieben / gelöscht wird.Dies gilt für jede MCU auf dem Markt, und Sie werden es auf jeden Fall bemerken, da sie auflegt oder durcheinander gerät.Es ist durchaus möglich, einen Flash-Schreibtreiber von einer Bank aus auszuführen, während eine andere programmiert wird.Oder um den Code aus dem RAM auszuführen.Es ist immer noch das EEPROM eines armen Mannes und eine beschissene Lösung.
Dies ist zwar eine nützliche praktische Lösung für das eigentliche Problem des OP, beantwortet jedoch nicht die Frage "Warum" und hätte nicht als Antwort akzeptiert werden dürfen.IMnsHO.
elchambro
2019-02-20 10:42:05 UTC
view on stackexchange narkive permalink

EEPROM ist in Bezug auf die Zellengröße sehr teuer (was zu einem größeren Chip und damit zu höheren Kosten führt).Die Hersteller versuchten, das EEPROM loszuwerden, sobald die ersten Flash-basierten Controller veröffentlicht wurden.

Insbesondere wenn Sie die unterschiedlichen Benutzeranforderungen für die Menge des EEPROM berücksichtigen, ist es trotz der Einschränkungen sinnvoller, in Flash zu emulieren.Im Gegensatz zu (zum Beispiel) einem festen 512-Byte-EEPROM, wenn ein Kunde nur 20 Byte verwendet, aber für 512 zahlt.

Es gibt jedoch einen Datenblitz, der sich in Bezug auf Schreibzyklen usw. dem EEPROM ziemlich ähnlich verhält. Oft müssen jedoch viele Bytes gelöscht werden, z. B. Blöcke mit jeweils 8 Bytes.Während Programm-Flash große Löschgrößen haben wird.
Jarhmander
2019-02-20 21:46:19 UTC
view on stackexchange narkive permalink

Wenn es wichtig ist, einen nichtflüchtigen Speicher zu haben, der programmierbar und auf Byte-Ebene löschbar ist (im Gegensatz zum Flash-Speicher, bei dem ganze Sektoren / Seiten gelöscht werden müssen), schauen Sie sich den STM32L0 anund STM32L1 Serie.Darin ist ein echtes Daten-EEPROM eingebettet.



Diese Fragen und Antworten wurden automatisch aus der englischen Sprache übersetzt.Der ursprüngliche Inhalt ist auf stackexchange verfügbar. Wir danken ihm für die cc by-sa 4.0-Lizenz, unter der er vertrieben wird.
Loading...