Arun Raj / Mbed OS MAXREFDES101_SOURCE

Dependencies:   max32630fthr Adafruit_FeatherOLED USBDevice

Embed: (wiki syntax)

« Back to documentation index

SPIFBlockDevice Class Reference

SPIFBlockDevice Class Reference

BlockDevice for SPI based flash devices such as the MX25R or SST26F016B. More...

#include <SPIFBlockDevice.h>

Public Member Functions

 SPIFBlockDevice (PinName mosi, PinName miso, PinName sclk, PinName csel, int freq=40000000)
 Creates a SPIFBlockDevice on a SPI bus specified by pins.
virtual int init ()
 Initialize a block device.
virtual int deinit ()
 Deinitialize a block device.
virtual int read (void *buffer, bd_addr_t addr, bd_size_t size)
 Read blocks from a block device.
virtual int program (const void *buffer, bd_addr_t addr, bd_size_t size)
 Program blocks to a block device.
virtual int erase (bd_addr_t addr, bd_size_t size)
 Erase blocks on a block device.
virtual bd_size_t get_read_size () const
 Get the size of a readable block.
virtual bd_size_t get_program_size () const
 Get the size of a programable block.
virtual bd_size_t get_erase_size () const
 Get the size of a eraseable block.
virtual bd_size_t size () const
 Get the total size of the underlying device.

Detailed Description

BlockDevice for SPI based flash devices such as the MX25R or SST26F016B.

  // Here's an example using the MX25R SPI flash device on the K82F
  #include "mbed.h"
  #include "SPIFBlockDevice.h"
  
  // Create flash device on SPI bus with PTE5 as chip select
  SPIFBlockDevice spif(PTE2, PTE4, PTE1, PTE5);
  
  int main() {
      printf("spif test\n");
  
      // Initialize the SPI flash device and print the memory layout
      spif.init();
      printf("spif size: %llu\n",         spif.size());
      printf("spif read size: %llu\n",    spif.get_read_size());
      printf("spif program size: %llu\n", spif.get_program_size());
      printf("spif erase size: %llu\n",   spif.get_erase_size());
  
      // Write "Hello World!" to the first block
      char *buffer = (char*)malloc(spif.get_erase_size());
      sprintf(buffer, "Hello World!\n");
      spif.erase(0, spif.get_erase_size());
      spif.program(buffer, 0, spif.get_erase_size());
  
      // Read back what was stored
      spif.read(buffer, 0, spif.get_erase_size());
      printf("%s", buffer);
  
      // Deinitialize the device
      spif.deinit();
  }

Definition at line 59 of file SPIFBlockDevice.h.


Constructor & Destructor Documentation

SPIFBlockDevice ( PinName  mosi,
PinName  miso,
PinName  sclk,
PinName  csel,
int  freq = 40000000 
)

Creates a SPIFBlockDevice on a SPI bus specified by pins.

Parameters:
mosiSPI master out, slave in pin
misoSPI master in, slave out pin
sclkSPI clock pin
cselSPI chip select pin
freqClock speed of the SPI bus (defaults to 40MHz)

Definition at line 50 of file SPIFBlockDevice.cpp.


Member Function Documentation

int deinit (  ) [virtual]

Deinitialize a block device.

Returns:
0 on success or a negative error code on failure

Definition at line 131 of file SPIFBlockDevice.cpp.

int erase ( bd_addr_t  addr,
bd_size_t  size 
) [virtual]

Erase blocks on a block device.

The state of an erased block is undefined until it has been programmed

Parameters:
addrAddress of block to begin erasing
sizeSize to erase in bytes, must be a multiple of erase block size
Returns:
0 on success, negative error code on failure

Definition at line 293 of file SPIFBlockDevice.cpp.

bd_size_t get_erase_size (  ) const [virtual]

Get the size of a eraseable block.

Returns:
Size of a eraseable block in bytes
Note:
Must be a multiple of the program size

Definition at line 330 of file SPIFBlockDevice.cpp.

bd_size_t get_program_size (  ) const [virtual]

Get the size of a programable block.

Returns:
Size of a programable block in bytes
Note:
Must be a multiple of the read size

Definition at line 325 of file SPIFBlockDevice.cpp.

bd_size_t get_read_size (  ) const [virtual]

Get the size of a readable block.

Returns:
Size of a readable block in bytes

Definition at line 320 of file SPIFBlockDevice.cpp.

int init (  ) [virtual]

Initialize a block device.

Returns:
0 on success or a negative error code on failure

Definition at line 58 of file SPIFBlockDevice.cpp.

int program ( const void *  buffer,
bd_addr_t  addr,
bd_size_t  size 
) [virtual]

Program blocks to a block device.

The blocks must have been erased prior to being programmed

Parameters:
bufferBuffer of data to write to blocks
addrAddress of block to begin writing to
sizeSize to write in bytes, must be a multiple of program block size
Returns:
0 on success, negative error code on failure

Definition at line 262 of file SPIFBlockDevice.cpp.

int read ( void *  buffer,
bd_addr_t  addr,
bd_size_t  size 
) [virtual]

Read blocks from a block device.

Parameters:
bufferBuffer to write blocks to
addrAddress of block to begin reading from
sizeSize to read in bytes, must be a multiple of read block size
Returns:
0 on success, negative error code on failure

Definition at line 253 of file SPIFBlockDevice.cpp.

bd_size_t size (  ) const [virtual]

Get the total size of the underlying device.

Returns:
Size of the underlying device in bytes

Definition at line 335 of file SPIFBlockDevice.cpp.