Block device with SPI Flash (Microchip SST26VF064B)
More...
#include <modm/driver/storage/block_device_spiflash.hpp>
|
|
using | bd_address_t = uint32_t |
| |
|
using | bd_size_t = uint32_t |
| |
|
| enum | StatusRegister : uint8_t {
Busy = Bit0,
WriteEnabled = Bit1,
EraseSuspended = Bit2,
ProgramSuspended = Bit3,
WriteProtectionLockDown = Bit4,
SecurityIdLocked = Bit5
} |
| |
|
|
modm::ResumableResult< bool > | initialize () |
| | Initializes the storage hardware.
|
| |
|
modm::ResumableResult< bool > | deinitialize () |
| | Deinitializes the storage hardware.
|
| |
| modm::ResumableResult< bool > | read (uint8_t *buffer, bd_address_t address, bd_size_t size) |
| |
| modm::ResumableResult< bool > | program (const uint8_t *buffer, bd_address_t address, bd_size_t size) |
| |
| modm::ResumableResult< bool > | erase (bd_address_t address, bd_size_t size) |
| |
| modm::ResumableResult< bool > | write (const uint8_t *buffer, bd_address_t address, bd_size_t size) |
| |
| modm::ResumableResult< JedecId > | readId () |
| |
|
| MODM_FLAGS8 (StatusRegister) |
| |
| modm::ResumableResult< StatusRegister > | readStatus () |
| |
|
modm::ResumableResult< bool > | deinitialize () |
| | Deinitializes the storage hardware.
|
| |
| modm::ResumableResult< bool > | erase (bd_address_t address, bd_size_t size) |
| |
|
modm::ResumableResult< bool > | initialize () |
| | Initializes the storage hardware.
|
| |
| modm::ResumableResult< bool > | program (const uint8_t *buffer, bd_address_t address, bd_size_t size) |
| |
| modm::ResumableResult< bool > | read (uint8_t *buffer, bd_address_t address, bd_size_t size) |
| |
| modm::ResumableResult< bool > | write (const uint8_t *buffer, bd_address_t address, bd_size_t size) |
| |
|
void | attachConfigurationHandler (Spi::ConfigurationHandler handler) |
| |
|
|
static constexpr bd_size_t | BlockSizeRead = 1 |
| |
|
static constexpr bd_size_t | BlockSizeWrite = 256 |
| |
|
static constexpr bd_size_t | BlockSizeErase = 4 * 1'024 |
| |
|
static constexpr bd_size_t | DeviceSize = flashSize |
| |
|
static constexpr bd_size_t | BlockSizeErase = 1 |
| |
| static constexpr bd_size_t | BlockSizeRead = 1 |
| |
|
static constexpr bd_size_t | BlockSizeWrite = 1 |
| |
template<typename Spi, typename Cs, uint32_t flashSize>
class modm::BdSpiFlash< Spi, Cs, flashSize >
Block device with SPI Flash (Microchip SST26VF064B)
64MBit flash chip in SOIJ-8, WDFN-8 or SOIC-16
- Template Parameters
-
The read(), erase(),program() and write() methodes wait for the chip to finish writing to the flash.
- Author
- Raphael Lehmann
Erase blocks
The state of an erased block is undefined until it has been programmed
- Parameters
-
| address | Address of block to begin erasing |
| size | Size to erase in bytes (multiple of read block size) |
- Returns
- True on success
template<typename Spi , typename Cs , uint32_t flashSize>
Erase blocks
The state of an erased block is undefined until it has been programmed
- Parameters
-
| address | Address of block to begin erasing |
| size | Size to erase in bytes (multiple of read block size) |
- Returns
- True on success
Run the resumable function.
You need to implement this method in you subclass yourself.
- Returns
- >
NestingError if still running, <=NestingError if it has finished.
- Returns
- the nesting depth in the current resumable function, or -1 if called outside any resumable function
- Returns
true if a resumable function is running at the current nesting level, else false
| modm::ResumableResult<bool> modm::BlockDevice::program |
( |
const uint8_t * |
buffer, |
|
|
bd_address_t |
address, |
|
|
bd_size_t |
size |
|
) |
| |
|
inherited |
Program blocks with data
Any block has to be erased prior to being programmed
- Parameters
-
| buffer | Buffer of data to write to blocks |
| address | Address of first block to begin writing to |
| size | Size to write in bytes (multiple of read block size) |
- Returns
- True on success
template<typename Spi , typename Cs , uint32_t flashSize>
| modm::ResumableResult<bool> modm::BdSpiFlash< Spi, Cs, flashSize >::program |
( |
const uint8_t * |
buffer, |
|
|
bd_address_t |
address, |
|
|
bd_size_t |
size |
|
) |
| |
Program blocks with data
Any block has to be erased prior to being programmed
- Parameters
-
| buffer | Buffer of data to write to blocks |
| address | Address of first block to begin writing to |
| size | Size to write in bytes (multiple of read block size) |
- Returns
- True on success
| modm::ResumableResult<bool> modm::BlockDevice::read |
( |
uint8_t * |
buffer, |
|
|
bd_address_t |
address, |
|
|
bd_size_t |
size |
|
) |
| |
|
inherited |
Read data from one or more blocks
- Parameters
-
| buffer | Buffer to read data into |
| address | Address to begin reading from |
| size | Size to read in bytes (multiple of read block size) |
- Returns
- True on success
template<typename Spi , typename Cs , uint32_t flashSize>
| modm::ResumableResult<bool> modm::BdSpiFlash< Spi, Cs, flashSize >::read |
( |
uint8_t * |
buffer, |
|
|
bd_address_t |
address, |
|
|
bd_size_t |
size |
|
) |
| |
Read data from one or more blocks
- Parameters
-
| buffer | Buffer to read data into |
| address | Address to begin reading from |
| size | Size to read in bytes (multiple of read block size) |
- Returns
- True on success
template<typename Spi , typename Cs , uint32_t flashSize>
Reads the Jedec ID from the flash chip
- Returns
- The Jedec Id returned from the flash chip
template<typename Spi , typename Cs , uint32_t flashSize>
Read status register of thew Spi Flash chip
- Returns
- Status register
| modm::ResumableResult<bool> modm::BlockDevice::write |
( |
const uint8_t * |
buffer, |
|
|
bd_address_t |
address, |
|
|
bd_size_t |
size |
|
) |
| |
|
inherited |
Writes data to one or more blocks after erasing them
The blocks are erased proir to being programmed
- Parameters
-
| buffer | Buffer of data to write to blocks |
| address | Address of first block to begin writing to |
| size | Size to write in bytes (multiple of read block size) |
- Returns
- True on success
template<typename Spi , typename Cs , uint32_t flashSize>
| modm::ResumableResult<bool> modm::BdSpiFlash< Spi, Cs, flashSize >::write |
( |
const uint8_t * |
buffer, |
|
|
bd_address_t |
address, |
|
|
bd_size_t |
size |
|
) |
| |
Writes data to one or more blocks after erasing them
The blocks are erased prior to being programmed
- Parameters
-
| buffer | Buffer of data to write to blocks |
| address | Address of first block to begin writing to |
| size | Size to write in bytes (multiple of read block size) |
- Returns
- True on success
| constexpr bd_size_t modm::BlockDevice::BlockSizeRead = 1 |
|
inheritedstaticconstexpr |
Minimum block sizes for block device operations
Most persistent storage devices require program(), erase() and sometimes read() operations to be executed on fixed sized blocks.
The documentation for this class was generated from the following file:
- block_device_spiflash.hpp