Hallo zusammen,
Ich bin gerade an einem Projekt beschäftigt, bei dem ich gerne den
MSP430F5529 verwenden möchte. Da ich hier allerdings Daten mitloggen
möchte, ist mir der interne Speicher zu klein und benötige deshalb einen
externen Speicher.
Der MSP verfügt ja nun leider nicht über ein Speicherinterface, weshalb
die Kommunikation mit dem externen Speicher(über serielle Schnittstelle)
selbst gecodet werden muss.
Mein Frage hierzu wäre:
Gibt es iwo eine Art Sample-Code (.c), wie diese Kommunikation
realisiert werden könnte?
Oder gar ein bestehendes Projekt, bei dem ein Code verfügbar ist?
Würde mich über Eure Hilfe freuen.
Vielen Dank.
Gruß
Luis
Wenn du nicht weißt welcher Speicher (und somit welches Interface) du
hast, wird dir Sample Code wohl nichts bringen.
Oder was verstehst du unter "serielle Schnittstelle". SPI? I2C?
Hätte da an SPI gedacht.
Der Speicher ist tatsächlich noch mysteriös, da ich mich noch nicht
entschieden habe.
Ich würde mich einfach gerne mal einlesen, was Code-seitig alles nötig
ist, um diese Anbindung realisieren zu können.
Wenn es um das (dauerhafte) Aufzeichnen von Daten geht, ist die
Verwendung von SD-Karten als externer Speicher nahezulegen, die Dinger
sind spottbillig, problemlos am PC zu lesen und bieten ganz erhebliche
Speicherkapazität.
Was Du also benötigst, ist Code für die Ansteuerung von SD-Karten; der
ist von den Low-Level-Routinen zur Ansteuerung der Hardwareschnittstelle
(SPI oder "hand-made" per Bit-Banging) nicht vom verwendeten Controller
abhängig, und leicht mit der Forensuche zu finden.
Es empfiehlt sich allerdings, das für die SD-Karte vorgesehene
Dateisystem (FAT16 bei SD, FAT32 bei SDHC) zu verwenden und nicht auf
fest adressierte Datenblöcke zurückzugreifen, denn das erschwert das
spätere Auslesen am PC erheblich. Der 'F5529 bietet mit 128 kiB Flash
auch ausreichend Codespeicher für die Implementierung eines richtigen
Dateisystemtreibers.
Ok, Danke schon mal hierfür.
SD-Karte wollte ich jedoch keine verwenden, falls möglich.
Allzu dauerhaft müssten die Daten gar nicht verfügbar sein.
Ganz konkret ist es eher so, dass ich die Daten auf nem LCD-Display
darstellen möchte. Dies könnten dann zum Beispiel die letzten 5-10
abgespeicherten Werte sein.
Danach können diese aber gerne wieder überschrieben werden oder
Ähnliches.
Hätte da vll an ein FRAM oder MRAM mit SPI-Schnittstelle gedacht.
Luis schrieb:> Dies könnten dann zum Beispiel die letzten 5-10> abgespeicherten Werte sein.
Und das passt nicht ins Ram rein? Sollen die Daten denn nach dem
ausschalten erhaltenbleiben?
Nimm doch einfach ein simples i2c/spi EEPROM. Dafür wirds auch genügend
Beispiele geben.
Recht brauchbar sind auch zB die Atmel DataFlash, werden auch per SPI
angesteuert und gibts bis etliche MegaBit im SO8 Gehäuse
Die sind auch um einiges einfacher als eine SD Karte anzusteueren, halt
ohne Dateisystem...
Ob es in den internen Speicher passt, is fraglich, vll müssens auch mal
mehr Daten sein.
Auf ein EEPROM bin ich auch schon gestoßen, mal sehen welches ich
letztendlich verwende.
Allerdings hab ich noch gar kein Beispielprojekt in Zusammenhang mit nem
MSP gesehen?
Hat hier jemand schon mal eines gesehen?
Luis schrieb:> Hätte da vll an ein FRAM oder MRAM mit SPI-Schnittstelle gedacht.
wieviel Speicherkapazität brauchst Du?
reichen 32 KiB?
FRAM: z.B. von Ramtron den FM25V02 oder den FM25W256
ersterer läuft mit bis zu 40MHz SPI-Takt, letzterer nur bis 20MHz,
dafür ist der noch 5V-kompatibel...
MRAM: gibts z.B. von Everspin
MR25H256 (32 KiB, SPI 40MHz, 3,3V)
MR25H10 (128 KiB, SPI 40MHz, 3,3V)
MR25H40 (512 KiB, SPI 40MHz, 3,3V)
Die Teile (FRAM und MRAM) gibts z.B. bei Digikey, die 32 KiB Versionen
kosten als Einzelstück da ca. 5,-€
Gruß,
Thosch
Luis schrieb:> Allerdings hab ich noch gar kein Beispielprojekt in Zusammenhang mit nem> MSP gesehen?
Das ist doch, sofern Du nicht ausgerechnet in Assembler programmieren
willst, auch ziemlich zweitrangig, für welchen Controller so ein Projekt
ist (sofern nicht ein externes Speicherinterface genutzt wird). Ob der
ein EEPROM oder FRAM per SPI ansteuernde Controller ein AVR, ein ARM
oder ein MSP430 ist, unterscheidet sich nur im "low-level"-Ansteuern der
jeweiligen Peripherie, alles, was darauf aufbaut, kann praktisch 1:1
übernommen werden.
Wie die Peripheriemodule des MSP430 zu nutzen sind, zeigt einem der
Beispielcode, den es von TI für die unterschiedlichen Familienmitglieder
gibt, und also kannst Du auch Code, der für einen AVR geschrieben ist,
leicht auf den MSP430 portieren.
Du hast aber wesentliche Fragen noch nicht geklärt:
- Welche Speichermenge ist erforderlich?
- Wie schnell muss der Speicher sein?
- Wie oft soll der Speicher beschrieben werden?
Prinzipiell kann auch das Flash des MSP430 selbst zur Speicherung von
Daten genutzt werden; der von Dir gewählte Controller hat 128 kiB, die
Du nur mit viel Aufwand mit einem Programm vollgestopft bekommen wirst.
Ja stimmt schon, ist ja letztendlich egal welcher µc, da nur
Kommunikation über SPI stattfindet.
Dazu hätte ich jetzt nur ne dumme Frage: Was darf ich unter dem
"low-level-Ansteuern" verstehen?
Hat zufällig jemand nen Link zu nem Beispiel-Projekt mit, sagen wir mal,
SPI-EEPROM parat?
Ja ich weiß, man könnte googlen oder sonstige Suchmaschinen bemühen,
jedoch habt ihr ja vll selbst mit dem Thema schon Kontakt gehabt und
seit damals auf was Nützliches gestoßen.
Wie schnell, bzw wie groß der Speicher sein sollte, kann ich jetzt aus
dem Stegreif leider nicht beantworten.
Es sollte daran jedoch nicht scheitern, sollte dadurch der Preis
ordentlich steigen, ist erst mal egal ;)
Beschreiben sollte schon ziemlich oft möglich sein, am Besten solange es
iwie geht..
Also SPI EEPROMs sind wirklich kinderleicht anzusteuern. Schau dir doch
mal an, wie man das SPI Interface der MSP430 benutzt. Dazu hat TI sicher
was auf lager, schau mal bei den Launchpad Codebeispielen. Dann hast du
das "low level" Zeug schon hinter dich gebracht. Du kannst jetzt nämlich
Bytes über SPI senden.
Dann suchst du dir ein EEPROM raus und schaust ins Datenblatt. Da steht
drin, was für Bytes du wie senden musst um etwas zu speichern oder zu
laden. Das wars schon, alles keine Hexenwerk ;)