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.
Parameter | Type | Default | Beschreibung |
---|---|---|---|
deviceAlgorithm | text | 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. | |
deviceName | text | Der Name des Speichergeräts. Beachten Sie, dass der Gerätename eindeutig sein muss; Geräte mit doppelten Namen führen zu einem Fehler. | |
deviceDescription | text | 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. | |
manufacturerName | text | Der Hersteller des Speichergeräts. | |
capacity | int | Größe des Geräts in Bytes. Der Wert darf nicht Null sein. | |
maxBitrate | int | 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. | |
addressWidth | int | 1 | Die 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. |
writeSize | int | 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. | |
writeTime | int | 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.
Parameter | Typ | Standard | Beschreibung |
---|---|---|---|
baseDeviceAddress | int | 0x50 | Die Basisgeräteadresse für I 2 C -Geräte. |
pageShift | int | 0 | Gerä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. |
autoPageUpdate | bool | WAHR | Gerä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
Parameter | Typ | Standard | Beschreibung |
readStatusRegisterInstruction | int | 0x05 | Die 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. |
deviceBusyBit | int | 0x01 | Die 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. |
BusyBitPolarity | bool | FALSCH | Die 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. |
readAnweisung | int | 0x03 | Die Anweisung, die einen Lesevorgang vom Gerät aus initiiert. Bei Geräten mit schnellem Lesebefehl sollte der Standardwert überschrieben werden. |
readDummyBytes | int | 0 | Die 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. |
writeInstruction | int | 0x02 | Die Anweisung, Daten auf das Gerät zu schreiben. |
writeEnableInstruction | int | 0x06 | Die Anweisung, die gesendet wird, um das Schreiben auf das Gerät zu ermöglichen. Auf 0 setzen, wenn das Gerät keinen Schreibaktivierungsbefehl hat. |
writeDisableInstruction | int | 0x04 | Die Anweisung, die zum Beenden des Schreibmodus gesendet wird. Auf 0 setzen, wenn das Gerät keine Schreibsperranweisung hat. |
writeEnableBits | int | 0x02 | Die 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.
Parameter | Typ | Standard | Beschreibung |
---|---|---|---|
readDeviceIdInstruction | int | Für Geräte, die dies unterstützen, die Anweisung zum Auslesen der Geräte-ID. | |
erwartete Geräte-ID | Binä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. | |
advancedAddressingEnableInstruction | int | 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. | |
writeBufferInstruction | int | 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. | |
writeAutoAddressIncrementInstruction | int | Für SST-Speichergeräte, die über einen AAI-Programmprozess (Auto Address Increment) verfügen, definiert dies die AAI-Programmanweisung. | |
writeAutoAddressIncrementSize | int | 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. | |
writeAutoAddressIncrementTime | int | 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. | |
writeStatusRegisterInstruction | int | 0x01 | Die Anweisung zum Schreiben in das Statusregister. Auf 0 gesetzt, wenn das Gerät keine Anweisung zum Schreiben des Statusregisters hat. |
writeStatusRegisterEnableInstruction | int | 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 . | |
writeStatusRegisterTime | int | 5000 | Die 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. |
deviceConnectedBits | int | 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. | |
deviceConnectedMask | int | 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. | |
blockProtectBits | int | 0x9c | Legt 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. |
Schlafmodus | int | 0 | Legt 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. |
spiBitorder | bool | WAHR | Legt 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. |
spiSSPolarity | bool | WAHR | Legt 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.
Parameter | Typ | Standard | Beschreibung |
---|---|---|---|
userTransaction1 | Binärdaten _ | Vom Benutzer definierbare Transaktion, die vor dem Start jedes Lese-, Programmier- oder Löschvorgangs gesendet wird. | |
userTransaction2 | Binärdaten _ | Vom Benutzer definierbare Transaktion, die vor dem Start jedes Lese-, Programmier- oder Löschvorgangs gesendet wird. | |
userTransaction1WriteEnable | bool | FALSCH | Auf „true“ setzen , um die writeEnableInstruction vor dem Senden von userTransaction1 zu senden . |
userTransaction2WriteEnable | bool | FALSCH | Auf „true“ setzen , um die writeEnableInstruction vor dem Senden von userTransaction2 zu senden . |
userTransaction1Time | int | 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. | |
userTransaction2Time | int | 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.
Parameter | Typ | Standard | Beschreibung |
---|---|---|---|
Löschanweisung | int | 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. | |
EraseSize | int | 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. | |
EraseTime | int | 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. | |
hasEraseAll | bool | FALSCH | Wenn auf true gesetzt , bedeutet dies, dass das Gerät den Chip-Löschbefehl unterstützt und eraseAllInstruction und eraseAllTime definiert werden müssen. |
EraseAllInstruction | int | Die Anweisung, einen vollständigen Chiplöschvorgang durchzuführen. | |
EraseAllTime | int | 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. | |
eraseBeforeWrite | bool | WAHR | Wenn 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.
Parameter | Typ | Standard | Beschreibung |
---|---|---|---|
ioModeAddress | int | 1 | Der SPI-E/A-Modus wird zum Übertragen des Adressfelds der SPI-Transaktion verwendet. Mögliche Werte sind 0, 2 oder 4. |
ioModeDataIn | int | 1 | Der SPI-E/A-Modus wird zum Empfangen des Datenfelds der SPI-Transaktion verwendet und die möglichen Werte sind 0, 2 oder 4. |
ioModeDataOut | int | 1 | Der 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
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.
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.
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.
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.