Total Phase Flash Center | Hinzufügen eines Baustein

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" encoding="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.

 

Table 2 : Global Memory Device Parameters
 
Parameter Type Default Description
deviceAlgorithm text   The type of memory device. The programming algorithm will be determined based on this parameter value. Supported values are i2c eeprom, spi eeprom, and spi flash, case insensitive.
deviceName text   The name of the memory device. Note that the device name must be unique; devices with duplicate names will result in an error.
deviceDescription text   A long description of the device. Displayed when the memory device is selected during selection of the target. Typically, it contains the manufacturer name, device name, memory size, and device type.
manufacturerName text   The manufacturer of the memory device.
capacity int   Size of the device in bytes. Value must be non-zero.
maxBitrate int   The maximum bit rate the device can use to communicate to the programming adapter. Value must be non-zero. If there are multiple speed grades for the memory part, the highest bit rate is recommended for this parameter.
addressWidth int 1 The number of bytes in the memory address field when reading from and writing to the device. If the address has overflow bits they will automatically be added to the device address (I2C) or command code (SPI). Value must be non-zero.
writeSize int   The number of bytes per write operation. For parts with variable page sizes, enter the size of the smallest page. Value must be non-zero.
writeTime int   The number of microseconds required to complete a write operation to a single page. Use the minimum or typical value, as the Flash Center can poll the device to wait additional time if necessary. If there are multiple speed grades for the memory part, the lowest time is recommended for this parameter. Value must be non-zero.
 
 
 

3.4 Parameter des I2C-Speichergeräts


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

Table 3 : I2C Memory Device Parameters
 
Parameter Type Default Description
baseDeviceAddress int 0x50 The base device address for I2C devices.
pageShift int 0 Devices whose capacity exceeds the total number of bits supplied in its address word, will use bits of the I2C device address to fully address the data. The pageShift parameter specifies the position of the least significant bit of such address bits in the I2C device address. This parameter is usually zero, but the Microchip 24xx1025 family is one that requires this parameter.
autoPageUpdate bool true Devices whose capacity exceeds the total number of bits supplied in its address word will use bits of the I2C device address to fully address the data. The autoPageUpdate parameter specifies whether the devices internal address counter is able to cross page boundaries automatically, thus not requiring these bits to be modified during a sequential read. This parameter is always false if pageShift is not zero.
 

 

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.

Table 4 : Required SPI Memory Device Parameters
 
Parameter Type Default Description
readStatusRegisterInstruction int 0x05 The instruction to read the device status register. This is the register which contains the busy bit and the block protect bits. This must be set to enable polling.
deviceBusyBit int 0x01 The bits in the status register which indicate that an operation is in progress. This parameter is used as a bit mask on the status register to determine the busy status. This must be set to enable polling.
busyBitPolarity bool false The polarity of the busy bit in the status register. Set to true if the busy bit has inverted polarity, signifying that 1 means ready.
readInstruction int 0x03 The instruction which initiates a read operation from the device. For devices with a fast read command, the default value should be overridden.
readDummyBytes int 0 The number of padding bytes inserted in between the readInstruction and shifting data out of the device. Typically, this parameter only needs to be set for flash devices with a fast read command.
writeInstruction int 0x02 The instruction to write data to the device.
writeEnableInstruction int 0x06 The instruction which is sent to enable writing to the device. Set to 0 if the device does not have a write enable instruction.
writeDisableInstruction int 0x04 The instruction which is sent to terminate write mode. Set to 0 if the device does not have a write disable instruction.
writeEnableBits int 0x02 The bits of the status register that indicate the successful execution of the writeEnableInstruction.
 
 

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.

Table 5 : Optional SPI Memory Device Parameters
 
Parameter Type Default Description
readDeviceIdInstruction int   For devices that support it, the instruction to read the device ID.
expectedDeviceId binary
data
  The ID code expected from the read device ID instruction. Defining this parameter is only necessary if readDeviceIdInstruction is also defined.
extendedAddressingEnableInstruction int   For large memory devices with backward compatible read, program and erase operations, this instruction enables extended addressing mode for those backward compatible operations. For devices with new, extended-only read, program and erase instructions, supply those instructions in lieu of this command.
writeBufferInstruction int   For memory devices that have a two-part page program process, this defines the instruction for writing data to a memory buffer. See the Atmel AT45DBxxxx family of SPI flash parts for examples of memory parts that use memory buffers for page programming.
writeAutoAddressIncrementInstruction int   For SST memory devices that have an auto address increment (AAI) program process, this defines the AAI program instruction.
writeAutoAddressIncrementSize int   For SST memory devices that have an auto address increment (AAI) program process, this defines the number of bytes that follow each instance of the AAI instruction. Value must be non-zero if the AAI program instruction is defined.
writeAutoAddressIncrementTime int   For SST memory devices that have an auto address increment (AAI) program process, this defines the number of microseconds to complete each AAI write iteration. Unlike writeTime , this value should be the maximum write time, not the minimum. Value must be non-zero if the AAI program instruction is defined.
writeStatusRegisterInstruction int 0x01 The instruction to write to the status register. Set to 0 if the device does not have a write status register instruction.
writeStatusRegisterEnableInstruction int   The instruction to enable writing to the status register. Define this parameter for parts that have separate write enable and write status register enable instructions. If this parameter is undefined, the Flash Center will use the value defined for writeEnableInstruction .
writeStatusRegisterTime int 5000 The number of microseconds required to complete a write operation to the status register. Use the minimum or typical value, as the Flash Center can poll the device to wait additional time if necessary. If there are multiple speed grades for the memory part, the lowest time is recommended for this parameter.
deviceConnectedBits int   The bits of the status register that are always set to 1. This is used with the deviceConnectedMask parameter for detecting unplugged SPI devices. See the section below for more information about this parameter.
deviceConnectedMask int   The bits of the status register that have a fixed value. This is used with the deviceConnectedBits parameter for detecting unplugged SPI devices. If undefined, the value from deviceConnectedBits will be used. See the section below for more information about this parameter.
blockProtectBits int 0x9c Sets which bits of the status register indicate that the device blocks or the status register are write protected. See the section below for more information about this parameter.
spiMode int 0 Sets SPI mode (0-3).
0: Mode 0. Data are captured on the clock's rising edge (low to high transition) and data is propagated on a falling edge (high to low clock transition).
1: Mode 1. Data are captured on the clock's falling edge and data is propagated on a rising edge.
2: Mode 2. Data are captured on clock's falling edge and data is propagated on a rising edge.
3: Mode 3. Data are captured on clock's rising edge and data is propagated on a falling edge.
spiBitorder bool true Sets SPI bitorder. The bitorder option is used to indicate whether LSB or MSB is shifted first. Sets true for MSB.
spiSSPolarity bool true Sets SS polarity which is the output polarity on the SS line. Sets true for active 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.

 

Block Protect Bits

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.

Table 6 : User-Definable SPI Memory Device Parameters
 
Parameter Type Default Description
userTransaction1 binary
data
  User-definable transaction sent before the start of each read, program, or erase operation.
userTransaction2 binary
data
  User-definable transaction sent before the start of each read, program, or erase operation.
userTransaction1WriteEnable bool false Set to true to send the writeEnableInstruction before sending userTransaction1.
userTransaction2WriteEnable bool false Set to true to send the writeEnableInstruction before sending userTransaction2.
userTransaction1Time int   The number of microseconds required to complete userTransaction1. Use the minimum or typical value, as the Flash Center can poll the device to wait additional time if necessary. If there are multiple speed grades for the memory part, the lowest time is recommended for this parameter.
userTransaction2Time int   The number of microseconds required to complete userTransaction2. Use the minimum or typical value, as the Flash Center can poll the device to wait additional time if necessary. If there are multiple speed grades for the memory part, the lowest time is recommended for this parameter.

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.

Table 7 : SPI Flash Memory Device Parameters
 
Parameter Type Default Description
eraseInstruction int   The instruction which erases a portion of the device. If the device has multiple erase sizes (for devices with both sector and block erase), it is recommended that the instruction for the smaller erase size be given.
eraseSize int   The size in bytes of the portion erased by eraseInstruction . If the device has multiple erase sizes (for devices with both sector erase and block erase), it is recommended that the smaller size be specified. Value must be non-zero.
eraseTime int   The number of microseconds required complete the erase operation specified in eraseInstruction . Use the minimum or typical value, as the Flash Center can poll the device to wait additional time if necessary. If there are multiple speed grades for the memory part, the lowest time is recommended for this parameter. Value must be non-zero.
hasEraseAll bool false If set to true, indicates that the device has support for the chip erase command and eraseAllInstruction and eraseAllTime must be defined.
eraseAllInstruction int   The instruction to execute a full chip erase.
eraseAllTime int   The number of microseconds required to execute the chip erase operation. Use the minimum or typical value, as the Flash Center can poll the device to wait additional time if necessary. If there are multiple speed grades for the memory part, the lowest time is recommended for this parameter. Value must be non-zero.
eraseBeforeWrite bool true If set to false, Flash Center will not issue erase commands before a write command. This is useful for devices such as the Atmel AT45DBxxxx family of SPI flash parts, as they support a single command that erases and programs a page of memory.

 

3.9 SPI I/O Mode Parameters

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

Table 8 : Multi I/O SPI Mode Parameters
 
Parameter Type Default Description
ioModeAddress int 1 The SPI I/O mode used to transmit address field of SPI transaction and possible values are 0, 2, or 4.
ioModeDataIn int 1 The SPI I/O mode used to receive data field of SPI transaction and possible values are 0, 2, or 4.
ioModeDataOut int 1 The SPI I/O mode used to transmit data field of SPI transaction and possible values are 0, 2, or 4.