MX25R6435F Library
Dependents: Demo_MX25Rxx35F_Serial_NOR_Flash_Testbench mbed-lorawan-pulga mbed-lorawan-pulga-serial_rx mbed-lorawan-pulga-gps-added_shared
Fork of SPI_MX25R by
SPI_MX25R.h@1:8403da5975cb, 2015-07-20 (annotated)
- Committer:
- alec1
- Date:
- Mon Jul 20 20:45:33 2015 +0000
- Revision:
- 1:8403da5975cb
- Parent:
- 0:a16ad6f5c788
- Child:
- 2:f72110475fec
Initial Library Release
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 | SPI m_spi; |
alec1 | 0:a16ad6f5c788 | 27 | DigitalOut m_cs ; |
alec1 | 0:a16ad6f5c788 | 28 | int _mode ; |
alec1 | 0:a16ad6f5c788 | 29 | |
alec1 | 0:a16ad6f5c788 | 30 | /// Write Enable |
alec1 | 0:a16ad6f5c788 | 31 | void writeEnable(void) ; |
alec1 | 0:a16ad6f5c788 | 32 | |
alec1 | 0:a16ad6f5c788 | 33 | /// Write Disable |
alec1 | 0:a16ad6f5c788 | 34 | void writeDisable(void) ; |
alec1 | 0:a16ad6f5c788 | 35 | |
alec1 | 0:a16ad6f5c788 | 36 | /// Reset Enable |
alec1 | 0:a16ad6f5c788 | 37 | void resetEnable(void) ; |
alec1 | 0:a16ad6f5c788 | 38 | |
alec1 | 0:a16ad6f5c788 | 39 | /// Reset |
alec1 | 0:a16ad6f5c788 | 40 | void reset(void) ; |
alec1 | 1:8403da5975cb | 41 | |
alec1 | 1:8403da5975cb | 42 | /// Program or Erase Suspend |
alec1 | 1:8403da5975cb | 43 | void pgmersSuspend(void) ; |
alec1 | 1:8403da5975cb | 44 | |
alec1 | 1:8403da5975cb | 45 | /// Program or Erase Resume |
alec1 | 1:8403da5975cb | 46 | void pgmersResume(void) ; |
alec1 | 1:8403da5975cb | 47 | |
alec1 | 1:8403da5975cb | 48 | /// Enter Deep Power Down |
alec1 | 1:8403da5975cb | 49 | void deepPowerdown(void) ; |
alec1 | 1:8403da5975cb | 50 | |
alec1 | 1:8403da5975cb | 51 | /// Set Burst Length |
alec1 | 1:8403da5975cb | 52 | void setBurstlength(void) ; |
alec1 | 1:8403da5975cb | 53 | |
alec1 | 1:8403da5975cb | 54 | /// Release from Read Enhanced Mode |
alec1 | 1:8403da5975cb | 55 | void releaseReadenhaced(void) ; |
alec1 | 1:8403da5975cb | 56 | |
alec1 | 1:8403da5975cb | 57 | /// No Operation |
alec1 | 1:8403da5975cb | 58 | void noOperation(void) ; |
alec1 | 1:8403da5975cb | 59 | |
alec1 | 1:8403da5975cb | 60 | /// Enter OTP Area |
alec1 | 1:8403da5975cb | 61 | void enterSecureOTP(void) ; |
alec1 | 1:8403da5975cb | 62 | |
alec1 | 1:8403da5975cb | 63 | /// Exit OTP Area |
alec1 | 1:8403da5975cb | 64 | void exitSecureOTP(void) ; |
alec1 | 1:8403da5975cb | 65 | |
alec1 | 1:8403da5975cb | 66 | /// Chip Erase |
alec1 | 1:8403da5975cb | 67 | void chipErase(void) ; |
alec1 | 0:a16ad6f5c788 | 68 | |
alec1 | 1:8403da5975cb | 69 | /// Write Status and Configuration Reg 1 and 2 |
alec1 | 1:8403da5975cb | 70 | void writeStatusreg(int addr) ; |
alec1 | 0:a16ad6f5c788 | 71 | |
alec1 | 0:a16ad6f5c788 | 72 | /** Page Program |
alec1 | 0:a16ad6f5c788 | 73 | * |
alec1 | 0:a16ad6f5c788 | 74 | * @param int addr start address |
alec1 | 0:a16ad6f5c788 | 75 | * @param uint8_t *data data buffer |
alec1 | 0:a16ad6f5c788 | 76 | * @param int numData the number of data to be written |
alec1 | 0:a16ad6f5c788 | 77 | */ |
alec1 | 0:a16ad6f5c788 | 78 | void programPage(int addr, uint8_t *data, int numData) ; |
alec1 | 0:a16ad6f5c788 | 79 | |
alec1 | 0:a16ad6f5c788 | 80 | /** Sector Erase |
alec1 | 0:a16ad6f5c788 | 81 | * |
alec1 | 0:a16ad6f5c788 | 82 | * @param int addr specify the sector to be erased |
alec1 | 0:a16ad6f5c788 | 83 | */ |
alec1 | 0:a16ad6f5c788 | 84 | void sectorErase(int addr) ; |
alec1 | 0:a16ad6f5c788 | 85 | |
alec1 | 0:a16ad6f5c788 | 86 | /** Block Erase |
alec1 | 0:a16ad6f5c788 | 87 | * |
alec1 | 0:a16ad6f5c788 | 88 | * @param int addr specify the sector to be erased |
alec1 | 0:a16ad6f5c788 | 89 | */ |
alec1 | 0:a16ad6f5c788 | 90 | void blockErase(int addr) ; |
alec1 | 0:a16ad6f5c788 | 91 | |
alec1 | 0:a16ad6f5c788 | 92 | /** 32KB Block Erase |
alec1 | 0:a16ad6f5c788 | 93 | * |
alec1 | 0:a16ad6f5c788 | 94 | * @param int addr specify the sector to be erased |
alec1 | 0:a16ad6f5c788 | 95 | */ |
alec1 | 0:a16ad6f5c788 | 96 | void blockErase32KB(int addr) ; |
alec1 | 0:a16ad6f5c788 | 97 | |
alec1 | 0:a16ad6f5c788 | 98 | /** Read Status Register |
alec1 | 0:a16ad6f5c788 | 99 | * |
alec1 | 0:a16ad6f5c788 | 100 | * @returns uint8_t status register value |
alec1 | 0:a16ad6f5c788 | 101 | */ |
alec1 | 0:a16ad6f5c788 | 102 | uint8_t readStatus(void) ; |
alec1 | 0:a16ad6f5c788 | 103 | |
alec1 | 0:a16ad6f5c788 | 104 | /** Read ID |
alec1 | 0:a16ad6f5c788 | 105 | * |
alec1 | 0:a16ad6f5c788 | 106 | * @returns uint32_t Manufacturer ID, Mem Type, Device ID |
alec1 | 0:a16ad6f5c788 | 107 | */ |
alec1 | 0:a16ad6f5c788 | 108 | uint32_t readID(void) ; |
alec1 | 0:a16ad6f5c788 | 109 | |
alec1 | 0:a16ad6f5c788 | 110 | /** Read Configuration Register |
alec1 | 0:a16ad6f5c788 | 111 | * |
alec1 | 0:a16ad6f5c788 | 112 | * @returns uint32_t configuration register value |
alec1 | 0:a16ad6f5c788 | 113 | */ |
alec1 | 0:a16ad6f5c788 | 114 | uint32_t readConfig(void) ; |
alec1 | 1:8403da5975cb | 115 | uint8_t readSFDP(int addr) ; |
alec1 | 1:8403da5975cb | 116 | uint8_t readFREAD(int addr) ; |
alec1 | 0:a16ad6f5c788 | 117 | uint8_t read8(int addr) ; |
alec1 | 0:a16ad6f5c788 | 118 | void write8(int addr, uint8_t data) ; |
alec1 | 0:a16ad6f5c788 | 119 | private: |
alec1 | 0:a16ad6f5c788 | 120 | |
alec1 | 0:a16ad6f5c788 | 121 | } ; |
alec1 | 0:a16ad6f5c788 | 122 | #endif // _SPI_MX25R_H_ |