Skip to content

SpiFlash

This modules handles operations on a generic Spi Flash Memory. The following operations are allowed:

  • read/write data;

  • check if flash is busy;

  • enable write operations;

  • erase sector;

  • erase chip.

SpiFlash class

SpiFlash(drvname, cs, clock=1000000)

Initialize an external Flash memory specifying its:

  • MCU SPI circuitry drvname (one of SPI0, SPI1, … check pinmap for details);

  • chip select pin cs;

  • clock clock, default at 1MHz.

write_enable()

Enable write operations. Automatically called by write_data(), erase_sector(), chip_erase() methods.

is_write_busy()

Returns 1 or 0 depending on whether the Flash is busy or not.

write_data(addr, data)

Write data data starting from address addr. data can be a bytearray or a list of integers less than 256.

erase_sector() MUST be called before writing data in a sector.

Writing is also allowed via bracket notation. The following is valid syntax:

my_flash[addr] = data

erase_sector(addr)

Erase a whole sector passing the addr address of any byte contained in it. All sector bytes set to 0xff.

read_data(addr, n=1)

Read n bytes of data starting from address addr.

Reading is also allowed via bracket notation. The following is valid syntax:

my_data = my_flash[addr:addr+n]

chip_erase()

Erase the whole memory. All memory bytes set to 0xff.

chip_id(n)

Returns the bytes representation of the flash chip unique identifier. The length in bytes of the chip id must be passed as argument n.