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 alec cohen

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?

UserRevisionLine numberNew 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_