Formerly known as SPIFlash.
Please report any bugs in issues
Arduino library for Flash & FRAM Memory Chips (SPI based only)
This Arduino library is for use with flash and FRAM memory chips that communicate using the SPI protocol. In its current form it supports identifying the flash/FRAM chip and its various features; automatic address allocation and management; writing and reading a number of different types of data, ranging from 8-bit to 32-bit (signed and unsigned) values, floats, Strings, arrays of bytes/chars and structs to and from various locations; sector, block and chip erase; and powering down for low power operation.
IDE Compatibility (actually tested with)
- Arduino IDE v1.5.x
- Arduino IDE v1.6.x
- Arduino IDE v1.8.x
|Micro controllers||Dev boards tested with||Notes|
|ATmega328P||Arduino Uno, Arduino Micro,
Arduino Fio, Arduino Nano
|ATmega32u4||Arduino Leonardo, Arduino Fio v3||-|
|ATSAMD21G18 (ARM Cortex M0+)||Adafruit Feather M0,
Adafruit Feather M0 Express,
Adafruit ItsyBitsy M0 Express
|AT91SAM3X8E (ARM Cortex M3)||Arduino Due||-|
|nRF52832 (ARM Cortex M4F)||Adafruit nRF52 Feather||-|
|ATSAMD51J19 (ARM Cortex M4)||Adafruit Metro M4||-|
|ESP8266||Adafruit ESP8266 Feather,
Sparkfun ESP8266 Thing
|ESP32||Adafruit ESP32 Feather,
Sparkfun ESP32 Thing
|Onboard flash memory. Refer to footnote£ below.|
£ ESP32 boards usually have an SPI Flash already attached to their default SS pin, so the user has to explicitly declare the
ChipSelect pin being used with the constructor
Flash memory compatibility - Actually tested with
|Should work with the W25QXXXBV, W25QXXXFV &
|Should work with the SST25 & SST26 families|
|Should work with the S25FL family|
|Giga devices||GD25Q16C||(Used on the Adafruit ItsyBitsy M0 Express)|
Should work with any flash memory that is compatible with the SFDP standard as defined in JESD216B
FRAM memory compatibility - Actually tested with
|Cypress/Spansion||FM25W256||Should work with the FM25W family|
- Open the Arduino IDE.
- Go to Sketch > Include Library > Manage libraries.
- Search for SPIMemory.
- Install the latest version.
- Click on the 'Clone or download' button above the list of files on this page .
- Select Download ZIP. A .zip file will download to your computer.
- Unzip the archive and rename resulting folder to 'SPIMemory'
- Move the folder to your libraries folder (~/sketches/libraries)
Release date 03.06.2019
- FastRead works properly now. All previous versions of the library had a FastRead bug that prevent it from doing what it was supposed to.
- An alternate version of the constructor
SPIFlash flash(int8_t *SPIPinsArray);
can be used (only with ESP32 boards as of now) to enable the use of custom SPI pins.
SPIPinsArray has to be a 4 element array containing the custom SPI pin numbers (as signed integers - int8_t) in the following order - sck, miso, mosi, ss. Refer to the wiki for more information. Resolves #113
- Created new error code
NOCHIPSELECTDECLAREDfor errors with declaring custom SPI pins.
- Using other SPI ports (HSPI, VSPI, SPI1, SPI2 etc.) is now also supported on ESP32 boards - along with SAMD and STM32 boards (supported since v3.0.0). Resolves #177
- Formatted and merged pull request #153. This changes the way
setClock()works and allows for the definition of clock speed before the SPI Bus is instantiated. Refer to wiki for further details. Thanks @rambo.
New Microcontrollers supported:
- nRF52832 ARM Cortex M4F (Adafruit nRF52 Feather)
- STM32L0 ARM Cortex M0+ (Nucleo-L031K6)
New flash memory chips supported:
- MX25L4005 & MX25L4005 from Macronix