Unterstützte-Chips-Flash-Center

Hinzufügen eines Bausteins zu der Total Phase Flash Center Software

1. Einleitung

Obwohl standardmäßig viele Speichergeräte in der Teileliste des Flash Centers enthalten sind, stellen Benutzer möglicherweise fest, dass der Teil, den sie programmieren möchten, nicht vorhanden ist. Daher enthält das Flash Center eine Methode, mit der Benutzer der Bibliothek zusätzliche Speicherteile hinzufügen und die Parameter für die Programmierung dieser Teile angeben können. Um dem Flash Center ein Speichergerät hinzuzufügen, muss der Benutzer zuerst die Programmierparameter für Speicherteile in einer XML-Datei definieren und die Datei dann in Flash Center laden.

2. Importieren von Speichergerätedateien

Es gibt zwei Möglichkeiten, Speichergeräte aus einer Speicherteiledatei zur Teileliste des Flash Centers hinzuzufügen.

Eine Methode zum Laden der Datei in das Flash Center besteht darin, das Dialogfeld "Zielgerät auswählen" zu öffnen und dann auf die Schaltfläche "Teiledatei laden ..." zu klicken. Die Speicherteildatei kann dann im Dateiauswahldialog ausgewählt werden.

Die andere Möglichkeit, die in einer Speicherteiledatei definierten Teile hinzuzufügen, besteht darin, die Datei im Teileverzeichnis des Flash Centers abzulegen. Dieses Verzeichnis befindet sich im Installationsverzeichnis des Flash Centers und heißt Teile. Wenn das Flash Center gestartet wird, werden automatisch alle Dateien in das Teileverzeichnis geladen, die die Dateierweiterung .xml haben.

Unabhängig von der zum Laden der Speicherteiledatei gewählten Methode werden die Teile bei ordnungsgemäßer Formatierung in die Teileliste integriert und können im Dialogfeld Zielgerät auswählen für die Programmierung ausgewählt werden.

Hinweis: Die Gerätebenutzungsparameter für die Speichergeräte müssen eindeutig sein. Wenn die Geräte-Namen-Parameter zwischen den Teiledefinitionen dupliziert werden, überschreiben später geladene Teile früher geladene Teiledefinitionen. Bei Verwendung der Option "Teiledatei laden ..." ist dies nützlich, da hiermit die Teiledefinitionen verfeinert werden können, ohne dass Flash Center neu gestartet werden muss. Wenn sich die Teile mit doppelten Parametern für den Gerätenamen im Teileverzeichnis befinden, ist unbestimmt, welche geladen werden.

3. Definieren von Speichergerätedateien

Um ein Speichergerät zur Teileliste von Flash Centers hinzuzufügen, muss das Teil zuerst in einer Speicherteiledatei definiert werden.

Um eine höhere Bitrate als die in der Teilebibliothek mit der Promira Serial Platform angegebene maximale Bitrate zu verwenden, muss eine Datei im Teileverzeichnis aktualisiert werden.

Die maximale SPI-Bitrate mit der Promira Serial Platform mit SPI Active Level 3-Anwendung beträgt 80 MHz.
Überprüfen Sie das Datenblatt des Speicherteils, um sicherzustellen, dass das Speicherteil die gewünschte Bitrate unterstützt.
Öffnen Sie die Datei im Teileverzeichnis, das den gewünschten Speicherteil angibt.
Aktualisieren Sie maxBitrate auf die gewünschte Bitrate. Stellen Sie sicher, dass diese Bitrate der maximalen Bitrate Ihrer Promira Serial Platform entspricht oder darunter liegt.
Nicht empfohlen, andere Knoten zu aktualisieren.
Das folgende Beispiel zeigt eine Speicherteildatei aus einer der Dateien, die im Lieferumfang des Flash Centers enthalten sind: st-spi-flash-m25pe.xml. Es definiert 4 Speicherteile, die den Großteil ihrer Parameter von den globalen Standardwerten oder den oben in der Datei deklarierten Standardwerten erben.

 

<?xml version="1.0" binding="UTF-8"?> <devices> <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>\\x20\\x80\\x11</expectedDeviceId> </device> <device version="1.0"> <deviceName>M25PE20</deviceName> <deviceDescription> STMicro M25PE20 256 Kilobyte SPI Flash </deviceDescription> <capacity>256*1024</capacity> <expectedDeviceId>\\x20\\x80\\x12</expectedDeviceId> </device> <device version="1.0"> <deviceName>M25PE40</deviceName> <deviceDescription> STMicro M25PE40 512 Kilobyte SPI Flash </deviceDescription> <capacity>512*1024</capacity> <expectedDeviceId>\\x20\ \x80\\x13</expectedDeviceId> </device> <device version="1.0"> <deviceName>M25PE80</deviceName> <deviceDescription> STMicro M25PE80 1 Megabyte SPI Flash </deviceDescription> <capacity>1024*1024</capacity> <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> <capacity>2*1024*1024</capacity> <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. Speicherdateiteilformat

Das für das Flash Center verwendete Teiledefinitionsformat basiert auf XML. (Eine Übersicht über das XML-Format finden Sie auf der offiziellen XML-Website unter http://www.w3.org/XML/.)

Das Speicherteil-Dateiformat enthält mehrere Elemente. Es beginnt mit der XML-Deklaration und wird vom <devices> -Knoten gefolgt, der einen <default> -Knoten und mehrere <device> -Knoten enthalten kann. Der Knoten <Standard> und der Knoten <Gerät> enthalten jeweils mehrere Elemente, die Parameterwerte für Speichergeräte definieren. Jeder <Gerät> -Knoten definiert ein einzelnes Speichergerät. Der Knoten <Standard> kann verwendet werden, um gemeinsame Merkmale aller Speicherteile in der Datei zu definieren.

 

XML-Deklaration

Die erste Zeile in der Beispieldatei ist die XML-Deklarationszeile. Diese Zeile sollte die erste Zeile in allen Speicherteildateien sein.

 

Geräteknoten

Das einzige Element auf Stammebene in der XML-Datei ist der Elementknoten <Geräte>. Alle anderen Elemente in der Datei sind Unterknoten des Knotens <Geräte>. Die zweite Zeile der Datei sollte die Deklaration des Knotens <Geräte> sein, und die letzte Zeile der Datei sollte den Knoten <Geräte> schließen. Der <default> -Knoten und alle <device> -Knoten sollten Unterknoten des <devices> -Knotens sein.

 

Standardknoten

Der <Standard> -Knoten ist ein optionaler Knoten, der die gemeinsamen Parameterwerte für alle in der Datei definierten Geräte definiert. Alle im Knoten <Standard> definierten Parameter überschreiben die integrierten Standardwerte für diesen einzelnen Parameter.

Das <default> -Element hat ein Attribut, version, das auf 1.0 gesetzt werden muss. Es sollte nur einen <Standard> -Knoten geben. Wenn mehr als ein <Standard> -Knoten vorhanden ist, wird nur der erste analysiert. der Rest wird ignoriert.

 

Geräteknoten

Jeder <Gerät> -Knoten in der Speicherteildatei definiert einen einzelnen Speicherteil. Unter dem Knoten <Geräte> sind mehrere <Gerät> -Knoten zulässig, von denen jeder ein anderes Speichergerät definiert. Die unter jedem <Gerät> -Knoten deklarierten Parameterwerte definieren die Merkmale des Geräts und kennzeichnen auch die Programmiermethode für das Speichergerät. Die in jedem <Gerät> -Knoten definierten Parameter variieren je nach Typ des Speichergeräts und den Besonderheiten des Speichergeräts.

Beim Hinzufügen neuer Teile zur Teileliste des Flash Centers ist es wichtig, dass das neue Teil einen eindeutigen Namen hat, wie im Parameter <Gerätename> definiert. Wenn es Speicherteile gibt, die denselben Wert <deviceName> haben, wird nur eines der Teile in die Teileliste aufgenommen. In dieser Situation wird dem Benutzer eine Warnung angezeigt.

Das <device> -Element verfügt über ein Attribut, version, das auf 1.0 gesetzt werden muss.

 

DualIO-Knoten und QuadIO-Knoten

Der <dualIO> -Knoten und der <quadIO> -Knoten, die unter dem <device> -Knoten zulässig sind, definieren den Dual-E / A- und den Quad-E / A-Modus für das Speichergerät. Wenn für den SPI-E / A-Modus Dual oder Quad ausgewählt ist, werden die Parameter unter dem Knoten <dualIO> oder <quadIO> verwendet. Alle Parameter, die nicht unter diesen Knoten definiert sind, werden vom <Gerät> -Knoten geerbt

3.2 Geräteparameter

In der Speicherteiledatei wird jedes Speichergerät als eine Liste von Parameterwerten beschrieben, die Merkmale wie den Namen des Geräts, die Größe des Speichers, den Gerätetyp usw. definieren. Die zum Definieren eines bestimmten Speicherteils erforderlichen Parameter Dies hängt vom Typ des Speichers sowie von anderen spezifischen Merkmalen des Teils ab.

Hinweis: Bei Parameternamen wird zwischen Groß- und Kleinschreibung unterschieden.

 

Standardparameterwerte

Für einige Parameter sind Standardwerte definiert, sodass sie für die meisten Speichergeräte nicht definiert werden müssen. Beispielsweise haben baseDeviceAddress und writeInstruction Standardwerte von 0x50 bzw. 0x02. Diese Standardwerte werden aus typischen Werten für diese Parameter übernommen. Für viele Speicherteile sind die Standardwerte korrekt, sodass diese Parameter nicht im Knoten <Gerät> definiert werden müssen. Für diejenigen Teile, deren Parameterwerte von den Standardwerten abweichen, überschreibt die Angabe dieses Parameters den Standardwert.

Darüber hinaus können dateispezifische Standardparameterwerte definiert werden, indem der Parameterwert im Knoten <Standard> definiert wird. Die unter dem Knoten <Standard> definierten Parameter überschreiben die regulären Standardwerte. Wie bei den normalen Standardwerten können die dateispezifischen Standardeinstellungen auch im Knoten <Gerät> für jeden einzelnen Speicherteil überschrieben werden.

 

Parametertypen

Es gibt vier Haupttypen von Geräteparametern: Text-, Boolesche, Ganzzahl- und Binärdaten. Darüber hinaus gibt es einen Parameter, deviceAlgorithm, einen Texttypparameter, für den nur drei bestimmte Werte akzeptiert werden.

Die "Text" -Parameter können jede Texteingabe akzeptieren. Beispiele hierfür sind ManufacturerName und deviceDescription, wobei jeder XML-zulässige Zeichenfolgenwert zulässig ist.

Die "booleschen" Parameter erlauben zwei Werte: true oder false, Groß- und Kleinschreibung wird nicht berücksichtigt. Beispiele für boolesche Parameter sind hasEraseAll und BusyBitPolarity.

Die "Integer" -Parameter nehmen vorzeichenlose numerische Werte an. Standardmäßig werden ganzzahlige Werte als Dezimalwerte analysiert. Wenn Sie dem Wert 0x voranstellen, analysiert das Flash Center den Wert als Hexadezimalwert. Darüber hinaus können ganzzahlige Werte als Multiplikation zweier Werte mit dem Symbol * definiert werden. (Um das * -Symbol herum sind keine Leerzeichen zulässig.) Beispielsweise repräsentieren 16384, 0x4000, 16 * 1024, 0x10 * 0x400 und 0x10 * 1024 denselben Wert. Beispiele für ganzzahlige Parameter sind Kapazität, writeInstruction und deviceBusyBit.

Die "Binärdaten" -Parameter repräsentieren eine Folge von Bytewerten. Jeder Bytewert in der Sequenz kann durch ein beliebiges XML-zulässiges Zeichen dargestellt oder als hexadezimaler Wert mit dem Präfix \ x eingegeben werden. Beispielsweise sind abc123, \ x20 \ x80 \ x14 und abc \ xff gültige Einträge für einen Binärdatenwert.

 

Speichergerätetypen

Es gibt drei Arten von Speichergeräten, die vom Flash Center unterstützt werden. Dies sind: I2C-EEPROM, SPI-EEPROM und SPI-Flash. Einige Speichergeräteparameter sind allen drei Speichergerätetypen gemeinsam, während einige für I2C-EEPROMs spezifisch sind, einige spezifisch für SPI-Geräte (sowohl EEPROMs als auch Flash-Geräte) und einige Parameter spezifisch für SPI-Flash-Geräte.

3.3 Globale Speichergeräteparameter

Das Folgende ist eine Tabelle der Parameter, die allen Speichergeräten gemeinsam sind. Alle diese Parameter müssen für jeden Speicherteil definiert werden.

ParameterTypeDefaultBeschreibung
deviceAlgorithmtext Der Typ des Speichergeräts. Der Programmieralgorithmus wird basierend auf diesem Parameterwert bestimmt. Unterstützte Werte sind i2c eeprom, spi eeprom und spi flash, wobei die Groß- und Kleinschreibung nicht berücksichtigt wird.
deviceNametext Der Name des Speichergeräts. Beachten Sie, dass der Gerätename eindeutig sein muss; Geräte mit doppelten Namen führen zu einem Fehler.
deviceDescriptiontext Eine lange Beschreibung des Geräts. Wird angezeigt, wenn das Speichergerät während der Auswahl des Ziels ausgewählt wird. Normalerweise enthält es den Herstellernamen, den Gerätenamen, die Speichergröße und den Gerätetyp.
manufacturerNametext Der Hersteller des Speichergeräts.
capacityint Größe des Geräts in Bytes. Der Wert darf nicht Null sein.
maxBitrateint Die maximale Bitrate, die das Gerät zur Kommunikation mit dem Programmieradapter verwenden kann. Der Wert darf nicht Null sein. Wenn es für den Speicherteil mehrere Geschwindigkeitsstufen gibt, wird für diesen Parameter die höchste Bitrate empfohlen.
addressWidthint1Die Anzahl der Bytes im Speicheradressfeld beim Lesen vom und Schreiben auf das Gerät. Wenn die Adresse Überlaufbits aufweist, werden diese automatisch zur Geräteadresse (I2C) oder zum Befehlscode (SPI) hinzugefügt. Der Wert darf nicht Null sein.
writeSizeint Die Anzahl der Bytes pro Schreibvorgang. Geben Sie für Teile mit variablen Seitengrößen die Größe der kleinsten Seite ein. Der Wert darf nicht Null sein.
writeTimeint Die Anzahl der Mikrosekunden, die erforderlich sind, um einen Schreibvorgang auf einer einzelnen Seite abzuschließen. Verwenden Sie den minimalen oder typischen Wert, da das Flash Center das Gerät abfragen kann, um bei Bedarf zusätzliche Zeit zu warten. Wenn es für den Speicherteil mehrere Geschwindigkeitsstufen gibt, wird für diesen Parameter die niedrigste Zeit empfohlen. Der Wert darf nicht Null sein.

3.4 Parameter des I2C-Speichergeräts

Das Folgende ist eine Tabelle der Parameter, die für I2C-EEPROM-Speichergeräte spezifisch sind.

ParameterTypStandardBeschreibung
baseDeviceAddressint0x50Die Basisgeräteadresse für I 2 C -Geräte.
pageShiftint0Geräte, deren Kapazität die Gesamtzahl der in ihrem Adresswort bereitgestellten Bits übersteigt, verwenden Bits der I 2 C -Geräteadresse, um die Daten vollständig zu adressieren. Der Parameter pageShift gibt die Position des niedrigstwertigen Bits dieser Adressbits in der I 2 C -Geräteadresse an. Dieser Parameter ist normalerweise Null, aber die Microchip 24xx1025-Familie ist eine, die diesen Parameter erfordert.
autoPageUpdateboolWAHRGeräte, deren Kapazität die Gesamtzahl der in ihrem Adresswort bereitgestellten Bits übersteigt, verwenden Bits der I 2 C -Geräteadresse, um die Daten vollständig zu adressieren. Der Parameter autoPageUpdate gibt an, ob der interne Adresszähler des Geräts Seitengrenzen automatisch überschreiten kann, sodass diese Bits während eines sequentiellen Lesevorgangs nicht geändert werden müssen. Dieser Parameter ist immer falsch, wenn pageShift nicht Null ist.

3.5 Erforderliche SPI-Speichergeräteparameter

Im Folgenden finden Sie eine Tabelle der erforderlichen Parameter, die sowohl für SPI-EEPROM-Geräte als auch für SPI-Flash-Geräte spezifisch sind. Alle diese Parameter müssen für alle SPI-Speichergeräte definiert werden. Bei vielen dieser Parameter sind die Standardwerte jedoch die richtigen Werte

ParameterTypStandardBeschreibung
readStatusRegisterInstructionint0x05Die Anweisung zum Lesen des Gerätestatusregisters. Dies ist das Register, das das Busy-Bit und die Blockschutzbits enthält. Dies muss eingestellt werden, um die Abfrage zu ermöglichen.
deviceBusyBitint0x01Die Bits im Statusregister, die anzeigen, dass ein Vorgang ausgeführt wird. Dieser Parameter wird als Bitmaske im Statusregister verwendet, um den Besetztstatus zu bestimmen. Dies muss eingestellt werden, um die Abfrage zu ermöglichen.
BusyBitPolarityboolFALSCHDie Polarität des Busy-Bits im Statusregister. Wird auf „true“ gesetzt , wenn das Busy-Bit eine umgekehrte Polarität hat, was bedeutet, dass 1 bereit bedeutet.
readAnweisungint0x03Die Anweisung, die einen Lesevorgang vom Gerät aus initiiert. Bei Geräten mit schnellem Lesebefehl sollte der Standardwert überschrieben werden.
readDummyBytesint0Die Anzahl der Füllbytes, die zwischen der readInstruction und dem Verschieben von Daten aus dem Gerät eingefügt werden. Normalerweise muss dieser Parameter nur für Flash-Geräte mit einem schnellen Lesebefehl festgelegt werden.
writeInstructionint0x02Die Anweisung, Daten auf das Gerät zu schreiben.
writeEnableInstructionint0x06Die Anweisung, die gesendet wird, um das Schreiben auf das Gerät zu ermöglichen. Auf 0 setzen, wenn das Gerät keinen Schreibaktivierungsbefehl hat.
writeDisableInstructionint0x04Die Anweisung, die zum Beenden des Schreibmodus gesendet wird. Auf 0 setzen, wenn das Gerät keine Schreibsperranweisung hat.
writeEnableBitsint0x02Die Bits des Statusregisters, die die erfolgreiche Ausführung der writeEnableInstruction anzeigen .

3.6 Optionale SPI-Speichergeräteparameter

Im Folgenden finden Sie eine Tabelle mit optionalen Parametern, die sowohl für SPI-EEPROM-Geräte als auch für SPI-Flash-Geräte spezifisch sind. Obwohl diese Parameter nicht erforderlich sind, verbessert ihre Definition die Fähigkeit des Flash Centers, Fehler während des Programmiervorgangs zu erkennen.

ParameterTypStandardBeschreibung
readDeviceIdInstructionint Für Geräte, die dies unterstützen, die Anweisung zum Auslesen der Geräte-ID.
erwartete Geräte-IDBinärdaten
_
 Der ID-Code, der von der Anweisung zum Lesen der Geräte-ID erwartet wird. Die Definition dieses Parameters ist nur erforderlich, wenn auch readDeviceIdInstruction definiert ist.
advancedAddressingEnableInstructionint Für große Speichergeräte mit abwärtskompatiblen Lese-, Programmier- und Löschvorgängen aktiviert dieser Befehl den erweiterten Adressierungsmodus für diese abwärtskompatiblen Vorgänge. Geben Sie für Geräte mit neuen, nur erweiterten Lese-, Programmier- und Löschanweisungen diese Anweisungen anstelle dieses Befehls an.
writeBufferInstructionint Für Speichergeräte, die über einen zweiteiligen Seitenprogrammierungsprozess verfügen, definiert dies die Anweisung zum Schreiben von Daten in einen Speicherpuffer. Beispiele für Speicherteile, die Speicherpuffer für die Seitenprogrammierung verwenden, finden Sie in der Atmel AT45DBxxxx-Familie von SPI-Flash-Bauteilen.
writeAutoAddressIncrementInstructionint Für SST-Speichergeräte, die über einen AAI-Programmprozess (Auto Address Increment) verfügen, definiert dies die AAI-Programmanweisung.
writeAutoAddressIncrementSizeint Für SST-Speichergeräte, die über einen AAI-Programmprozess (Auto Address Increment) verfügen, definiert dies die Anzahl der Bytes, die jeder Instanz des AAI-Befehls folgen. Der Wert muss ungleich Null sein, wenn die AAI-Programmanweisung definiert ist.
writeAutoAddressIncrementTimeint Für SST-Speichergeräte, die über einen AAI-Programmprozess (Auto Address Increment) verfügen, definiert dies die Anzahl der Mikrosekunden, die für den Abschluss jeder AAI-Schreibiteration benötigt werden. Im Gegensatz zu writeTime sollte dieser Wert die maximale Schreibzeit und nicht die minimale sein. Der Wert muss ungleich Null sein, wenn die AAI-Programmanweisung definiert ist.
writeStatusRegisterInstructionint0x01Die Anweisung zum Schreiben in das Statusregister. Auf 0 gesetzt, wenn das Gerät keine Anweisung zum Schreiben des Statusregisters hat.
writeStatusRegisterEnableInstructionint Die Anweisung, das Schreiben in das Statusregister zu ermöglichen. Definieren Sie diesen Parameter für Teile, die über separate Anweisungen zur Schreibfreigabe und Schreibstatusregisterfreigabe verfügen. Wenn dieser Parameter nicht definiert ist, verwendet das Flash Center den für writeEnableInstruction definierten Wert .
writeStatusRegisterTimeint5000Die Anzahl der Mikrosekunden, die erforderlich sind, um einen Schreibvorgang in das Statusregister abzuschließen. Verwenden Sie den minimalen oder typischen Wert, da das Flash Center das Gerät abfragen kann, um bei Bedarf zusätzliche Zeit zu warten. Wenn es für den Speicherteil mehrere Geschwindigkeitsstufen gibt, wird für diesen Parameter die niedrigste Zeit empfohlen.
deviceConnectedBitsint Die Bits des Statusregisters, die immer auf  1 gesetzt sind . Dies wird mit dem Parameter „deviceConnectedMask“ zur Erkennung nicht angeschlossener SPI-Geräte verwendet. Weitere Informationen zu diesem Parameter finden Sie im folgenden Abschnitt.
deviceConnectedMaskint Die Bits des Statusregisters, die einen festen Wert haben. Dies wird mit dem Parameter „deviceConnectedBits“ zur Erkennung nicht angeschlossener SPI-Geräte verwendet. Wenn nicht definiert, wird der Wert von deviceConnectedBits verwendet. Weitere Informationen zu diesem Parameter finden Sie im folgenden Abschnitt.
blockProtectBitsint0x9cLegt fest, welche Bits des Statusregisters anzeigen, dass die Geräteblöcke oder das Statusregister schreibgeschützt sind. Weitere Informationen zu diesem Parameter finden Sie im folgenden Abschnitt.
Schlafmodusint0Legt den SPI-Modus fest (0-3).
0 : Modus 0. Daten werden bei der steigenden Flanke des Takts erfasst (Übergang von niedrig nach hoch) und Daten werden bei einer fallenden Flanke (Übergang von hoch nach niedrig) weitergegeben.
1 : Modus 1. Daten werden bei der fallenden Flanke des Takts erfasst und bei einer steigenden Flanke weitergegeben.
2 : Modus 2. Daten werden bei der fallenden Flanke des Takts erfasst und bei einer steigenden Flanke werden die Daten weitergegeben.
3 : Modus 3. Daten werden bei der steigenden Flanke des Takts erfasst und bei einer fallenden Flanke weitergegeben.
spiBitorderboolWAHRLegt die SPI-Bitreihenfolge fest. Die Option bitorder wird verwendet, um anzugeben, ob LSB oder MSB zuerst verschoben wird. Wird für MSB auf „true“ gesetzt.
spiSSPolarityboolWAHRLegt die SS-Polarität fest, also die Ausgangspolarität auf der SS-Leitung. Setzt „true“ für aktives Low.

Geräteverbundene Bits und Maske

Im SPI-Protokoll gibt es keine vordefinierte Methode für ein SPI-Slave-Gerät, um den Empfang von Befehlen vom SPI-Master zu bestätigen. Daher könnte der SPI-Master dem Slave einen Befehl senden, aber der Master verfügt möglicherweise nicht über eine Methode zum Bestimmen, ob ein Slave-Gerät angeschlossen wurde, um ihn zu empfangen. Wenn ein SPI-Speichergerät jedoch Bits im Statusregister hat, die immer einen festen Wert haben, kann das Statusregister von Flash Center verwendet werden, um festzustellen, ob eine Verbindung zum Gerät besteht oder nicht.

Die Parameter deviceConnectedBits und deviceConnectedMask werden verwendet, um diese Bits im Statusregister zu definieren. Der Parameter deviceConnectedMask teilt Flash Center mit, welche Bits einen festen Wert haben, und deviceConnectedBits gibt an, wie hoch der Wert dieser Bits ist. Wenn diese Parameter für ein Speichergerät definiert sind, überprüft Flash Center diese Bits auf eine Verbindung zum Zielgerät, sowohl während das Speichergerät inaktiv ist als auch während eine Speicheroperation, wie z. B. ein Seitenprogramm oder eine Sektorlöschoperation, ausgeführt wird .

Wenn deviceConnectedBits definiert ist, deviceConnectedMask jedoch undefiniert oder 0 ist, verwendet Flash Center den Wert von deviceConnectedBits für deviceConnectedMask. Dies führt dazu, dass Flash Center nur Bits im Statusregister erkennen kann, die einen festen Wert von 1 haben, nicht jedoch Bits, die einen festen Wert von 0 haben.

Wenn sowohl deviceConnectedBits als auch deviceConnectedMask undefiniert oder 0 sind, wird das Statusregister nicht zum Erkennen einer Verbindung zum Zielspeichergerät verwendet.

Hinweis: Einige Speichergeräte geben unterschiedliche Ergebnisse zurück, wenn das Statusregister während einer Speicheroperation gelesen wird. Beispielsweise gibt die Atmel AT25xxxx-Familie b1111_1111 zurück, während eine Speicheroperation ausgeführt wird. Da keines der Bits im Statusregister den gleichen Wert hat, während die Teile inaktiv sind, sind deviceConnectedBits und deviceConnectedMask für diese Teile nicht definiert, und das Statusregister wird nicht zum Bestimmen einer Verbindung zu den Teilen verwendet.

 

Blockschutzbits

Die meisten SPI-Speicherteile verfügen über ein System, mit dem Teile des Speichers vor Änderungen geschützt werden können. Der Parameter blockProtectBits teilt Flash Center mit, welche Bits des Statusregisters anzeigen, dass der Blockschutz aktiviert ist. In der Regel hat ein Speichergerät ein Bit im Statusregister, um anzuzeigen, dass der Blockschutz aktiviert ist, sowie Bits, mit denen angegeben wird, welche Blöcke geschützt sind. Alle diese Bits sollten im Parameter blockProtectBits enthalten sein.

Wenn zu Beginn eines Lösch- oder Schreibvorgangs eines der Blockschutzbits im Statusregister ungleich Null ist, schreibt das Flash Center 0 in das Statusregister, um den Blockschutz zu löschen. Wenn der Befehl zum Schreiben des Statusregisters nicht definiert ist oder das Schreiben in das Statusregister die Blockschutzbits nicht löscht, wird eine Fehlermeldung angezeigt und die Operation wird beendet.

Bei Geräten, deren Blockschutzbits nicht durch Schreiben in das Statusregister gelöscht werden (z. B. haben sie spezielle Anweisungen zum Löschen des Blockschutzes), muss der Blockschutz gelöscht werden, bevor Flash Center zum Programmieren des Geräts verwendet wird.

3.7 Benutzerdefinierbare SPI-Speichergeräteparameter

Im Folgenden finden Sie eine Tabelle mit optionalen, benutzerdefinierbaren Parametern, die sowohl für SPI-EEPROM-Geräte als auch für SPI-Flash-Geräte verfügbar sind. Mit zwei Benutzertransaktionsfeldern können Benutzer beliebige SPI-Transaktionsdaten definieren, die Flash Center vor jedem Lese-, Schreib- und Löschvorgang sendet.

ParameterTypStandardBeschreibung
userTransaction1Binärdaten
_
 Vom Benutzer definierbare Transaktion, die vor dem Start jedes Lese-, Programmier- oder Löschvorgangs gesendet wird.
userTransaction2Binärdaten
_
 Vom Benutzer definierbare Transaktion, die vor dem Start jedes Lese-, Programmier- oder Löschvorgangs gesendet wird.
userTransaction1WriteEnableboolFALSCHAuf „true“ setzen , um die writeEnableInstruction vor dem Senden von userTransaction1 zu senden .
userTransaction2WriteEnableboolFALSCHAuf „true“ setzen , um die writeEnableInstruction vor dem Senden von userTransaction2 zu senden .
userTransaction1Timeint Die Anzahl der Mikrosekunden, die zum Abschließen von userTransaction1 erforderlich sind . Verwenden Sie den minimalen oder typischen Wert, da das Flash Center das Gerät abfragen kann, um bei Bedarf zusätzliche Zeit zu warten. Wenn es für den Speicherteil mehrere Geschwindigkeitsstufen gibt, wird für diesen Parameter die niedrigste Zeit empfohlen.
userTransaction2Timeint Die Anzahl der Mikrosekunden, die zum Abschließen von userTransaction2 erforderlich sind . Verwenden Sie den minimalen oder typischen Wert, da das Flash Center das Gerät abfragen kann, um bei Bedarf zusätzliche Zeit zu warten. Wenn es für den Speicherteil mehrere Geschwindigkeitsstufen gibt, wird für diesen Parameter die niedrigste Zeit empfohlen.

Hinweise zu benutzerdefinierbaren Transaktionen

Die in den beiden userTransaction-Feldern angegebenen Bytes werden unverändert auf dem SPI-Bus gesendet. Das Anweisungsbyte und andere Daten sollten in einem userTransaction-Feld kombiniert werden. Wenn die bereitgestellte Operation eine Schreibfreigabe erfordert (z. B. Registerprogrammierung), verwenden Sie die Bool-Felder für die Schreibfreigabe.

Das folgende Beispiel zeigt das Programmieren eines nichtflüchtigen Konfigurationsregisters mit dem Befehl 0xB1, den erforderlichen Daten 0xFFFF, WREN und der durchschnittlichen Festschreibungszeit von 0,2 Sekunden.

 <userTransaction1>\\xB1\\xFF\\xFF</userTransaction1> <userTransaction1WriteEnable>true</userTransaction1WriteEnable> <userTransaction1Time>200000</userTransaction1Time>

3.8 Parameter des SPI-Flash-Speichergeräts

Das Folgende ist eine Tabelle der Parameter, die für SPI-Flash-Speichergeräte spezifisch sind.

ParameterTypStandardBeschreibung
Löschanweisungint Die Anweisung, die einen Teil des Geräts löscht. Wenn das Gerät über mehrere Löschgrößen verfügt (für Geräte mit Sektor- und Blocklöschung), wird empfohlen, die Anweisung für die kleinere Löschgröße anzugeben.
EraseSizeint Die Größe des durch eraseInstruction gelöschten Teils in Bytes . Wenn das Gerät über mehrere Löschgrößen verfügt (für Geräte mit Sektorlöschung und Blocklöschung), wird empfohlen, die kleinere Größe anzugeben. Der Wert darf nicht Null sein.
EraseTimeint Die Anzahl der Mikrosekunden, die erforderlich sind, um den in eraseInstruction angegebenen Löschvorgang abzuschließen . Verwenden Sie den minimalen oder typischen Wert, da das Flash Center das Gerät abfragen kann, um bei Bedarf zusätzliche Zeit zu warten. Wenn es für den Speicherteil mehrere Geschwindigkeitsstufen gibt, wird für diesen Parameter die niedrigste Zeit empfohlen. Der Wert darf nicht Null sein.
hasEraseAllboolFALSCHWenn auf true gesetzt , bedeutet dies, dass das Gerät den Chip-Löschbefehl unterstützt und eraseAllInstruction und eraseAllTime definiert werden müssen.
EraseAllInstructionint Die Anweisung, einen vollständigen Chiplöschvorgang durchzuführen.
EraseAllTimeint Die Anzahl der Mikrosekunden, die zum Ausführen des Chiplöschvorgangs erforderlich sind. Verwenden Sie den minimalen oder typischen Wert, da das Flash Center das Gerät abfragen kann, um bei Bedarf zusätzliche Zeit zu warten. Wenn es für den Speicherteil mehrere Geschwindigkeitsstufen gibt, wird für diesen Parameter die niedrigste Zeit empfohlen. Der Wert darf nicht Null sein.
eraseBeforeWriteboolWAHRWenn der Wert auf „false“ gesetzt ist , gibt Flash Center vor einem Schreibbefehl keine Löschbefehle aus. Dies ist nützlich für Geräte wie die Atmel AT45DBxxxx-Familie von SPI-Flash-Bauteilen, da sie einen einzigen Befehl unterstützen, der eine Speicherseite löscht und programmiert.

3.9 Parameter des SPI-E/A-Modus

Das Folgende ist eine Tabelle der Parameter, die für SPI-Flash-Speichergeräte spezifisch sind.

ParameterTypStandardBeschreibung
ioModeAddressint1Der SPI-E/A-Modus wird zum Übertragen des Adressfelds der SPI-Transaktion verwendet. Mögliche Werte sind 0, 2 oder 4.
ioModeDataInint1Der SPI-E/A-Modus wird zum Empfangen des Datenfelds der SPI-Transaktion verwendet und die möglichen Werte sind 0, 2 oder 4.
ioModeDataOutint1Der SPI-E/A-Modus, der zum Übertragen des Datenfelds der SPI-Transaktion verwendet wird, und mögliche Werte sind 0, 2 oder 4.

Weiterführende Artikel

TotalPhase-Blog-Bild

Hinzufügen eines IC zu Total Phase Flash Center

Die Flash Center Software ermöglich durch einfaches erweitern der XML basierten Bibliothek, das Hinzufügen von neuen Chips.

TotalPhase-Blog-Bild

Programmieren eines SPI-EEPROM mit der Promira-Plattform auf Linux

In diesem Artikel wird beschrieben, wie Sie die Befehle im seriellen Befehlszeilenmodus der Befehlszentrale ausführen.

TotalPhase-Blog-Bild

Programmieren eines I2C EEPROMS mit Promira

Das Programmieren von I2C-Speichergeräten ist ein häufiger Anwendungsfall für die Promira ™ Serial Plattform mit I2C Active Level 1-2 Anwendungen.

TotalPhase-Blog-Bild

I2C-, SPI- und USB-Tools für AVR-Entwickler

Die geeigneten USB Werkzeuge für AVR und AVR32 sowie für Serielle Busse für AVR Microcontroller.