Speichervorschläge für MSP430

9

Ich entwickle eine Messanwendung mit dem TI MSP430 und würde gerne einige Vorschläge 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. Die Schätzung besteht darin, bis zu 5 MB Daten zu speichern, wobei jede Stichprobe etwa 25 Datenbytes umfasst.

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

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

Antworten:

7

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.

Robert
quelle
5

5 MByte sind viele zu speichernde Daten. Das Auslesen über USB bedeutet, dass Sie eines der neuen Teile mit integrierter USB-Geräteschnittstelle verwenden. Wenn nicht, verwenden Sie einen USB-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 darin zu speichern und die Karte dann zum Lesen der gespeicherten Daten auf den PC zu verschieben? Ich habe keine Schnittstelle zu diesem Gerät geschrieben, aber es gibt viele, die haben.

uɐɪ
quelle
Ja, ich werde eines der Teile mit eingebettetem USB verwenden. Ideal wäre es, das MSC-Protokoll zu verwenden, aber das macht mein Projekt sehr komplex. Ich werde mich wahrscheinlich mit den HID-Datenübertragungsraten zufrieden geben. Ich habe über SD-Karten nachgedacht, aber das erhöht die Komplexität des Gehäuses, da es spritzwassergeschützt sein muss.
Padu Merloti
2
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, verschieben Sie die Grenzen des seriellen Flashs (und Sie liegen weit über den Grenzen des EEPROM). Wenn Wasserdichtigkeit ein Problem darstellt (und Sie über eine geeignete USB-Option verfügen, was anscheinend der Fall ist), können Sie Ihre SD-Karte über USB auslesen und dauerhaft im Gehäuse ablegen. Ich habe einige Designs gesehen, die die SD-Karte auf die Platine gelötet haben (Hinweis: Dies hat funktioniert, aber ich empfehle es nicht).
Kevin Vermeer
Verstanden, macht Sinn. Ich werde diese Option in Betracht ziehen. Vielen Dank
Padu Merloti
Gibt es einen speziellen Chip, der sich um die SD-Schnittstelle kümmert und das Dateisystem implementiert, oder müsste ich mit dem MSP430 noch ein Dateisystem und die MSC-Klasse implementieren?
Padu Merloti
@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.
Kevin Vermeer
3

Serial Flash ist in dieser Anwendung dem EEPROM ü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 / zu sektorieren, und (2) Ihrer RAM-Verfügbarkeit auf dem MSP430.

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

Die AT45D-Serie bietet, wie bereits erwähnt, eine Reihe von Teilen mit RAM-Puffern auf dem Chip, um diesen Prozess zu vereinfachen, ohne RAM auf dem Mikrocontroller zu verwenden.

Am Ende ist die gesamte Serie Pin-kompatibel. Stellen Sie also einfach eine Grundfläche von 8 SOIC (150 mil) auf, und Sie können die Teile austauschen, wenn Sie später andere Optionen benötigen.

Kevin Vermeer
quelle
Ich stimme dem zu, was Sie sagen, aber Sie können einfach die Daten von der Quell-Flash-Seite auf die Ziel-Flash-Seite kopieren, während Sie die Bytes ändern, die Sie ändern möchten, bevor Sie die Quelle löschen.
mjh2007
@mjh - Was ist, wenn Ihre Quelle und Ihr Ziel identisch sind und / oder Sie keine kostenlose Seite haben? Dies ist auch 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 ungefähr 1/3 der Zeit, die der RAM-Puffer benötigt.
Kevin Vermeer
Warum sollte ein Datenlogger jemals die Protokolle auf dem Mikro bearbeiten müssen?
Davidcary
@davidcary - Wenn Ihr Datenlogger nur einen langen Bytestrom aufzeichnet, haben Sie Recht - Sie müssen niemals Änderungen vornehmen. Wenn mehrere Konfigurationen oder Protokolldateien vorhanden sind, die möglicherweise die Seiten- / Blockgrenzen überschreiten, oder wenn Sie am Ende Änderungen an einem Header der Datei vornehmen möchten, müssen Sie den Speicher bearbeiten, ohne die vorhandenen Daten zu löschen.
Kevin Vermeer
Zu diesem Zeitpunkt muss ich nur mehrere Protokolldateien erstellen und nicht ändern, es sei denn, der Benutzer steckt das Gerät an USB und lädt es herunter. Dann muss ich das alte Protokoll löschen (oder diesen Speicherplatz wieder verfügbar machen).
Padu Merloti
2

Ich würde die AT25D-Serie empfehlen, da sie etwas einfacher zu bedienen ist als die AT45D. Obwohl es etwas langsamer ist und nicht so viele Datenübertragungsoptionen oder die SRAM-Puffer bietet. Es hat den Vorteil, dass es kostengünstiger ist und für die meisten Anwendungen wie die Datenprotokollierung immer noch schnell genug ist.

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

mjh2007
quelle
1
Ich stimme dir nicht zu. Der kleinste löschbare Bereich des AT25D ist eine 4-KB-Seite, und nur wenige Mikros verfügen über so viel freien Arbeitsspeicher. Ich habe die Chips der AT25FS-Serie verwendet, die eine kleine Seitenlöschung (256 Byte) aufweisen, aber weniger als 5 MB groß sind. Wenn Sie sich für das gepufferte System entscheiden, müssen Sie sich weniger Gedanken über die RAM-Verwaltung machen. Wenn Sie Ihre Protokolle nicht bearbeiten müssen, funktioniert die AT25-Serie natürlich einwandfrei.
Kevin Vermeer
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 die Anwendung von Datenprotokollierungsanwendungen keinen Unterschied macht, ob der kleinste löschbare Abschnitt 256 Byte oder 1 Megabyte beträgt.
Davidcary
1

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

Für den MSP430 von TI ist hier ein Anwendungshinweis für SD-Karten erhältlich . Es ist kurz, enthält aber Beispielcode. Es übernimmt das Lesen und Schreiben in verschiedenen Bereichen der SD-Karte. Dies ist möglicherweise alles, was Sie möchten, wenn Sie es nicht an einen PC anschließen. Schauen Sie sich auch diese Implementierungen von Foust (empfohlen) oder Evans von MSU an.

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

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

Die USB-Schnittstelle kann so komplex sein, wie Sie es möchten - von der seriellen Schnittstelle bis zum Massenspeichergerät.

Kevin Vermeer
quelle