Suggerimenti di memoria per MSP430


9

Sto sviluppando un'applicazione di misurazione con TI MSP430 e vorrei ascoltare alcuni suggerimenti su quale tipo di memoria posso usare.

L'idea è di usarlo per la registrazione durante un certo tempo e quindi scaricare i dati su un PC quando il dispositivo è collegato tramite USB. La stima è di contenere fino a 5 MB di dati, ogni campione è di circa 25 byte di dati.

Farebbe un semplice chip EEPROM o c'è qualcosa di meglio là fuori?


1
Sembra che avrai il dispositivo alimentato per la maggior parte del tempo in cui hai dati validi. Una SRAM con backup di batteria non è più appropriata di una EEPROM (o meglio, Flash) allora?
Federico Russo,

Risposte:


7

Ho usato la serie AT45D di chip flash seriali. Hanno un buffer SRAM interno per impostare una pagina per la cancellazione / programmazione. Interfaccia SPI per leggere i dati in entrata e in uscita.


5

5MByte contiene molti dati da archiviare. La lettura su USB implica che si sta utilizzando una delle nuove parti con l'interfaccia del dispositivo USB integrata. In caso contrario, si utilizzerà un convertitore da USB a seriale (FTDI o simile) e sarà limitato al seriale asincrono velocità dei dati per la lettura dei dati.

Hai preso in considerazione la possibilità di collegare una scheda di memoria SD all'MSP, archiviare i dati in essa e quindi spostare la scheda sul PC per leggere i dati memorizzati. Non ho scritto un'interfaccia per questo dispositivo, ma ce ne sono molti.


Sì, userò una delle parti con USB incorporato. L'ideale sarebbe usare il protocollo MSC, ma ciò aggiunge molta complessità al mio progetto. Probabilmente mi accontenterò delle velocità di trasferimento dei dati HID. Ho pensato alle schede SD, ma ciò aggiunge ulteriore complessità al contenitore in quanto deve essere a prova di spruzzi d'acqua.
Padu Merloti,

2
Suggerirei questo percorso, perché le schede SD ti daranno più spazio di archiviazione. Adesso dici 5 MB, ma se vuoi più tardi, stai spingendo i limiti del flash seriale (E sei ben al di sopra dei limiti di EEPROM). Se l'impermeabilizzazione è un problema (e hai un'opzione USB appropriata, che sembra essere il caso) puoi leggere la tua scheda SD su USB e metterla permanentemente all'interno del contenitore. Ho visto alcuni disegni che saldavano la scheda SD alla scheda (Nota: questo ha funzionato, ma non lo consiglio).
Kevin Vermeer,

Capito, ha senso. Prenderò in considerazione questa opzione. Grazie
Padu Merloti

Esiste un chip specializzato che si occupa dell'interfaccia SD e implementa il file system o dovrei ancora implementare un file system e la classe MSC utilizzando MSP430?
Padu Merloti,

@Padu: ho ritenuto che fosse necessario un po 'più di spazio e formattazione rispetto a un commento, quindi ho aggiunto la mia risposta come risposta.
Kevin Vermeer,

3

Il flash seriale è superiore all'EEPROM in questa applicazione. Atmel fa un'ottima formazione . La tua scelta dipenderà in gran parte da due cose: (1) La tua necessità di modificare / settare i tuoi log sul micro e (2) La tua disponibilità di RAM su MSP430.

Flash, a differenza della EEPROM, può essere scritto solo da 1 a 0. Per modificare i dati da 0 a 1 è necessario cancellare una sezione della parte, che in genere è disponibile solo per pagine o blocchi di dati. Dovrai bufferizzare questa pagina in RAM, cancellare la pagina, apportare la tua modifica in RAM e quindi riscriverla se vuoi cambiare qualcosa.

La serie AT45D, come è già stato sottolineato, offre un numero di parti che hanno buffer di RAM sul chip per facilitare questo processo senza usare la RAM sul microcontrollore.

Alla fine, l'intera serie è compatibile con i pin, quindi basta inserire un footprint 8-SOIC (150mil) e quindi è possibile sostituire le parti se sono necessarie opzioni diverse in seguito.


Sono d'accordo con quello che stai dicendo, ma potresti semplicemente copiare i dati dalla pagina flash di origine alla pagina flash di destinazione mentre modifichi i byte che vuoi cambiare prima di cancellare la fonte.
mjh2007,

@mjh - Cosa succede se la tua sorgente e destinazione sono uguali e / o non hai una pagina gratuita? Inoltre, è lento: invia il comando di lettura, invia un indirizzo, leggi un byte, cambia se necessario, cancella, invia il comando di scrittura, invia un indirizzo, scrivi un byte, ripeti x256, x512 o x4k. L'altra opzione è inviare un comando di lettura, inviare l'indirizzo di lettura, l'orologio per N cicli, modificare i byte che si desidera modificare, cancellare, inviare il comando di scrittura, inviare l'indirizzo di scrittura, l'orologio per N cicli. Ciò richiede circa 1/3 del tempo impiegato dal buffer RAM.
Kevin Vermeer,

Perché un registratore di dati dovrebbe mai aver bisogno di modificare i registri sul micro?
davidcary,

@davidcary - Se il tuo data logger non fa altro che registrare un lungo flusso di byte, hai ragione - non dovrai mai apportare modifiche. Se ha diverse configurazioni o file di registro che potrebbero oltrepassare i limiti di pagina / blocco o se si desidera apportare modifiche a un'intestazione sul file alla fine, è necessario modificare la memoria senza cancellare i dati esistenti.
Kevin Vermeer,

A questo punto, devo solo creare diversi file di registro, non è necessario modificarli, tranne quando l'utente collega il dispositivo a USB e lo scarica, quindi devo cancellare (o rendere di nuovo disponibile quello spazio) il vecchio registro.
Padu Merloti,

2

Vorrei suggerire la serie AT25D poiché sembra un po 'più facile da usare rispetto all'AT45D. Anche se è un po 'più lento e non offre tante opzioni di trasferimento dati o buffer SRAM. Ha il vantaggio di essere meno costoso ed è ancora abbastanza veloce per la maggior parte delle applicazioni come la registrazione dei dati.

Se hai bisogno di 5 MB di dati, è improbabile che una EEPROM funzioni dal momento che arrivano in pacchetti <1Mbit in genere. I chip flash di Atmel supportano fino a 64 mbit o 8 MB.


1
Non sono d'accordo. La sezione cancellabile più piccola sull'AT25D è una pagina da 4kB e pochi micro hanno quella RAM di riserva disponibile. Ho usato la serie di chip AT25FS, che hanno una piccola pagina (256 byte), ma sono meno di 5 MB. Accedere al sistema bufferizzato significa che non devi preoccuparti troppo della gestione della RAM. Naturalmente, se non è necessario modificare i registri, la serie AT25 funzionerà correttamente.
Kevin Vermeer,

Sì, le pagine con cancellazione di grandi dimensioni sono fastidiose quando un'applicazione deve scrivere un byte, quindi modificarlo successivamente. Ma perché mai un registratore di dati dovrebbe mai farlo? Mi sembra che, per le applicazioni di registrazione dei dati, non faccia alcuna differenza se la sezione cancellabile più piccola è 256 byte o 1 Megabyte.
davidcary,

1

[Questo è in risposta ai commenti che seguono la risposta di Ian].
Una scheda SD è solo un dispositivo SPI, quindi non è necessario alcun chip / interfaccia. Altri protocolli includono un'interfaccia a 2 fili (come I2C) e un'interfaccia a 4 fili (con un CRC complesso), ma SPI è il più comunemente usato.

C'è una nota sull'applicazione della scheda SD disponibile per MSP430 da TI qui . È breve, ma include un codice di esempio. Gestisce la lettura e la scrittura in vari settori sulla scheda SD, che potrebbe essere tutto ciò che desideri se non lo collegherai a un PC. Guarda anche queste implementazioni di Foust (raccomandato) o Evans di MSU.

Una volta che hai le funzioni di base per leggere e scrivere un settore, puoi astrarre un semplice filesystem personalizzato su USB o usare una libreria di filesystem esistente. FatFS , EFSL o DOSF sono tutte opzioni per quest'ultimo. Se l'implementazione di tutte le funzioni richieste sembra troppo difficile, ricordate che tutti, tranne pochi, possono / saranno matrici.

Tuttavia, il file system verrà estratto in una certa misura attraverso l'interfaccia USB. Questo sarà più facile se hai una libreria di filesystem reale e la tua scheda è in un filesystem leggibile, ma ci vuole lavoro. Se si desidera scrivere il proprio "filesystem" e salvare lavoro / tempo / memoria per l'implementazione USB, è possibile rendere la sua definizione semplice e non flessibile poiché il registro 1 inizia da 0x0, il registro 2 inizia da 0x10 0000, il registro 3 da 0x20 0000 e registra 4 su 0x30 0000. Quindi, puoi inviare questi dati tramite USB.

L'interfaccia USB può essere complessa come preferisci, dall'interfaccia seriale al dispositivo di archiviazione di massa.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.