SPIMemory <a href="https://travis-ci.org/Marzogh/SPIMemory"></a> <a href="https://zenodo.org/badge/latestdoi/35823047"></a> <hr> <blockquote><p>Formerly known as SPIFlash.</p> </blockquote> <hr> <p><a href="https://github.com/Marzogh/SPIMemory"></a> <a href="https://github.com/Marzogh/SPIMemory/compare/v3.1.0...development"></a> <a href="https://github.com/Marzogh/SPIMemory/issues"></a> <a href="https://github.com/Marzogh/SPIMemory/pulls"></a> <a href="https://github.com/Marzogh/SPIMemory/blob/master/LICENSE"></a></p> <hr> <p><strong>Please report any bugs in issues</strong></p> <hr> Arduino library for Flash Memory Chips (SPI based only) <p><sup> Download the latest stable release (v3.2.0) from <a href = "https://github.com/Marzogh/SPIMemory/releases/latest">here</a>. Please report any bugs in issues.</sup></p> <p>This Arduino library is for use with flash memory chips that communicate using the SPI protocol. In its current form it supports identifying the flash 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.</p> Compatibility Arduino IDEs supported (actually tested with) <ul> <li>IDE v1.5.x</li> <li>IDE v1.6.0-v1.6.5</li> <li>IDE v1.6.9-v1.6.12</li> <li>IDE v1.8.1-v1.8.5</li> </ul> Boards Completely supported <ul> <li>ATmega328P (Arduino Uno, Arduino Micro, Arduino Fio, Arduino Nano)</li> <li>ATmega32u4 (Arduino Leonardo, Arduino Fio v3)</li> <li>ATmega2560 (Arduino Mega)</li> <li>ATSAMD21G18 ARM Cortex M0+ (Adafruit Feather M0, Adafruit Feather M0 Express)</li> <li>AT91SAM3X8E ARM Cortex M3 (Arduino Due)</li> <li>ATSAMD51J19 ARM Cortex M4 (Adafruit Metro M4)</li> <li>STM32F091RCT6 (Nucleo-F091RC)</li> <li>ESP8266 Boards (Adafruit ESP8266 Feather)</li> <li>Simblee Boards (Sparkfun Simblee)</li> </ul> In BETA <ul> <li>ESP32 Boards (Tested on the Adafruit ESP32 Feather) The library is known to work with the ESP32 core as of the commit <a href = "<a href="https://github.com/espressif/arduino-esp32/tree/25dff4f044151f7f766c64b9d2ad90398472e6b3">25dff4f">https://github.com/espressif/arduino-esp32/tree/25dff4f044151f7f766c64b9d2ad90398472e6b3">25dff4f</a></a> on 05.04.2018. <code>ESP32 support will remain in beta till the ESP32 core can be installed via the Arduino boards manager.</code> NOTE: ESP32 boards usually have an SPI Flash already attached to their SS pin, so the user has to declare the ChipSelect pin being used when the constructor is declared - for example<pre><code>SPIFlash flash(33); </code></pre> </li> </ul> Flash memory compatibility Completely supported (Actually tested with) <ul> <li>Winbond<ul> <li>W25Q16BV</li> <li>W25Q64FV</li> <li>W25Q80BV</li> <li>W25Q256FV</li> </ul> </li> <li>Microchip<ul> <li>SST25VF064C</li> <li>SST26VF064B</li> </ul> </li> <li>Cypress/Spansion<ul> <li>S25FL032P</li> <li>S25FL116K</li> <li>S25FL127S</li> </ul> </li> <li>ON Semiconductor<ul> <li>LE25U40CMC</li> </ul> </li> <li>AMIC<ul> <li>A25L512A0</li> </ul> </li> <li>Micron<ul> <li>M25P40</li> </ul> </li> <li>Adesto<ul> <li>AT25SF041</li> </ul> </li> </ul> Should work with (Similar enough to the ones actually tested with) <ul> <li>Winbond (All SPI Flash chips)</li> <li>Microchip (SST25 & SST26 series)</li> <li>Cypress/Spansion (S25FL series)</li> <li>Any flash memory that is compatible with the SFDP standard as defined in JESD216B</li> </ul> Installation Option 1 <ul> <li>Open the Arduino IDE.</li> <li>Go to Sketch > Include Library > Manage libraries.</li> <li>Search for SPIMemory.</li> <li>Install the latest version.</li> </ul> Option 2 <ul> <li>Click on the 'Clone or download' button above the list of files on this <a href = "<a href="https://github.com/Marzogh/SPIMemory/tree/master">">https://github.com/Marzogh/SPIMemory/tree/master"></a> page </a>.</li> <li>Select Download ZIP. A .zip file will download to your computer.</li> <li>Unzip the archive and rename resulting folder to 'SPIMemory'</li> <li>Move the folder to your libraries folder (~/sketches/libraries)</li> </ul> <hr> Change log v3.2.0 <ul> <li><p>Library name changed to SPIMemory</p> </li> <li><p>The library now gathers sfdp information through _chipID(). SFDP information is collected when available, otherwise the library defaults to using code from v3.1.0 to ID the chip.</p> </li> </ul> Enhancements & Optimizations: <ul> <li>The library now does the following - if the flash memory chip is compatible with the SFDP standard<ul> <li>Identifies the flash memory chip using the Serial Flash Discoverable Parameters standard. (JESD216B)</li> <li>Identifies the following opcodes from the SFDP tables and uses them to read/write data:<pre><code> - eraseSector, eraseBlock32K, eraseBlock64K </code></pre> </li> <li>Reads timing information from SFDP to accurately time the following operations:<pre><code> - eraseSector, eraseBlock32K, eraseBlock64K </code></pre> </li> </ul> </li> </ul> New flash memory chips supported: <ul> <li><p>All flash memories compatible with the SFDP standard (as at JESD216B) should be compatible with the library</p> </li> <li><p>LE25U40CMC from ON Semiconductor</p> </li> <li>A25L512A0 from AMIC</li> <li>M25P40 from Micron</li> <li>AT25SF041 from Adesto</li> <li>S25FL032P from Cypress/Spansion</li> </ul> New Microcontrollers supported: <ul> <li>ATSAMD51J19 ARM Cortex M4 (Adafruit Metro M4)</li> </ul>
Read more