Macronix Low Power Serial NOR Flash in SPI mode.
Dependents: MX25Rxx35F_Serial_NOR_Flash_Testbench MX25Rxx35F_Serial_NOR_Flash_Testbench Coragem_all_sensors 1_Test_Flash_ADC_RTT
SPI_MX25R.h@0:a16ad6f5c788, 2015-07-08 (annotated)
- Committer:
- alec1
- Date:
- Wed Jul 08 20:59:40 2015 +0000
- Revision:
- 0:a16ad6f5c788
- Child:
- 1:8403da5975cb
Rev0
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
alec1 | 0:a16ad6f5c788 | 1 | #ifndef _SPI_MX25R_H_ |
alec1 | 0:a16ad6f5c788 | 2 | #define _SPI_MX25R_H_ |
alec1 | 0:a16ad6f5c788 | 3 | |
alec1 | 0:a16ad6f5c788 | 4 | #include "mbed.h" |
alec1 | 0:a16ad6f5c788 | 5 | |
alec1 | 0:a16ad6f5c788 | 6 | /** |
alec1 | 0:a16ad6f5c788 | 7 | * SPI_MX25R SPI-Flash Memory |
alec1 | 0:a16ad6f5c788 | 8 | * Macronix Serial Flash Low Power Memories |
alec1 | 0:a16ad6f5c788 | 9 | */ |
alec1 | 0:a16ad6f5c788 | 10 | |
alec1 | 0:a16ad6f5c788 | 11 | class SPI_MX25R |
alec1 | 0:a16ad6f5c788 | 12 | { |
alec1 | 0:a16ad6f5c788 | 13 | public: |
alec1 | 0:a16ad6f5c788 | 14 | /** |
alec1 | 0:a16ad6f5c788 | 15 | * Macronix MX25R Low Power and Wide Vcc SPI-Flash Memory Family |
alec1 | 0:a16ad6f5c788 | 16 | * |
alec1 | 0:a16ad6f5c788 | 17 | * @param SI/SIO0 SPI_MOSI pin |
alec1 | 0:a16ad6f5c788 | 18 | * @param SO/SI01 SPI_MISO pin |
alec1 | 0:a16ad6f5c788 | 19 | * @param SCLK SPI_CLK pin |
alec1 | 0:a16ad6f5c788 | 20 | * @param CSb SPI_CS pin |
alec1 | 0:a16ad6f5c788 | 21 | */ |
alec1 | 0:a16ad6f5c788 | 22 | SPI_MX25R(PinName mosi, PinName miso, PinName sclk, PinName cs) ; |
alec1 | 0:a16ad6f5c788 | 23 | |
alec1 | 0:a16ad6f5c788 | 24 | ~SPI_MX25R() ; |
alec1 | 0:a16ad6f5c788 | 25 | /* |
alec1 | 0:a16ad6f5c788 | 26 | * not all functions have been created yet. |
alec1 | 0:a16ad6f5c788 | 27 | */ |
alec1 | 0:a16ad6f5c788 | 28 | |
alec1 | 0:a16ad6f5c788 | 29 | SPI m_spi; |
alec1 | 0:a16ad6f5c788 | 30 | DigitalOut m_cs ; |
alec1 | 0:a16ad6f5c788 | 31 | int _mode ; |
alec1 | 0:a16ad6f5c788 | 32 | |
alec1 | 0:a16ad6f5c788 | 33 | /// Write Enable |
alec1 | 0:a16ad6f5c788 | 34 | void writeEnable(void) ; |
alec1 | 0:a16ad6f5c788 | 35 | |
alec1 | 0:a16ad6f5c788 | 36 | /// Write Disable |
alec1 | 0:a16ad6f5c788 | 37 | void writeDisable(void) ; |
alec1 | 0:a16ad6f5c788 | 38 | |
alec1 | 0:a16ad6f5c788 | 39 | /// Reset Enable |
alec1 | 0:a16ad6f5c788 | 40 | void resetEnable(void) ; |
alec1 | 0:a16ad6f5c788 | 41 | |
alec1 | 0:a16ad6f5c788 | 42 | /// Reset |
alec1 | 0:a16ad6f5c788 | 43 | void reset(void) ; |
alec1 | 0:a16ad6f5c788 | 44 | |
alec1 | 0:a16ad6f5c788 | 45 | /// Enter High Performance mode |
alec1 | 0:a16ad6f5c788 | 46 | void hpmode(void) ; |
alec1 | 0:a16ad6f5c788 | 47 | |
alec1 | 0:a16ad6f5c788 | 48 | /// Enter High Performance mode |
alec1 | 0:a16ad6f5c788 | 49 | void lpmode(void) ; |
alec1 | 0:a16ad6f5c788 | 50 | |
alec1 | 0:a16ad6f5c788 | 51 | /// Chip Erase |
alec1 | 0:a16ad6f5c788 | 52 | void chipErase(void) ; |
alec1 | 0:a16ad6f5c788 | 53 | |
alec1 | 0:a16ad6f5c788 | 54 | /** Page Program |
alec1 | 0:a16ad6f5c788 | 55 | * |
alec1 | 0:a16ad6f5c788 | 56 | * @param int addr start address |
alec1 | 0:a16ad6f5c788 | 57 | * @param uint8_t *data data buffer |
alec1 | 0:a16ad6f5c788 | 58 | * @param int numData the number of data to be written |
alec1 | 0:a16ad6f5c788 | 59 | */ |
alec1 | 0:a16ad6f5c788 | 60 | void programPage(int addr, uint8_t *data, int numData) ; |
alec1 | 0:a16ad6f5c788 | 61 | |
alec1 | 0:a16ad6f5c788 | 62 | /** Sector Erase |
alec1 | 0:a16ad6f5c788 | 63 | * |
alec1 | 0:a16ad6f5c788 | 64 | * @param int addr specify the sector to be erased |
alec1 | 0:a16ad6f5c788 | 65 | */ |
alec1 | 0:a16ad6f5c788 | 66 | void sectorErase(int addr) ; |
alec1 | 0:a16ad6f5c788 | 67 | |
alec1 | 0:a16ad6f5c788 | 68 | /** Block Erase |
alec1 | 0:a16ad6f5c788 | 69 | * |
alec1 | 0:a16ad6f5c788 | 70 | * @param int addr specify the sector to be erased |
alec1 | 0:a16ad6f5c788 | 71 | */ |
alec1 | 0:a16ad6f5c788 | 72 | void blockErase(int addr) ; |
alec1 | 0:a16ad6f5c788 | 73 | |
alec1 | 0:a16ad6f5c788 | 74 | /** 32KB Block Erase |
alec1 | 0:a16ad6f5c788 | 75 | * |
alec1 | 0:a16ad6f5c788 | 76 | * @param int addr specify the sector to be erased |
alec1 | 0:a16ad6f5c788 | 77 | */ |
alec1 | 0:a16ad6f5c788 | 78 | void blockErase32KB(int addr) ; |
alec1 | 0:a16ad6f5c788 | 79 | |
alec1 | 0:a16ad6f5c788 | 80 | /** Read Status Register |
alec1 | 0:a16ad6f5c788 | 81 | * |
alec1 | 0:a16ad6f5c788 | 82 | * @returns uint8_t status register value |
alec1 | 0:a16ad6f5c788 | 83 | */ |
alec1 | 0:a16ad6f5c788 | 84 | uint8_t readStatus(void) ; |
alec1 | 0:a16ad6f5c788 | 85 | |
alec1 | 0:a16ad6f5c788 | 86 | /** Read ID |
alec1 | 0:a16ad6f5c788 | 87 | * |
alec1 | 0:a16ad6f5c788 | 88 | * @returns uint32_t Manufacturer ID, Mem Type, Device ID |
alec1 | 0:a16ad6f5c788 | 89 | */ |
alec1 | 0:a16ad6f5c788 | 90 | uint32_t readID(void) ; |
alec1 | 0:a16ad6f5c788 | 91 | |
alec1 | 0:a16ad6f5c788 | 92 | /** Read Configuration Register |
alec1 | 0:a16ad6f5c788 | 93 | * |
alec1 | 0:a16ad6f5c788 | 94 | * @returns uint32_t configuration register value |
alec1 | 0:a16ad6f5c788 | 95 | */ |
alec1 | 0:a16ad6f5c788 | 96 | uint32_t readConfig(void) ; |
alec1 | 0:a16ad6f5c788 | 97 | |
alec1 | 0:a16ad6f5c788 | 98 | uint8_t read8(int addr) ; |
alec1 | 0:a16ad6f5c788 | 99 | uint32_t rd32(int addr) ; |
alec1 | 0:a16ad6f5c788 | 100 | void write8(int addr, uint8_t data) ; |
alec1 | 0:a16ad6f5c788 | 101 | private: |
alec1 | 0:a16ad6f5c788 | 102 | |
alec1 | 0:a16ad6f5c788 | 103 | } ; |
alec1 | 0:a16ad6f5c788 | 104 | #endif // _SPI_MX25R_H_ |