Laden Sie hier die neueste stabile Version von hier herunter. Bitte melden Sie Fehler in Problemen.
Diese Arduino -Bibliothek dient zur Verwendung mit Flash- und Fram -Speicherchips, die mit dem SPI -Protokoll kommunizieren. In seiner aktuellen Form unterstützt es die Identifizierung des Flash/Fram -Chips und seiner verschiedenen Merkmale. automatische Adresszuweisung und -verwaltung; Schreiben und Lesen einer Reihe verschiedener Arten von Daten, die von 8-Bit bis 32-Bit- (signiert und nicht signiert) Werten, Schwimmer, Zeichenfolgen, Arrays von Bytes/Zeichen und Strukturen an und von verschiedenen Stellen reichen; Sektor, Block- und Chip -Löschen; und für den Betrieb mit geringem Stromverbrauch einschalten.
| Mikrocontroller | Dev Boards getestet mit | Notizen |
|---|---|---|
| Atmega328p | Arduino Uno, Arduino Micro, Arduino Fio, Arduino Nano | - - |
| ATMEGA32U4 | Arduino Leonardo, Arduino Fio V3 | - - |
| ATMEGA2560 | Arduino Mega | - - |
| ATSAMD21G18 (Arm Cortex M0+) | Adafruit Feather M0, Adafruit Feather M0 Express, Adafruit Itsybitsy M0 Express | - - |
| AT91SAM3X8E (Arm Cortex M3) | Arduino fällig | - - |
| NRF52832 (Arm Cortex M4F) | Adafruit Nrf52 Feder | - - |
| ATSAMD51J19 (Arm Cortex M4) | Adafruit Metro M4 | - - |
| STM32F091RCT6 | Nucleo-F091RC | |
| STM32L0 | Nucleo-L031K6 | |
| ESP8266 | Adafruit ESP8266 Feder, Sparkfun ESP826 Ding | - - |
| ESP32 | Adafruit ESP32 Feder, Sparkfun Esp32 Sache | Bord -Flash -Speicher. Siehe Fußnote £ unten. |
| Simblee | Sparkfun Simblee | - - |
£ ESP32 -Boards haben normalerweise bereits einen SPI -Blitz an ihren Standard -SS -PIN, sodass der Benutzer den mit dem Konstruktor verwendeten ChipSelect -Pin explizit deklarieren muss
| Hersteller | Flash IC | Notizen |
|---|---|---|
| Winbond | W25Q16BV W25Q64FV W25Q64JV W25Q80BV W25Q256FV | Sollte mit dem W25QXXXBV, W25QXXXFV & arbeiten W25qxxxjv Familien |
| Mikrochip | SST25VF064C SST26VF016B SST26VF032B SST26VF064B | Sollte mit den Familien SST25 & SST26 zusammenarbeiten |
| Zypresse/Spansion | S25FL032p S25FL116K S25FL127S | Sollte mit der Familie S25FL zusammenarbeiten |
| Auf Halbleiter | LE25U40CMC | |
| Amic | A25L512A0 | |
| Mikron | M25P40 | |
| Adesto | AT25SF041 | |
| MACRONIX | MX25L4005 MX25L4005 | |
| Giga -Geräte | GD25Q16C | (Verwendet am Adafruit Itsybitsy M0 Express) |
| Hersteller | Flash IC | Notizen |
|---|---|---|
| Zypresse/Spansion | FM25W256 | Sollte mit der Familie FM25W zusammenarbeiten |
Die Bibliothek wird aufgerufen, indem der Konstruktor der SPIFlash flash(csPin*) deklariert wird, bei dem 'Flash' durch einen Benutzerkonstruktor der Wahl ersetzt werden kann, und 'CSPin' ist der Chip -Auswahl -Pin für das Flash -Modul.
* Optional. Fügen Sie CSPIN nicht bei, wenn Sie den Standard -Slave verwenden, wenn Sie die PIN für Ihre Platine auswählen.
Jede Version der Bibliothek> = v3.0.0 unterstützt die Möglichkeit, mehrere SPI-Schnittstellen zu verwenden (wenn Ihr Mikrokontroller sie unterstützt). Das Umschalten zur Verwendung einer anderen SPI -Schnittstelle erfolgt durch Aufrufen von SPIFlash flash(csPin, &SPI1); (oder & spi2 usw.) anstelle von SPIFlash flash(csPin) .
* Hinweis: Dies wird derzeit nur auf den Architekturen SAMD und STM32 unterstützt.
Eine alternative Version SPIFlash flash (SPIPinsArray) des Konstruktors kann verwendet werden (nur mit ESP32 -Board ab sofort), um die Verwendung von benutzerdefinierten SPI -Stiften zu ermöglichen. SPIPinsArray muss ein 4 -Element -Array sein, das die benutzerdefinierten SPI -Pin -Nummern (als signierte ganze Zahlen - int8_t) in der folgenden Reihenfolge - SCK, Miso, Mosi, SS.
Stellen Sie außerdem sicher, dass flash.begin(CHIPSIZE*) in void setup() einbezieht. Dadurch kann die Bibliothek den installierten Flash -Chip erkennen und die richtigen Parameter laden.
* Optional
Ab V3.2.1 ist die Erkennung von SFDP -Parametern eine benutzergesteuerte Option. Damit die Bibliothek mit SFDP -kompatiblen Flash -Speicherchips funktioniert, die von der Bibliothek nicht offiziell unterstützt werden, muss der Benutzer in 'spimemory.h' in der Lage sein.
Die Bibliothek verfügt standardmäßig mit Adressüberlauf aktiviert. Dies kann deaktiviert werden, indem #define DISABLEOVERFLOW in spimemory.h übernommen wird. (Adressüberlauf funktioniert nur für Lese- / Schreibfunktionen. Löschen von Funktionen löschen nur eine festgelegte Anzahl von Blöcken / Sektoren unabhängig vom Überlauf.)
Alle Schreibfunktionen haben standardmäßig die Fehlerprüfung eingeschaltet - dh jedes in den Flash -Speicher geschriebene Byte wird mit den auf dem Arduino gespeicherten Daten überprüft. Benutzer, die größere Schreibgeschwindigkeiten benötigen, können diese Funktion deaktivieren, indem sie ein optionales Argument für "Fehlercheck" in jeder Schreibfunktion auf Noerrchk für z. B. festlegen. Rufen Sie die Funktion writeByte(address, *data_buffer, NOERRCHK) anstelle von writeByte(address, *data_buffer) auf.
Die Bibliothek wird aufgerufen, indem der Konstruktor SPIFram fram(csPin*) deklariert wird, wobei 'Fram' durch einen Benutzerkonstruktor der Wahl ersetzt werden kann und 'Cspin' der Chip -Auswahl -Pin für das Fram -Modul ist.
* Optional. Fügen Sie CSPIN nicht bei, wenn Sie den Standard -Slave verwenden, wenn Sie die PIN für Ihre Platine auswählen.
Jede Version der Bibliothek> = v3.0.0 unterstützt die Möglichkeit, mehrere SPI-Schnittstellen zu verwenden (wenn Ihr Mikrokontroller sie unterstützt). Umschaltung zur Verwendung einer anderen SPI -Schnittstelle erfolgt durch Aufrufen von SPIFram fram(csPin, &SPI1); (oder & spi2 usw.) anstelle von SPIFram fram(csPin) .
* Hinweis: Dies wird derzeit nur offiziell auf den Architekturen SAMD und STM32 unterstützt.
Stellen Sie außerdem sicher, dass fram.begin(CHIPSIZE*) in void setup() einbeziehen. Dadurch kann die Bibliothek den installierten Fram -Chip erkennen und die richtigen Parameter laden.
^ Derzeit in Beta. Die Methoden in SPIFRAM sind nicht endgültig und ändern sich in den nächsten Überarbeitungen.
Die Bibliothek ermöglicht die folgenden Funktionen:
begin(_chipsize)setClock(clockSpeed)error(_verbosity)getManID()getJEDECID()getUniqueID()getAddress(sizeOfData)sizeofStr()getCapacity()getMaxPage()functionRunTime()readAnything(address, value)readByte(address)readChar(address)readWord(address)readShort(address)readULong(address)readLong(address)readFloat(address)readStr(address, outputStr)readAnything(address, value)Alle Schreibbefehle nehmen nur eine 32-Bit-Adressvariable anstelle der optionalen 16-Bit-Seitenzahl und 8-Bit-Offset-Variablen in früheren Versionen der Bibliothek (<v3.0.0).
writeByte(address, data)writeChar(address, data)writeWord(address, data)writeShort(address, data)writeULong(address, data)writeLong(address, data)writeFloat(address, data)writeStr(address, data)writeAnything(address, value)readByteArray(address, *data_buffer, bufferSize)writeByteArray(address, *data_buffer, bufferSize)readCharArray(address, *data_buffer, bufferSize)writeCharArray(address, *data_buffer, bufferSize)eraseSector(address)eraseBlock32K(address)eraseBlock64K(address)eraseChip()eraseSection(address, sizeOfData)suspendProg()resumeProg()powerDown()powerUp()Hinweis: Wenn Sie den Fehler/die Fehler nicht beheben können, wecken Sie hier bitte ein Problem mit den Details Ihres Flash -Chips und dem, was Sie getan haben, wenn dieser Fehler aufgetreten ist. Bitte folgen Sie der Ausgabevorlage, die unter dem Link angezeigt wird
| Fehlercode | Erläuterung |
|---|---|
| 0x00 | Funktion erfolgreich ausgeführt |
| 0x01 | *constructor_of_choice*.begin() wurde nicht in void setup() genannt |
| 0x02 | Chip kann nicht identifiziert werden. Wird dieser Chip offiziell unterstützt? |
| 0x03 | Kapazität kann nicht identifiziert werden. Wird dieser Chip offiziell unterstützt? Wenn nicht, definieren Sie bitte eine CAPACITY und geben Sie sie in flash.begin(CAPACITY) ein. |
| 0x04 | Chip ist beschäftigt. Stellen Sie sicher, dass alle Stifte ordnungsgemäß verbunden wurden. |
| 0x05 | Der Seitenüberlauf wurde deaktiviert und die Adresse bezeichnet den Speicher überschreitet |
| 0x06 | Das Schreiben in Chip kann nicht aktiviert werden. Bitte stellen Sie sicher, dass die Stifte von Hold & WriteProtect in VCC gezogen werden. |
| 0x07 | Dieser Sektor enthält bereits Daten. Bitte stellen Sie sicher, dass die Sektoren geschrieben werden. |
| 0x08 | Sie laufen mit RAM niedrig. Bitte optimieren Sie Ihren Code für eine bessere RAM -Nutzung |
| 0x09 | Operation nicht aussetzen/wieder aufnehmen. Bitte sparen Sie ein Problem. |
| 0x0a | Die Schreibfunktion hat fehlgeschlagen. Bitte sparen Sie ein Problem. |
| 0x0b | Überprüfen Sie Ihre Verkabelung. Flash-Chip ist nicht ansprechend. |
| 0x0c | Diese Funktion wird von der Speicherhardware nicht unterstützt. |
| 0x0d | Die 4-Byte-Adressierung kann nicht aktiviert werden. Bitte sparen Sie ein Problem. |
| 0x0e | 4-Byte-Adressierung kann nicht deaktiviert werden. Bitte sparen Sie ein Problem. |
| 0x0f | Der Chip ist derzeit niedergeschrieben. |
| 0x10 | Der Flash -Chip unterstützt SFDP nicht. |
| 0x11 | Lesen Sie nicht die Löschungsparameter aus Chip. Rückkehr zu Bibliotheksausfällen. |
| 0x12 | Lesen Sie die Löschzeiten nicht aus dem Flash -Speicher. Rückkehr zu Bibliotheksausfällen. |
| 0x13 | Programmzeiten nicht aus dem Flash -Speicher lesen. Rückkehr zu Bibliotheksausfällen. |
| 0x14 | Kein im benutzerdefinierter SPI -Array definierter Chip -Pin. Informationen zur Verwendung benutzerdefinierter SPI -Stifte finden Sie im Abschnitt zum Konstruktor. |
| 0xfe | Unbekannter Fehler. Bitte sparen Sie ein Problem. |