Serial flash memory, binary access
Dependents: S25FL216K_USBFileSystem SPItest S25FL216K_USBFileSystem S25FL216K_FATFileSystem
S25FL216K.h@1:2bcefc9e64f8, 2013-07-31 (annotated)
- Committer:
- Sissors
- Date:
- Wed Jul 31 19:17:11 2013 +0000
- Revision:
- 1:2bcefc9e64f8
- Parent:
- 0:3cb41d985302
v1.0
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Sissors | 0:3cb41d985302 | 1 | #ifndef S25FL216K_H |
Sissors | 0:3cb41d985302 | 2 | #define S25FL216K_H |
Sissors | 0:3cb41d985302 | 3 | |
Sissors | 0:3cb41d985302 | 4 | #include "mbed.h" |
Sissors | 0:3cb41d985302 | 5 | |
Sissors | 0:3cb41d985302 | 6 | #define S25FL_WRITE_STATUS 0x01 |
Sissors | 0:3cb41d985302 | 7 | #define S25FL216K_WRITE 0x02 |
Sissors | 0:3cb41d985302 | 8 | #define S25FL216K_READ 0x03 |
Sissors | 0:3cb41d985302 | 9 | #define S25FL216K_RDSR 0x05 |
Sissors | 0:3cb41d985302 | 10 | #define S25FL216K_WREN 0x06 |
Sissors | 0:3cb41d985302 | 11 | #define S25FL216K_SECTOR_ERASE 0x20 |
Sissors | 0:3cb41d985302 | 12 | #define S25FL216K_CHIP_ERASE 0xC7 |
Sissors | 0:3cb41d985302 | 13 | #define S25FL216K_BLOCK_ERASE 0xD8 |
Sissors | 0:3cb41d985302 | 14 | #define S25FL216K_JEDEC 0x9F |
Sissors | 0:3cb41d985302 | 15 | |
Sissors | 1:2bcefc9e64f8 | 16 | /** |
Sissors | 1:2bcefc9e64f8 | 17 | * Class to write/read from S25FL216K serial flash memory |
Sissors | 1:2bcefc9e64f8 | 18 | * |
Sissors | 1:2bcefc9e64f8 | 19 | * This class is used for binary access, for file system access |
Sissors | 1:2bcefc9e64f8 | 20 | * there is S25FL216K_USBFileSystem. |
Sissors | 1:2bcefc9e64f8 | 21 | * |
Sissors | 1:2bcefc9e64f8 | 22 | * No write restrictions are implemented, the memory also should not |
Sissors | 1:2bcefc9e64f8 | 23 | * have write restrictions enabled, this is factory default. |
Sissors | 1:2bcefc9e64f8 | 24 | */ |
Sissors | 0:3cb41d985302 | 25 | class S25FL216K { |
Sissors | 0:3cb41d985302 | 26 | public: |
Sissors | 1:2bcefc9e64f8 | 27 | |
Sissors | 1:2bcefc9e64f8 | 28 | /** Constructor |
Sissors | 1:2bcefc9e64f8 | 29 | * |
Sissors | 1:2bcefc9e64f8 | 30 | * @param mosi - Mosi pin to be used |
Sissors | 1:2bcefc9e64f8 | 31 | * @param miso - Miso pin to be used |
Sissors | 1:2bcefc9e64f8 | 32 | * @param sclk - Sclk pin to be used |
Sissors | 1:2bcefc9e64f8 | 33 | * @param cs - CS pin to be used |
Sissors | 1:2bcefc9e64f8 | 34 | */ |
Sissors | 0:3cb41d985302 | 35 | S25FL216K(PinName mosi, PinName miso, PinName sclk, PinName cs); |
Sissors | 0:3cb41d985302 | 36 | |
Sissors | 1:2bcefc9e64f8 | 37 | /** Checks if communication with the device functions |
Sissors | 0:3cb41d985302 | 38 | * |
Sissors | 0:3cb41d985302 | 39 | * @return - true upon succesfull communication, false if it failed |
Sissors | 0:3cb41d985302 | 40 | */ |
Sissors | 0:3cb41d985302 | 41 | bool testConnection( void ); |
Sissors | 0:3cb41d985302 | 42 | |
Sissors | 1:2bcefc9e64f8 | 43 | /** Read a number of memory locations |
Sissors | 1:2bcefc9e64f8 | 44 | * |
Sissors | 1:2bcefc9e64f8 | 45 | * Take into account reading will stay within the page (256B) the address is in |
Sissors | 1:2bcefc9e64f8 | 46 | * |
Sissors | 1:2bcefc9e64f8 | 47 | * @param address - start address to read from |
Sissors | 1:2bcefc9e64f8 | 48 | * @param buffer - char array to read the data into |
Sissors | 1:2bcefc9e64f8 | 49 | * @param length - number of samples to read |
Sissors | 1:2bcefc9e64f8 | 50 | */ |
Sissors | 0:3cb41d985302 | 51 | void read(int address, char *buffer, int length); |
Sissors | 0:3cb41d985302 | 52 | |
Sissors | 1:2bcefc9e64f8 | 53 | /** Write a number of memory locations |
Sissors | 1:2bcefc9e64f8 | 54 | * |
Sissors | 1:2bcefc9e64f8 | 55 | * Take into account writing will stay within the page (256B) the address is in |
Sissors | 1:2bcefc9e64f8 | 56 | * |
Sissors | 1:2bcefc9e64f8 | 57 | * @param address - start address to write to |
Sissors | 1:2bcefc9e64f8 | 58 | * @param buffer - char array to read the data from |
Sissors | 1:2bcefc9e64f8 | 59 | * @param length - number of samples to write |
Sissors | 1:2bcefc9e64f8 | 60 | * @param block - true (default) to block until writing is finished |
Sissors | 1:2bcefc9e64f8 | 61 | */ |
Sissors | 0:3cb41d985302 | 62 | void write(int address, char *buffer, int length, bool block = true); |
Sissors | 0:3cb41d985302 | 63 | |
Sissors | 1:2bcefc9e64f8 | 64 | /** Erase a sector (4KB) |
Sissors | 1:2bcefc9e64f8 | 65 | * |
Sissors | 1:2bcefc9e64f8 | 66 | * @param address - address in the sector that needs to be erased |
Sissors | 1:2bcefc9e64f8 | 67 | * @param block - true (default) to block until erasing is finished |
Sissors | 1:2bcefc9e64f8 | 68 | */ |
Sissors | 0:3cb41d985302 | 69 | void eraseSector(int address, bool block = true); |
Sissors | 1:2bcefc9e64f8 | 70 | |
Sissors | 1:2bcefc9e64f8 | 71 | /** Erase a block (64KB) |
Sissors | 1:2bcefc9e64f8 | 72 | * |
Sissors | 1:2bcefc9e64f8 | 73 | * @param address - address in the block that needs to be erased |
Sissors | 1:2bcefc9e64f8 | 74 | * @param block - true (default) to block until erasing is finished |
Sissors | 1:2bcefc9e64f8 | 75 | */ |
Sissors | 0:3cb41d985302 | 76 | void eraseBlock(int address, bool block = true); |
Sissors | 1:2bcefc9e64f8 | 77 | |
Sissors | 1:2bcefc9e64f8 | 78 | /** Erase the entire chip |
Sissors | 1:2bcefc9e64f8 | 79 | * |
Sissors | 1:2bcefc9e64f8 | 80 | * @param block - true (default) to block until erasing is finished |
Sissors | 1:2bcefc9e64f8 | 81 | */ |
Sissors | 0:3cb41d985302 | 82 | void eraseChip(bool block = true); |
Sissors | 0:3cb41d985302 | 83 | |
Sissors | 1:2bcefc9e64f8 | 84 | /** Check if writing/erasing is being performed |
Sissors | 1:2bcefc9e64f8 | 85 | * |
Sissors | 1:2bcefc9e64f8 | 86 | * @return - true if busy, false if idle |
Sissors | 1:2bcefc9e64f8 | 87 | */ |
Sissors | 0:3cb41d985302 | 88 | bool isBusy( void ); |
Sissors | 0:3cb41d985302 | 89 | |
Sissors | 0:3cb41d985302 | 90 | private: |
Sissors | 1:2bcefc9e64f8 | 91 | |
Sissors | 1:2bcefc9e64f8 | 92 | char getStatus( void ); |
Sissors | 1:2bcefc9e64f8 | 93 | void setWriteEnable( void ); |
Sissors | 1:2bcefc9e64f8 | 94 | |
Sissors | 0:3cb41d985302 | 95 | SPI _spi; |
Sissors | 0:3cb41d985302 | 96 | DigitalOut _cs; |
Sissors | 0:3cb41d985302 | 97 | |
Sissors | 0:3cb41d985302 | 98 | |
Sissors | 0:3cb41d985302 | 99 | |
Sissors | 0:3cb41d985302 | 100 | |
Sissors | 0:3cb41d985302 | 101 | |
Sissors | 0:3cb41d985302 | 102 | }; |
Sissors | 0:3cb41d985302 | 103 | |
Sissors | 0:3cb41d985302 | 104 | |
Sissors | 0:3cb41d985302 | 105 | |
Sissors | 0:3cb41d985302 | 106 | #endif |