Skip to main content


Latest Version: 1.0.1

The SPIFlash class allows you to use a SPI Flash on the imp001 and imp002 with an interface similar to the imp003-centric hardware.spiflash().

You can view the library’s source code on GitHub. Click here to see information on other versions of this library.

To add this library to your project, add #require "SPIFlash.class.nut:1.0.1" to the top of your device code.

Class Usage

Constructor: SPIFlash(spi, cs[, blocks])

The class’ constructor takes two required parameters: a configured imp SPI bus object object, and a pin object) for the imp pin connected to the SPI Flash Chip Select (CS) pin. Optionally, you may also pass the number of 64KB blocks in the SPI Flash chip.

Parameter Type Default Description
spi hardware.i2c No Default A pre-configured SPI bus
cs No Default The chip select pin
blocks number 64 The number of 64KB blocks on the SPIFlash
#require "SPIFlash.class.nut:1.0.1"

spi <- hardware.spi257;
spi.configure(CLOCK_IDLE_LOW | MSB_FIRST, 30000);

cs <- hardware.pin8;

spiFlash <- SPIFlash(spi, cs);

Class Methods

The SPIFlash class conforms to the hardware.spiflash() API, and all methods available to the hardware.spiflash() object are available to instantiated SPIFlash objects. For more in-depth usage and examples, see the hardware.spiflash() documentation.


This method will autoconfigure the SPI bus passed into the constructor, and return the set data rate.

#require "SPIFlash.class.nut:1.0.1"

spiFlash <- SPIFlash(hardware.spi257, hardware.pin8);


Returns the identity code of the SPI flash chip.

See hardware.spiflash.chipid() for more information.



Disables the SPI flash for reading and writing.

See hardware.spiflash.disable() for more information.



Enables the SPI flash for reading and writing.

See hardware.spiflash.enable() for more information.



Erases a 4KB sector of the SPI flash.

See hardware.spiflash.erasesector() for more information.

// Erase the first three sectors

read(address, numberOfBytes)

Copies data from the SPI flash and returns it as a series of bytes.

See for more information.

// Read 36 bytes from the beginning of the third sector
local buffer =, 36);

readintoblob(address, targetBlob, numberOfBytes)

Copies data from the SPI flash storage into a pre-existing blob.

See hardware.spiflash.readintoblob() for more information.

buffer <- blob(1024);

spiFlash.readintoblob(0x1000, buffer, 128);
spiFlash.readintoblob(0x2000, buffer, 256);


Returns the total number of bytes in the SPI flash that are available to Squirrel.

See hardware.spiflash.size() for more information.

server.log(spiFlash.size() + " Bytes");

write(address, dataSource, writeFlags, startIndex, endIndex)

Writes a full or partial blob into the SPI flash.

See hardware.spiflash.write() for more information.

Release History

The Electric Imp Dev Center documents the latest version of the library. For past versions, please see the Electric Imp public GitHub repos listed below.

Version Source Code Notes
1.0.0 GitHub Initial release
1.0.1 GitHub Bug fixes


The SPIFlash class is licensed under MIT License.