Unterstützte-Chips-Flash-Center

Aggiunta di un modulo al software Total Phase Flash Center

1. Introduzione

Sebbene per impostazione predefinita molti dispositivi di memoria siano inclusi nell'elenco delle parti del Flash Centre, gli utenti potrebbero scoprire che la parte che desiderano programmare non è presente. Per questo motivo, Flash Center include un metodo che consente agli utenti di aggiungere ulteriori parti di memoria alla libreria e di specificare i parametri per la programmazione di tali parti. Per aggiungere un dispositivo di memoria a Flash Center, l'utente deve prima definire i parametri di programmazione delle parti di memoria in un file XML e poi caricare il file in Flash Center.

2. Importare file di dispositivi di archiviazione

Esistono due modi per aggiungere dispositivi di archiviazione da un file di dispositivo di archiviazione all'elenco di parti di Flash Centre.

Un metodo per caricare il file nel Flash Centre consiste nell'aprire la finestra di dialogo Seleziona dispositivo di destinazione e poi cliccare sul pulsante Carica file di parte.... Il file della parte di memoria può quindi essere selezionato nella finestra di dialogo di selezione del file.

L'altro modo per aggiungere le parti definite in un file di parti di memoria è quello di memorizzare il file nella directory parts del Flash Centre. Questa directory si trova nella directory di installazione del Flash Center e si chiama Parts. Quando il Flash Center viene avviato, tutti i file con estensione .xml vengono automaticamente caricati nella directory parts.

Indipendentemente dal metodo scelto per caricare il file delle parti di memoria, se formattato correttamente, le parti saranno integrate nell'elenco delle parti e potranno essere selezionate per la programmazione nella finestra di dialogo Seleziona dispositivo di destinazione.

Nota: i parametri di utilizzo dei dispositivi di memoria devono essere unici. Se i parametri del nome del dispositivo sono duplicati tra le definizioni dei pezzi, i pezzi caricati successivamente sovrascriveranno le definizioni dei pezzi caricati in precedenza. Questo è utile quando si utilizza l'opzione "Carica file di parte..." perché permette di perfezionare le definizioni delle parti senza dover riavviare Flash Center. Se le parti con parametri duplicati per il nome del dispositivo sono presenti nella directory delle parti, non è possibile stabilire quali saranno caricate.

3. Definire i file dei dispositivi di archiviazione

Per aggiungere un dispositivo di archiviazione all'elenco delle parti dei Centri Flash, la parte deve essere prima definita in un file di dispositivo di archiviazione.

Per utilizzare una velocità di trasmissione superiore a quella massima specificata nella libreria delle parti con Promira Serial Platform, è necessario aggiornare un file nella directory delle parti.

Il bit rate massimo SPI con l'applicazione Promira Serial Platform con SPI Active Level 3 è di 80 MHz.
Controlla la scheda tecnica della parte di memoria per assicurarti che supporti il bit rate desiderato.
apri il file nella directory delle parti che specifica la parte di memoria desiderata.
Aggiorna maxBitrate alla velocità di trasmissione desiderata. Assicurati che questo bitrate sia uguale o inferiore al bitrate massimo della tua Piattaforma Seriale Promira.
Non si consiglia di aggiornare altri nodi.
L'esempio seguente mostra un file di parti di memoria da uno dei file inclusi con il Centro Flash: st-spi-flash-m25pe.xml. Definisce 4 parti di memoria che ereditano la maggior parte dei loro parametri dai valori predefiniti globali o dai valori predefiniti dichiarati all'inizio del file.

 

<?xml version="1.0" binding="UTF-8"?> <dispositivi> <default version="1.0"><manufacturerName> STMicro </manufacturerName> <deviceAlgorithm>SPI flash</deviceAlgorithm> <maxBitrate>33000</maxBitrate> <addressWidth>3</addressWidth> <readDummyBytes>1</readDummyBytes> <writeSize>256</ writeSize> <eraseSize>256</eraseSize> <writeTime>1200</writeTime> <eraseTime>10000</eraseTime> <readInstruction>0x0b</readInstruction> <readDeviceIdInstruction>0x9f</readDeviceIdInstruction> <eraseInstruction>0xdb</eraseInstruction> <deviceConnectedBits>0x00</deviceConnectedBits><deviceConnectedMask>0xfc</deviceConnectedMask> </default> <device version="1.0"> <deviceName>M25PE10</deviceName> <deviceDescription> STMicro M25PE10 128 Kilobyte SPI Flash </deviceDescription> <capacity>128*1024</capacity> <expectedDeviceId></expectedDeviceId> <device version> <device version="1.0"> <deviceName>M25PE20</deviceName> <deviceDescription> STMicro M25PE20 256 Kilobyte SPI Flash </deviceDescription> <capacità>256*1024</capacità> <expectedDeviceId>\\x20\x80\x12</expectedDeviceId> </device> <device version="1.0"> <deviceName>M25PE40</deviceName> <deviceDescription> STMicro M25PE40 512 Kilobyte SPI Flash </deviceDescription> <capacità>512*1024</capacità> <expectedDeviceId>\\x20\ \x80\x13</expectedDeviceId> </device> <device version="1.0"> <deviceName>M25PE80</deviceName> <deviceDescription> STMicro M25PE80 1 Megabyte SPI Flash </deviceDescription> <capacità>1024*1024</capacità> <maxBitrate>50000</maxBitrate> <hasEraseAll>true</hasEraseAll> <writeTime>1350</writeTime> <eraseAllTime>10*1000000</eraseAllTime> <eraseAllInstruction>0xc7</eraseAllInstruction> <expectedDeviceId>\\x20\x80\x14</expectedDeviceId> </device> <device version="1.0"> <deviceName>M25PE16</deviceName> <deviceDescription> STMicro M25PE16 2 Megabyte SPI Flash </deviceDescription> <capacità>2*1024*1024</capacità> <maxBitrate>50*1000</maxBitrate> <blockProtectBits>0x1c </blockProtectBits> <hasEraseAll>true</hasEraseAll> <writeTime>800</writeTime> <eraseAllTime>17*1000000</eraseAllTime> <eraseAllInstruction>0xc7</eraseAllInstruction> <expectedDeviceId>\\x20\x80\x15</expectedDeviceId> <deviceConnectedMask>0x60</deviceConnectedMask> </device> </devices>

3.1. formato del file di memoria

Il formato di definizione delle parti utilizzato per il Centro Flash è basato su XML. (Per una panoramica sul formato XML, consulta il sito ufficiale di XML all'indirizzo http://www.w3.org/XML/)

Il formato del file della parte di memoria contiene diversi elementi. Inizia con la dichiarazione XML ed è seguito dal nodo <devices>, che può contenere un nodo <default> e diversi nodi <device>. Il nodo <default> e il nodo <device> contengono ciascuno diversi elementi che definiscono i valori dei parametri dei dispositivi di archiviazione. Ogni nodo <device> definisce un singolo dispositivo di archiviazione. Il nodo <Standard> può essere utilizzato per definire le caratteristiche comuni di tutti i dispositivi di archiviazione presenti nel file.

 

Dichiarazione XML

La prima riga del file di esempio è la riga di dichiarazione XML. Questa riga dovrebbe essere la prima di tutti i file delle parti di archiviazione.

 

Nodo dispositivo

L'unico elemento di livello radice del file XML è il nodo dell'elemento <devices>. Tutti gli altri elementi del file sono nodi figli del nodo <devices>. La seconda riga del file deve essere la dichiarazione del nodo <devices> e l'ultima riga del file deve chiudere il nodo <devices>. Il nodo <default> e tutti i nodi <device> devono essere nodi figli del nodo <devices>.

 

Nodo Default

Il nodo <default> è un nodo opzionale che definisce i valori dei parametri comuni a tutti i dispositivi definiti nel file. Qualsiasi parametro definito nel nodo <default> sovrascrive i valori predefiniti per quel singolo parametro.

L'elemento <default> ha un solo attributo, version, che deve essere impostato su 1.0. Deve esistere un solo nodo <default>. Se c'è più di un nodo <default>, verrà analizzato solo il primo. Gli altri verranno ignorati.

 

Nodi dispositivo

Ogni nodo <device> del file di memoria definisce una singola parte di memoria. Sono consentiti più nodi <device> sotto il nodo <device>, ognuno dei quali definisce un dispositivo di memoria diverso. I valori dei parametri dichiarati in ogni nodo <device> definiscono le caratteristiche del dispositivo e identificano anche il metodo di programmazione del dispositivo di memoria. I parametri definiti in ogni nodo <device> variano a seconda del tipo di dispositivo di memoria e delle sue caratteristiche.

Quando si aggiungono nuove parti all'elenco delle parti del Centro Flash, è importante che la nuova parte abbia un nome univoco come definito nel parametro <nome dispositivo>. Se ci sono parti di archiviazione che hanno lo stesso valore <deviceName>, solo una delle parti verrà aggiunta all'elenco delle parti. In questa situazione, viene visualizzato un avviso all'utente.

L'elemento <device> ha un attributo, version, che deve essere impostato a 1.0.

 

Nodo DualIO e nodo QuadIO

Il nodo <dualIO> e il nodo <quadIO>, ammessi sotto il nodo <device>, definiscono le modalità dual E/A e quad E/A per il dispositivo di archiviazione. Se si seleziona Dual o Quad per la modalità SPI I/O, vengono utilizzati i parametri del nodo <dualIO> o <quadIO>. Tutti i parametri non definiti in questi nodi sono ereditati dal nodo <device>

3.2 Parametri del dispositivo

Nel file della parte di memoria, ogni dispositivo di memoria è descritto come un elenco di valori di parametri che definiscono caratteristiche come il nome del dispositivo, la dimensione della memoria, il tipo di dispositivo, ecc. I parametri necessari per definire una particolare parte di memoria dipendono dal tipo di memoria e da altre caratteristiche specifiche della parte.

Nota: I nomi dei parametri sono sensibili alle maiuscole.

 

Valori predefiniti dei parametri

Per alcuni parametri vengono definiti dei valori predefiniti che non devono essere definiti per la maggior parte dei dispositivi di memoria. Ad esempio, baseDeviceAddress e writeInstruction hanno valori predefiniti rispettivamente di 0x50 e 0x02. Questi valori predefiniti sono presi dai valori tipici di questi parametri. Per molte parti della memoria, i valori predefiniti sono corretti, quindi non è necessario definire questi parametri nel nodo <device>. Per quelle parti i cui valori dei parametri differiscono da quelli predefiniti, la specificazione di questo parametro sovrascrive il valore predefinito.

Inoltre, i valori dei parametri predefiniti specifici di un file possono essere definiti definendo il valore del parametro nel nodo <default>. I parametri definiti nel nodo <default> sovrascrivono i normali valori predefiniti. Come per i valori predefiniti normali, anche le impostazioni predefinite specifiche del file possono essere sovrascritte nel nodo <device> per ogni singola parte di memoria.

 

Tipi di parametri

Esistono quattro tipi principali di parametri del dispositivo: testo, booleano, intero e binario. Inoltre, esiste un parametro, deviceAlgorithm, un parametro di tipo testo per il quale sono accettati solo tre valori specifici.

I parametri di tipo "testo" possono accettare qualsiasi input testuale. Ad esempio, ManufacturerName e deviceDescription, per i quali è accettabile qualsiasi valore di stringa consentito da XML.

I parametri "booleani" consentono due valori: vero o falso, senza distinzione tra maiuscole e minuscole. Esempi di parametri booleani sono hasEraseAll e BusyBitPolarity.

I parametri "Integer" accettano valori numerici senza segno. Per impostazione predefinita, i valori interi vengono analizzati come valori decimali. Se il valore viene preceduto da 0x, il Centro Flash lo analizza come valore esadecimale. Inoltre, i valori interi possono essere definiti come moltiplicazione di due valori con il simbolo *. (Ad esempio, 16384, 0x4000, 16 * 1024, 0x10 * 0x400 e 0x10 * 1024 rappresentano lo stesso valore. Esempi di parametri interi sono capacity, writeInstruction e deviceBusyBit.

I parametri "dati binari" rappresentano una sequenza di valori di byte. Ogni valore di byte della sequenza può essere rappresentato da qualsiasi carattere consentito da XML o inserito come valore esadecimale con il prefisso \ x. Ad esempio, abc123, \ x20 \ x80 \ x14 e abc \ xff sono voci valide per un valore di dati binari.

 

Tipi di dispositivi di memoria

Esistono tre tipi di dispositivi di memoria supportati dal Centro Flash. Si tratta di: I2C EEPROM, SPI EEPROM e SPI Flash. Alcuni parametri dei dispositivi di memoria sono comuni a tutti e tre i tipi di dispositivi di memoria, mentre alcuni sono specifici per le EEPROM I2C, altri per i dispositivi SPI (sia EEPROM che Flash) e altri ancora per i dispositivi Flash SPI.

3.3 Parametri globali dei dispositivi di archiviazione

Di seguito è riportata una tabella di parametri comuni a tutti i dispositivi di archiviazione. Tutti questi parametri devono essere definiti per ogni unità di archiviazione.

ParametroTipoPredefinitoDescrizione
dispositivoAlgoritmotesto Il tipo di dispositivo di memoria. L'algoritmo di programmazione viene determinato in base al valore di questo parametro. I valori supportati sono i2c eeprom, spi eeprom e spi flash, senza distinzione tra maiuscole e minuscole.
nomeDispositivotesto Il nome del dispositivo di memoria. Il nome del dispositivo deve essere unico; i dispositivi con nomi duplicati daranno luogo a un errore.
deviceDescriptiontesto Una lunga descrizione del dispositivo. Viene visualizzata quando il dispositivo di archiviazione viene selezionato durante la selezione della destinazione. Normalmente include il nome del produttore, il nome del dispositivo, la dimensione della memoria e il tipo di dispositivo.
nome produttoretesto Il produttore del dispositivo di archiviazione.
capacitàint Dimensione del dispositivo in byte. Il valore non deve essere zero.
maxBitrateint La velocità massima di trasmissione che l'unità può utilizzare per comunicare con l'adattatore di programmazione. Il valore non deve essere pari a zero. Se esistono più livelli di velocità per la parte di memoria, per questo parametro si raccomanda la velocità di trasmissione più alta.
addressWidthint1Il numero di byte nel campo dell'indirizzo della memoria quando si legge e si scrive sul dispositivo. Se l'indirizzo ha dei bit di overflow, questi vengono aggiunti automaticamente all'indirizzo del dispositivo (I2C) o al codice di comando (SPI). Il valore non deve essere zero.
writeSizeint Il numero di byte per scrittura. Per le parti con pagine di dimensioni variabili, inserisci la dimensione della pagina più piccola. Il valore non deve essere zero.
writeTimeint Il numero di microsecondi necessari per completare un'operazione di scrittura su una singola pagina. Utilizza il valore minimo o tipico perché il Centro Flash potrebbe interrogare il dispositivo per attendere un tempo supplementare, se necessario. Se esistono più livelli di velocità per la porzione di memoria, si consiglia di utilizzare il tempo più basso per questo parametro. Il valore non deve essere pari a zero.

3.4 Parametri dei dispositivi di memoria I2C

Di seguito è riportata una tabella di parametri specifici dei dispositivi di memoria EEPROM I2C.

ParametroTipoPredefinitoDescrizione
baseDeviceAddressint0x50L'indirizzo del dispositivo di base per i dispositivi I  2 C .
pageShiftint0I dispositivi la cui capacità supera il numero totale di bit previsti nella loro parola di indirizzo utilizzano i bit dell'indirizzo del dispositivo I  2 C  per indirizzare completamente i dati. Il parametro pageShift specifica la posizione del bit meno significativo di questi bit di indirizzo nell'indirizzo del I  2 C  dispositivo. Questo parametro è normalmente pari a zero, ma la famiglia Microchip 24xx1025 richiede questo parametro.
autoPageUpdateboolVEROI dispositivi la cui capacità supera il numero totale di bit previsti nella loro parola di indirizzo utilizzano i bit dell'indirizzo del dispositivo I  2 C  per indirizzare completamente i dati. Il parametro autoPageUpdate specifica se il contatore di indirizzi interno del dispositivo può superare automaticamente i limiti di pagina in modo che questi bit non debbano essere modificati durante una lettura sequenziale. Questo parametro è sempre falso, se pageShift non è zero.

3.5 Parametri richiesti per i dispositivi di memoria SPI

Di seguito è riportata una tabella di parametri richiesti specifici per i dispositivi SPI EEPROM e SPI Flash. Tutti questi parametri devono essere definiti per tutti i dispositivi di memoria SPI. Tuttavia, per molti di questi parametri i valori predefiniti sono quelli corretti

ParametroTipoPredefinitoDescrizione
readStatusRegisterInstructionint0x05L'istruzione per leggere il registro di stato del dispositivo. È il registro che contiene il bit di occupato e i bit di protezione del blocco. Deve essere impostato per abilitare il polling.
deviceBusyBitint0x01I bit del registro di stato che indicano che è in corso un'operazione. Questo parametro viene utilizzato come maschera di bit nel registro di stato per determinare lo stato di occupato. Deve essere impostato per abilitare il polling.
BusyBitPolarityboolFALSOLa polarità del bit busy nel registro di stato.  Imposta atrue   , se il bit busy ha una polarità invertita, il che significa  1 pronto.
readInstructionint0x03L'istruzione che avvia un'operazione di lettura dal dispositivo. Per i dispositivi con un'istruzione di lettura veloce, il valore predefinito deve essere sovrascritto.
readDummyBytesint0Il numero di byte di riempimento da inserire tra l'istruzione readInstruction e lo spostamento dei dati dal dispositivo. Normalmente, questo parametro deve essere impostato solo per i dispositivi flash con un comando di lettura veloce.
istruzione di scritturaint0x02L'istruzione per scrivere i dati sul dispositivo.
writeEnableInstructionint0x06L'istruzione inviata per abilitare la scrittura sul dispositivo. Imposta a 0 se il dispositivo non ha istruzioni di abilitazione alla scrittura.
writeDisableInstructionint0x04L'istruzione inviata per uscire dalla modalità di scrittura. Imposta a 0 se il dispositivo non ha un'istruzione di disabilitazione della scrittura.
writeEnableBitsint0x02I bit del registro di stato che indicano il successo dell'esecuzione dell'istruzione istruzione writeEnable .

3.6 Parametri opzionali dei dispositivi di memoria SPI

Di seguito è riportata una tabella di parametri opzionali specifici per i dispositivi SPI EEPROM e SPI Flash. Sebbene questi parametri non siano obbligatori, la loro definizione migliora la capacità del Centro Flash di rilevare gli errori durante il processo di programmazione.

ParametriTipoPredefinitoDescrizione
readDeviceIdInstructionint Per i dispositivi che la supportano, l'istruzione per leggere l'ID del dispositivo.
iD dispositivo attesoDati binari
_
 Il codice ID atteso dall'istruzione per leggere l'ID del dispositivo. La definizione di questo parametro è necessaria solo se anche readDeviceIdInstruction è definita.
istruzione advancedAddressingEnableint Per i dispositivi di memoria di grandi dimensioni con operazioni di lettura, programmazione e cancellazione retrocompatibili, questa istruzione abilita la modalità di indirizzamento avanzata per queste operazioni retrocompatibili. Per i dispositivi con nuove istruzioni estese di sola lettura, programmazione e cancellazione, specifica queste istruzioni invece di questo comando.
istruzione scriviBufferint Per i dispositivi di memoria che hanno un processo di programmazione della pagina in due parti, questa definisce l'istruzione per scrivere i dati in un buffer di memoria. Per esempi di parti di memoria che utilizzano buffer di memoria per la programmazione della pagina, vedi la famiglia di dispositivi SPI Flash Atmel AT45DBxxxx.
istruzione writeAutoAddressIncrementint Per i dispositivi di memoria SST che hanno un processo di programmazione con incremento automatico dell'indirizzo (AAI), definisce l'istruzione di programma AAI.
writeAutoAddressIncrementSizeint Per i dispositivi di memoria SST che hanno un processo di programma di incremento automatico dell'indirizzo (AAI), definisce il numero di byte che seguono ogni istanza dell'istruzione AAI. Il valore deve essere diverso da zero se l'istruzione di programma AAI è definita.
writeAutoAddressIncrementTimeint Per i dispositivi di archiviazione SST che hanno un processo di programma di incremento automatico dell'indirizzo (AAI), questo valore definisce il numero di microsecondi necessari per completare ogni iterazione di scrittura AAI. A differenza di writeTime questo valore deve essere il tempo massimo di scrittura, non il minimo. Il valore deve essere diverso da zero se è definita l'istruzione di programma AAI.
writeStatusRegisterInstructionint0x01L'istruzione per scrivere nel registro di stato. Imposta a 0 se il dispositivo non ha un'istruzione per scrivere il registro di stato.
istruzione writeStatusRegisterEnableInstructionint L'istruzione per abilitare la scrittura del registro di stato. Definisci questo parametro per le parti che hanno istruzioni separate per l'abilitazione alla scrittura e per l'abilitazione del registro di stato. Se questo parametro non è definito, il centro flash utilizza l'istruzione definita per writeEnableInstruction viene utilizzata.
writeStatusRegisterTimeint5000Il numero di microsecondi necessari per completare la scrittura del registro di stato. Usa il valore minimo o tipico, in quanto il Centro Flash può interrogare il dispositivo per attendere un tempo aggiuntivo se necessario. Se ci sono più livelli di velocità per la porzione di memoria, per questo parametro si raccomanda il tempo più basso.
deviceConnectedBitsint I bit del registro di stato che sono sempre impostati su   1 . Viene impostato con il parametro "deviceConnectedMask" per rilevare i dispositivi SPI non connessi. Per maggiori informazioni su questo parametro, consulta la sezione seguente.
deviceConnectedMaskint I bit del registro di stato che hanno un valore fisso. Questo parametro viene utilizzato con il parametro "deviceConnectedBits" per rilevare i dispositivi SPI non connessi. Se non viene definito, viene utilizzato il valore del parametro "deviceConnectedBits" deviceConnectedBits. Per maggiori informazioni su questo parametro, consulta la sezione seguente.
blockProtectBitsint0x9cDetermina quali bit del registro di stato indicano che i blocchi del dispositivo o il registro di stato sono protetti dalla scrittura. Per maggiori informazioni su questo parametro, consulta la sezione seguente.
Modalità Sleepint0Imposta la modalità SPI (0-3).
0 : Modalità 0. I dati vengono acquisiti sul fronte di salita del clock (transizione da basso ad alto) e i dati vengono passati sul fronte di discesa (transizione da alto a basso).
1 : Modalità 1. I dati vengono acquisiti sul fronte di discesa del clock e passati sul fronte di salita.
2 modalità 2: i dati vengono acquisiti sul fronte di discesa del clock e passati sul fronte di salita.
3 : Modalità 3: i dati vengono acquisiti sul fronte di salita del clock e passati sul fronte di discesa.
spiBitorderboolVEROImposta l'ordine dei bit SPI. L'opzione bitorder è utilizzata per specificare se LSB o MSB viene spostato per primo. Imposta a true per MSB.
spiSSPolarityboolVEROImposta la polarità SS, cioè la polarità di uscita sulla linea SS. Imposta su "true" per attivo basso.

Bit collegati al dispositivo e maschera

Nel protocollo SPI non esiste un metodo predefinito per far sì che un dispositivo SPI slave confermi la ricezione dei comandi da parte del master SPI. Pertanto, il master SPI potrebbe inviare un comando allo slave, ma il master potrebbe non avere un metodo per determinare se un dispositivo slave è stato collegato per riceverlo. Tuttavia, se un dispositivo di memoria SPI ha dei bit nel registro di stato che hanno sempre un valore fisso, il registro di stato del Flash Center può essere utilizzato per determinare se c'è o meno una connessione al dispositivo.

I parametri deviceConnectedBits e deviceConnectedMask sono utilizzati per definire questi bit nel registro di stato. Il parametro deviceConnectedMask indica a Flash Center quali bit hanno un valore fisso, mentre deviceConnectedBits specifica quanto è alto il valore di questi bit. Quando questi parametri sono definiti per un dispositivo di archiviazione, Flash Center controlla questi bit per verificare la presenza di una connessione al dispositivo di destinazione sia quando il dispositivo di archiviazione è inattivo sia quando è in corso un'operazione di archiviazione, come un programma di pagine o un'operazione di cancellazione di settori.

Se deviceConnectedBits è definito ma deviceConnectedMask è indefinito o 0, Flash Center utilizza il valore di deviceConnectedBits per deviceConnectedMask. Questo fa sì che Flash Center sia in grado di rilevare solo i bit del registro di stato che hanno un valore fisso di 1, ma non i bit che hanno un valore fisso di 0.

Se sia deviceConnectedBits che deviceConnectedMask sono indefiniti o 0, il registro di stato non verrà utilizzato per rilevare una connessione al dispositivo di memoria di destinazione.

Nota: alcuni dispositivi di memoria restituiscono risultati diversi quando il registro di stato viene letto durante un'operazione di memoria. Ad esempio, la famiglia Atmel AT25xxxx restituisce b1111_1111 mentre è in corso un'operazione di memoria. Poiché nessuno dei bit del registro di stato ha lo stesso valore quando i componenti sono inattivi, deviceConnectedBits e deviceConnectedMask non sono definiti per questi componenti e il registro di stato non viene utilizzato per determinare una connessione ai componenti.

 

Bit di protezione del blocco

La maggior parte delle parti di memoria SPI ha un sistema per proteggere alcune parti della memoria dalle modifiche. Il parametro blockProtectBits indica a Flash Center quali bit del registro di stato indicano che la protezione dei blocchi è abilitata. In genere, un dispositivo di memoria ha un bit nel registro di stato che indica che la protezione dei blocchi è abilitata, oltre a bit che indicano quali blocchi sono protetti. Tutti questi bit devono essere contenuti nel parametro blockProtectBits.

Se uno qualsiasi dei bit di protezione dei blocchi nel registro di stato è diverso da zero all'inizio di un'operazione di cancellazione o scrittura, il centro flash scriverà 0 nel registro di stato per cancellare la protezione dei blocchi. Se il comando di scrittura del registro di stato non è definito o se la scrittura del registro di stato non cancella i bit di protezione del blocco, viene visualizzato un messaggio di errore e l'operazione viene terminata.

Per le unità i cui bit di protezione del blocco non vengono cancellati scrivendo nel registro di stato (ad esempio, hanno istruzioni speciali per cancellare la protezione del blocco), la protezione del blocco deve essere cancellata prima di utilizzare il Centro Flash per programmare l'unità.

3.7 Parametri dei dispositivi di memoria SPI definibili dall'utente

Di seguito è riportata una tabella di parametri opzionali definibili dall'utente disponibili per i dispositivi SPI EEPROM e SPI Flash. Due campi di transazione utente consentono agli utenti di definire i dati di transazione SPI che il Flash Center invia prima di ogni operazione di lettura, scrittura e cancellazione.

ParametriTipoPredefinitoDescrizione
transazione utente1Dati binari
_
 Transazione definibile dall'utente inviata prima dell'inizio di ogni operazione di lettura, programmazione o cancellazione.
userTransaction2Dati binari
_
 Transazione definibile dall'utente inviata prima dell'inizio di ogni operazione di lettura, programmazione o cancellazione.
userTransaction1WriteEnableboolFALSOImpostaa true   per inviare l'istruzione writeEnableInstruction prima di inviare userTransaction1 .
userTransaction2WriteEnableboolFALSOImpostaa true   per inviare l'istruzione writeEnableInstruction prima dell'invio di userTransaction2 .
userTransaction1Timeint Il numero di microsecondi necessari per completare la userTransaction1 . Usa il valore minimo o tipico, poiché il Centro Flash può interrogare il dispositivo per attendere un tempo aggiuntivo, se necessario. Se esistono più livelli di velocità per la parte di memoria, per questo parametro si raccomanda il tempo più basso.
userTransaction2Timeint Il numero di microsecondi necessari per completare da userTransaction2 . Usa il valore minimo o tipico, in quanto il Centro Flash potrebbe interrogare il dispositivo per attendere un tempo aggiuntivo se necessario. Se ci sono più livelli di velocità per la parte di memoria, si raccomanda il tempo più basso per questo parametro.

Note sulle transazioni definibili dall'utente

I byte specificati nei due campi userTransaction vengono inviati invariati sul bus SPI. Il byte dell'istruzione e gli altri dati devono essere combinati in un unico campo userTransaction. Se l'operazione prevista richiede un'abilitazione alla scrittura (ad esempio la programmazione di un registro), utilizza i campi booleani di abilitazione alla scrittura.

L'esempio seguente mostra la programmazione di un registro di configurazione non volatile con il comando 0xB1, i dati richiesti 0xFFFF, WREN e un tempo medio di scrittura di 0,2 secondi.

 <userTransaction1>\xB1\xFF\xFF</userTransaction1> <userTransaction1WriteEnable>vero</userTransaction1WriteEnable>. <userTransaction1Time>200000</userTransaction1Time>

3.8 Parametri dei dispositivi di memoria flash SPI

Di seguito è riportata una tabella di parametri specifici per i dispositivi di memoria flash SPI.

ParametroTipoPredefinitoDescrizione
Istruzione di cancellazioneint L'istruzione che cancella una parte dell'unità. Se l'unità ha più dimensioni di cancellazione (per le unità con cancellazione di settori e blocchi), si consiglia di specificare l'istruzione per la dimensione di cancellazione più piccola.
EraseSizeint La dimensione dell'istruzione di cancellazione specificata da eraseInstruction in byte. Se l'unità ha più dimensioni di cancellazione (per le unità con cancellazione a settori e a blocchi), si consiglia di specificare la dimensione più piccola. Il valore non deve essere zero.
EraseTimeint Il numero di microsecondi necessari per completare l'operazione di cancellazione specificata in eraseInstruction  . Usa il valore minimo o tipico, dato che il Centro Flash può interrogare il dispositivo per attendere un tempo aggiuntivo, se necessario. Se esistono più livelli di velocità per la parte di memoria, per questo parametro si raccomanda il tempo più basso. Il valore non deve essere zero.   
hasEraseAllboolFALSOSe è impostato su true   , significa che il dispositivo supporta l'istruzione di cancellazione del chip e l'istruzione eraseAllInstruction e eraseAllTime devono essere definiti.
Istruzione EraseAllint L'istruzione per eseguire un'operazione di cancellazione completa del chip.
EraseAllTimeint Il numero di microsecondi necessari per eseguire l'operazione di cancellazione del chip. Utilizza il valore minimo o tipico, in quanto il Centro Flash potrebbe interrogare il dispositivo per attendere un tempo aggiuntivo se necessario. Se esistono più livelli di velocità per la parte di memoria, per questo parametro si consiglia di utilizzare il tempo più basso. Il valore non deve essere zero.
eraseBeforeWriteboolVEROSe il valore è impostato su "false" , Flash Center non emetterà comandi di cancellazione prima di un comando di scrittura. Questo è utile per i dispositivi come la famiglia di dispositivi Flash SPI Atmel AT45DBxxxx, in quanto supportano un singolo comando che cancella e programma una pagina di memoria.

3.9 Parametri della modalità SPI I/O

Di seguito è riportata una tabella di parametri specifici per i dispositivi di memoria flash SPI.

ParametroTipoPredefinitoDescrizione
indirizzo ioModeAddressint1La modalità I/O SPI è utilizzata per trasmettere il campo dell'indirizzo della transazione SPI. I valori possibili sono 0, 2 o 4.
ioModeDataInint1La modalità I/O SPI è utilizzata per ricevere il campo dati della transazione SPI e i valori possibili sono 0, 2 o 4.
ioModeDataOutint1La modalità I/O SPI utilizzata per trasmettere il campo dati della transazione SPI e i valori possibili sono 0, 2 o 4.

Altri articoli

TotalPhase-Blog-Bild

Aggiunta di un circuito integrato al Total Phase Flash Center

Il software Flash Center consente l'aggiunta di nuovi chip semplicemente estendendo la libreria basata su XML.

TotalPhase-Blog-Bild

Programmazione di una EEPROM SPI con la piattaforma Promira su Linux

Questo articolo descrive come eseguire i comandi nella modalità della riga di comando seriale del centro di comando.

TotalPhase-Blog-Bild

Programmazione di una EEPROM I2C con Promira

La programmazione di dispositivi di archiviazione I2C è un caso d'uso comune per la piattaforma seriale Promira™ con applicazioni I2C Active Level 1-2.

TotalPhase-Blog-Bild

Strumenti I2C, SPI e USB per sviluppatori AVR

Gli strumenti USB adatti per AVR e AVR32 nonché per bus seriali per microcontrollori AVR.