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:
Wed Jul 08 20:59:40 2015 +0000
Revision:
0:a16ad6f5c788
Child:
1:8403da5975cb
Rev0

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 * 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_