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?
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.
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 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.
[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.
Federico Russo