Speichervorschläge für MSP430

Ich entwickle eine Messanwendung mit dem TI MSP430 und würde gerne einige Vorschläge dazu hören, welche Art von Speicher ich verwenden kann.

Die Idee ist, es für die Protokollierung während einer bestimmten Zeit zu verwenden und die Daten dann auf einen PC herunterzuladen, wenn das Gerät über USB angeschlossen ist. Es wird geschätzt, dass bis zu 5 MB Daten gespeichert werden können, wobei jede Stichprobe etwa 25 Byte Daten umfasst.

Würde ein einfacher EEPROM-Chip ausreichen oder gibt es da draußen etwas Besseres?

Es sieht so aus, als ob Sie das Gerät die meiste Zeit mit Strom versorgt haben, wenn Sie gültige Daten haben. Ist ein batteriegepuffertes SRAM dann nicht besser geeignet als ein EEPROM (oder besser Flash)?

Antworten (5)

Ich habe die seriellen Flash-Chips der AT45D -Serie verwendet. Sie haben einen internen SRAM-Puffer, um eine Seite zum Löschen/Programmieren einzurichten. SPI-Schnittstelle zum Ein- und Auslesen von Daten.

5 MByte sind eine Menge zu speichernder Daten. Das Auslesen über USB impliziert, dass Sie eines der neuen Teile mit eingebauter USB-Geräteschnittstelle verwenden. Wenn nicht, verwenden Sie einen USB-zu-Seriell-Konverter (FTDI oder ähnliches) und sind auf die asynchrone serielle Schnittstelle beschränkt Datenraten zum Auslesen der Daten.

Haben Sie darüber nachgedacht, eine SD-Speicherkarte an den MSP anzuschließen, die Daten darauf zu speichern und dann die Karte zum Lesen der gespeicherten Daten in den PC zu verschieben. Ich habe keine Schnittstelle zu diesem Gerät geschrieben, aber es gibt viele, die eine haben.

Ja, ich werde eines der Teile mit eingebettetem USB verwenden. Das Ideal wäre, das MSC-Protokoll zu verwenden, aber das fügt meinem Projekt viel Komplexität hinzu. Ich werde mich wohl mit den HID-Datenübertragungsraten abfinden. Ich dachte an SD-Karten, aber das fügt dem Gehäuse zusätzliche Komplexität hinzu, da es spritzwassergeschützt sein muss.
Ich würde diese Route vorschlagen, da SD-Karten Ihnen den meisten Speicherplatz bieten. Sie sagen jetzt 5 MB, aber wenn Sie später mehr wollen, stoßen Sie an die Grenzen des seriellen Flash (und Sie liegen weit über den Grenzen des EEPROM). Wenn Wasserdichtigkeit ein Problem ist (und Sie eine geeignete USB-Option haben, was der Fall zu sein scheint), können Sie Ihre SD-Karte über USB auslesen und dauerhaft in das Gehäuse stecken. Ich habe einige Designs gesehen, die die SD-Karte an die Platine gelötet haben (Hinweis: Das hat funktioniert, aber ich empfehle es nicht).
Verstanden, macht Sinn. Ich werde diese Option in Betracht ziehen. Vielen Dank
Gibt es einen speziellen Chip, der sich um die SD-Schnittstelle kümmert und das Dateisystem implementiert, oder müsste ich noch ein Dateisystem und die MSC-Klasse mit dem MSP430 implementieren?
@Padu - Ich hatte das Gefühl, dass dies etwas mehr Platz und Formatierung als ein Kommentar benötigt, also habe ich meine Antwort als Antwort hinzugefügt.
@Ian - Ich habe eine Antwort zur SD-Schnittstelle hinzugefügt. Sie können sie oder ihre Links gerne in Ihre Antwort aufnehmen.

Serial Flash ist EEPROM in dieser Anwendung überlegen. Atmel macht eine großartige Aufstellung . Ihre Wahl hängt weitgehend von zwei Dingen ab: (1) Ihrer Notwendigkeit, Ihre Protokolle auf dem Mikro zu bearbeiten/sektorieren, und (2) Ihrer RAM-Verfügbarkeit auf dem MSP430.

Flash kann im Gegensatz zu EEPROM nur von 1 auf 0 geschrieben werden. Um die Daten von 0 auf 1 zu ändern, muss ein Abschnitt des Teils gelöscht werden, der normalerweise nur für Seiten oder Datenblöcke verfügbar ist. Sie müssen diese Seite im RAM puffern, die Seite löschen, Ihre Bearbeitung im RAM vornehmen und sie dann zurückschreiben, wenn Sie etwas ändern möchten.

Die AT45D-Serie bietet, wie bereits erwähnt, eine Reihe von Teilen, die RAM-Puffer auf dem Chip haben, um diesen Prozess zu erleichtern, ohne RAM auf dem Mikrocontroller zu verwenden.

Am Ende ist die gesamte Serie Pin-kompatibel, also legen Sie einfach einen 8-SOIC-Footprint (150 mil) an, und dann können Sie die Teile austauschen, wenn Sie später andere Optionen benötigen.

Ich stimme dem zu, was Sie sagen, aber Sie könnten die Daten einfach von der Quell-Flash-Seite auf die Ziel-Flash-Seite kopieren und dabei die Bytes ändern, die Sie ändern möchten, bevor Sie die Quelle löschen.
@mjh - Was ist, wenn Ihre Quelle und Ihr Ziel identisch sind und/oder Sie keine freie Seite haben? Auch das ist langsam: Lesebefehl senden, Adresse senden, Byte lesen, ggf. ändern, löschen, Schreibbefehl senden, Adresse senden, Byte schreiben, x256, x512 oder x4k wiederholen. Ihre andere Option besteht darin, einen Lesebefehl zu senden, eine Leseadresse zu senden, für N Zyklen zu takten, die zu ändernden Bytes zu ändern, zu löschen, einen Schreibbefehl zu senden, eine Schreibadresse zu senden und für N Zyklen zu takten. Dies dauert etwa 1/3 der Zeit, die der RAM-Puffer benötigt.
Warum sollte ein Datenlogger jemals die Protokolle auf dem Mikro bearbeiten müssen?
@davidcary - Wenn Ihr Datenlogger nur einen langen Bytestrom aufzeichnet, haben Sie Recht - Sie müssen nie Änderungen vornehmen. Wenn es mehrere Konfigurationen oder Protokolldateien gibt, die möglicherweise Seiten-/Blockgrenzen überschreiten, oder wenn Sie Änderungen an einem Header der Datei am Ende vornehmen möchten, müssen Sie den Speicher bearbeiten, ohne die vorhandenen Daten zu löschen.
An diesem Punkt muss ich nur mehrere Protokolldateien erstellen, ohne sie zu ändern, außer wenn der Benutzer das Gerät an USB anschließt und es herunterlädt, dann muss ich das alte Protokoll löschen (oder diesen Speicherplatz wieder verfügbar machen).
@Padu - In diesem Fall sind Sie wahrscheinlich mit allen Optionen einverstanden. Ich habe Ihre ziemlich allgemeine Frage zu "Welche Art von Speicher kann mit dem MSP430 verwendet werden" beantwortet und nicht zu einer bestimmten Datenlogger-Anwendung.

Ich würde die AT25D-Serie vorschlagen, da sie etwas einfacher zu bedienen erscheint als die AT45D. Obwohl es etwas langsamer ist und nicht so viele Datenübertragungsmöglichkeiten oder die SRAM-Puffer bietet. Es hat den Vorteil, dass es weniger teuer ist und dennoch schnell genug für die meisten Anwendungen wie die Datenprotokollierung ist.

Wenn Sie 5 MB Daten benötigen, ist es unwahrscheinlich, dass ein EEPROM funktioniert, da sie normalerweise in < 1 Mbit-Paketen geliefert werden. Flash-Chips von Atmel unterstützen bis zu 64 Mbit oder 8 MB.

Ich bin nicht einverstanden. Der kleinste löschbare Abschnitt auf dem AT25D ist eine 4-kB-Seite, und nur wenige Mikros haben so viel freien RAM zur Verfügung. Ich habe Chips der AT25FS-Serie verwendet, die eine kleine Seitenlöschung (256 Byte) haben, aber weniger als 5 MB groß sind. Wenn Sie sich für das gepufferte System entscheiden, müssen Sie sich nicht so viele Gedanken über die RAM-Verwaltung machen. Wenn Sie Ihre Protokolle nicht bearbeiten müssen, funktioniert die AT25-Serie natürlich einwandfrei.
Ja, große Löschseiten sind ärgerlich, wenn eine Anwendung ein Byte schreiben und dieses Byte später ändern muss. Aber warum sollte ein Datenlogger das jemals tun müssen? Es scheint mir, dass es für Datenerfassungsanwendungen keinen Unterschied macht, ob der kleinste löschbare Abschnitt 256 Byte oder 1 Megabyte beträgt.

[Dies ist eine Antwort auf die Kommentare nach Ians Antwort].
Eine SD-Karte ist nur ein SPI-Gerät, daher ist kein Chip/Schnittstelle erforderlich. Andere Protokolle umfassen eine 2-Draht-Schnittstelle (wie I2C) und eine 4-Draht-Schnittstelle (mit einem komplexen CRC), aber SPI wird am häufigsten verwendet.

Hier ist ein SD-Karten-Anwendungshinweis für den MSP430 von TI verfügbar . Es ist kurz, enthält aber Beispielcode. Es übernimmt das Lesen und Schreiben in verschiedene Sektoren auf der SD-Karte, was möglicherweise alles ist, was Sie möchten, wenn Sie es nicht an einen PC anschließen. Sehen Sie sich auch diese Implementierungen von Foust (empfohlen) oder Evans von MSU an.

Sobald Sie die grundlegenden Funktionen zum Lesen und Schreiben eines Sektors haben, können Sie entweder ein einfaches, benutzerdefiniertes Dateisystem über USB abstrahieren oder eine vorhandene Dateisystembibliothek verwenden. FatFS , EFSL oder DOSFs sind Optionen für Letzteres. Wenn die Implementierung aller erforderlichen Funktionen zu schwierig erscheint, denken Sie daran, dass alle bis auf wenige Stubs sein können/werden.

Das Dateisystem wird jedoch bis zu einem gewissen Grad über Ihre USB-Schnittstelle abstrahiert. Dies ist einfacher, wenn Sie eine echte Dateisystembibliothek haben und sich Ihre Karte in einem lesbaren Dateisystem befindet, aber das erfordert Arbeit. Wenn Sie Ihr eigenes "Dateisystem" schreiben und Arbeit/Zeit/Speicher für die USB-Implementierung sparen möchten, können Sie seine Definition so einfach und unflexibel machen, dass Protokoll 1 bei 0x0 beginnt, Protokoll 2 bei 0x10 0000 beginnt, Protokoll 3 bei 0x20 0000 beginnt , und melden Sie 4 bei 0x30 0000 an. Dann können Sie diese Daten über USB senden.

Die USB-Schnittstelle kann beliebig komplex sein – von der seriellen Schnittstelle bis zum Massenspeicher.