17 #ifndef MBED_DATAFLASH_BLOCK_DEVICE_H 18 #define MBED_DATAFLASH_BLOCK_DEVICE_H 20 #include "platform/PlatformMutex.h" 22 #include "features/storage/blockdevice/BlockDevice.h" 23 #include "drivers/SPI.h" 24 #include "drivers/DigitalOut.h" 80 int freq = MBED_CONF_DATAFLASH_SPI_FREQ,
102 virtual int read(
void *buffer, mbed::bd_addr_t addr, mbed::bd_size_t
size);
113 virtual int program(
const void *buffer, mbed::bd_addr_t addr, mbed::bd_size_t size);
123 virtual int erase(mbed::bd_addr_t addr, mbed::bd_size_t size);
151 virtual mbed::bd_size_t
get_erase_size(mbed::bd_addr_t addr)
const;
157 virtual mbed::bd_size_t
size()
const;
163 virtual const char *
get_type()
const;
172 uint32_t _device_size;
174 uint16_t _block_size;
175 bool _is_initialized;
176 uint32_t _init_ref_count;
179 uint16_t _get_register(uint8_t opcode);
180 void _write_command(uint32_t command,
const uint8_t *buffer, uint32_t size);
181 void _write_enable(
bool enable);
183 int _write_page(
const uint8_t *buffer, uint32_t addr, uint32_t offset, uint32_t size);
184 uint32_t _translate_address(bd_addr_t addr);
virtual int read(void *buffer, mbed::bd_addr_t addr, mbed::bd_size_t size)
Read blocks from a block device.
virtual int program(const void *buffer, mbed::bd_addr_t addr, mbed::bd_size_t size)
Program blocks to a block device.
virtual mbed::bd_size_t size() const
Get the total size of the underlying device.
virtual const char * get_type() const
Get the BlockDevice class type.
A hardware device capable of writing and reading blocks.
virtual int init()
Initialize a block device.
virtual mbed::bd_size_t get_read_size() const
Get the size of a readable block.
virtual mbed::bd_size_t get_erase_size() const
Get the size of a eraseable block.
virtual int deinit()
Deinitialize a block device.
DataFlashBlockDevice(PinName mosi, PinName miso, PinName sclk, PinName csel, int freq=MBED_CONF_DATAFLASH_SPI_FREQ, PinName nowp=NC)
Creates a DataFlashBlockDevice on a SPI bus specified by pins.
virtual mbed::bd_size_t get_program_size() const
Get the size of a programable block.
BlockDevice for DataFlash flash devices.
A digital output, used for setting the state of a pin.
A SPI Master, used for communicating with SPI slave devices.
virtual int erase(mbed::bd_addr_t addr, mbed::bd_size_t size)
Erase blocks on a block device.