Forum: Mikrocontroller und Digitale Elektronik Wann EEPROM/Speicher sinnvoll?


von Cell85 (Gast)


Lesenswert?

Guten Morgen,

ich stehe nun vor einem Konzept für ein neues Projekt das ich gerne 
entwickeln würde. Ich verwende einen STM32F207 IGT6 (weil ethernet 
benötigt wird)


Background:

Ich möchte via USB von meinem Rechner eine Tabelle auf das Board laden 
(Modbus Kommunikationsregister Info's und Konfigurations Parameter) 
welche nach belieben änderbar sein soll.

Eine µC hat ja einen begrenzten Schreibzyklus. Ist dann natürlich nötig 
die Tabelle auf einen externen Speicher wie bspw. einem EEPROM oder 
einer SD-Karte aufzuspeichern?

Wenn man realistisch ist, wird die Konfigurationsdatei max 200K -300KB 
groß und max. 100mal im Lebenszyklus der Hardware geändert.

Ich hab desweiteren vor, Daten die ich vom Analogeingang, Modbus-RTU und 
vom Ethernet bekomme auf eine 2GB SD-Karte zu speichern, da diese später 
aufm PC als Statistik visualisiert werden soll.

Fragen:
1) ist es erforderlich einen eeprom zu nutzen oder gibts es in der mcu 
einen für solche zwecke geeigneten Speicher?

2) oder sollen die Daten eher auf ein 1Mbyte großes SPI EEPROM oder kann 
es auch auf die SD-Karte?

Die Tabelle soll am Anfang des Systemstarts in die entsprechende 
Funktion geladen werden. Jede Änderung der Daten erfodert einen Neustart 
am Gerät also kein Hotswap.

Für eure Erfahrungen und Vorschläge wäre ich sehr dankbar!

MfG
Sven


Ich programmiere seit 2 jahren eigentlich 80c51 und PIC, erst seit 
diesem Jahr mach ich was mit dem Cortex-M3

von (prx) A. K. (prx)


Lesenswert?

Cell85 schrieb:

> Eine µC hat ja einen begrenzten Schreibzyklus.

Ja, aber du schreibst selbst:

> und max. 100mal im Lebenszyklus der Hardware geändert.

Das kann das onchip-Flash locker wegstecken. Ist also eher eine 
Grössenfrage. Wenn alles zusammen in 1MB Flash passt, dann wär es wohl 
der einfachste Ansatz, einen Teil vom internen Flash dafür zu verwenden.

> Die Tabelle soll am Anfang des Systemstarts in die entsprechende
> Funktion geladen werden.

Wohin geladen? 200-300KB bedeutet externes RAM dafür. Da wärs doch wohl 
einfacher, das Zeug steckt im internen Flash und kann direkt verwendet 
werden. Und bevor man nur fürs laden aus einem seriellen Flash 
externes RAM anschliesst, kann man ebenso gut externes parallel 
angebundenes Flash verwenden.

von Cell85 (Gast)


Lesenswert?

A. K. schrieb:
> Wohin geladen? 200-300KB bedeutet externes RAM dafür. Da wärs doch wohl
> einfacher, das Zeug steckt im internen Flash und kann direkt verwendet
> werden.

Ich denke das es in den internen Flashreinpassen würde.
Mit geladen meine ich nicht "ins Ram laden" da hab ich mich wohl falsch 
ausgedrückt. Ich meinte dass die Werte dann entsprechenden variablen 
zugeordnet werden: Var1 befindet sich auf 0xFFF0012 im eeprom ...

Wenn ich die 300K in den RAM laden würde wäre ja kein Platz mehr für 
nichts :) .

Ich frage mich nur was passiert wenn das Programm mit der Zeit zunimmt 
und der Flash von 1Mbyte des STM32 dann fast voll ist.

Für die Zukunft wäre es ja dann doch besser die Daten auf einen externen 
eeprom zu schreiben. frage ist dann gehts auch auf die SD-Karte?

von Cell85 (Gast)


Lesenswert?

Die Daten kann man auch als "LookUpTable" bezeichnen.

von -ax11005-- (Gast)


Lesenswert?

Wenn das ganze auch ohne SD-Card funktionieren kann/muß, dann hat Deine 
Tabelle wohl nichts auf der SD-Card verloren. Da könnte es ja vielleicht 
auch mal ein Wackelkontakt geben oder die Card funktoniert nicht 
richtig.
Da gibt es ja hier einiges zu lesen im Forum.

Ein ext. Seriell Eeprom ist dann wohl die richtige Wahl.

Für ein Projekt, an dem ich gerade entwickle, habe ich ein Seriell 
Eeprom genommen, da das auch mehr Zyklen kann, als das Eeprom im µC, und 
ich lieber 1 Euro für das ext. Eeprom ausgebe, als das es später 
Probleme gibt.
Bei großen Stückzahlen spielt sicher wieder "€" da rein. Mir ist aber 
die Funktion wichtiger.

Wenn es nur ein Prototyp ist, mal noch nicht so ganz alte ausgemusterte 
Mainboards oder elektronische Bilderrahmen durchsehen. Da ist evt. schon 
eines drauf, was man dann wieder verwenden kann.

von Cell85 (Gast)


Lesenswert?

hey find ich cool!

welches eeprom hast du denn genommen (Hersteller/Typ)? Ich überlege mir 
dann auch gleich noch nen externen RAM zu nehmen also :

externes ram: ISSI 61LV51216 (1MB)
externes flash: ST M25P64-VMF6P (8MB)

Ich orientier mich dabei auch an mein STM32 Evalboard das diese 
Komponenten bereits verbaut hat.

http://www.keil.com/support/man/docs/mcbstm32e/mcbstm32e_to_xmemory.htm

von Herbert K. (avr-herbi)


Lesenswert?

Hallo,
von der Kapazität sind die sicher bei Dir zu klein, keine Frage
(größere findest Du sicher selbst):

FM24C04A
http://www.ramtron.com/files/datasheets/FM24C04A_ds.pdf

FM25CL64
http://www.ramtron.com/files/datasheets/FM25CL64_ds.pdf

Ein Platinenlayout wäre jedenfalls identisch zu den Standardtypen von 
z.B. Atmel
http://www.atmel.com/dyn/resources/prod_documents/doc3256.pdf

Nicht enttäuscht sein, ... soll nur so ein Denkanschoß sein.

Viele Grüße und 1 schönen 1. Advent

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.