Shivanand Gowda / M95M02D

Dependents:   SPI_EEPROM_2MB

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers M95M02D.h Source File

M95M02D.h

00001 // M95M02D.h
00002 
00003 #ifndef M95M02D_H
00004 #define M95M02D_H
00005 
00006 #include "mbed.h"
00007 #include <string>
00008 
00009 #define SPI_FREQ        5000000                 //Change SPI Frequency Here
00010 #define SPI_MODE        0                       // SPI Mode can be 0 or 3 . see data sheet
00011 #define SPI_NBIT        8                       // Number of bits 8.
00012 
00013 
00014 
00015 #define DUMMY_ADDR      0x00
00016 #define WAIT_TIME       1
00017 
00018 #define ADDR_BMASK3     0xff000000
00019 #define ADDR_BMASK2     0x00ff0000
00020 #define ADDR_BMASK1     0x0000ff00
00021 #define ADDR_BMASK0     0x000000ff
00022 
00023 #define ADDR_BSHIFT3    24
00024 #define ADDR_BSHIFT2    16
00025 #define ADDR_BSHIFT1    8
00026 #define ADDR_BSHIFT0    0
00027 
00028 
00029 #define     READ            0x03        //0000 0011 Read data from memory array beginning at selected address
00030 #define     WRITE           0x02        //0000 0010 Write data to memory array beginning at selected address
00031 #define     WREN            0x06        //0000 0110 Set the write enable latch (enable write operations)
00032 #define     WRDI            0x04        //0000 0100 Reset the write enable latch (disable write operations)
00033 #define     RDSR            0x05        //0000 0101 Read STATUS register
00034 #define     WRSR            0x01        //0000 0001 Write STATUS register
00035 #define     PE              0x42        //0100 0010 Page Erase – erase one page in memory array
00036 #define     SE              0xD8        //1101 1000 Sector Erase – erase one sector in memory array
00037 #define     CE              0xC7        //1100 0111 Chip Erase – erase all sectors in memory array
00038 #define     ReadID          0x83        //1000 0011 Read id or  electronic signature
00039 #define     WriteID         0x82        //1000 0011 Write id or  electronic signature
00040 
00041 #define     DUMMYBYTE       0x00        //Dummy byte for Read Operation
00042 
00043 class M95M02D: public SPI {
00044 public:
00045     M95M02D(PinName mosi, PinName miso, PinName sclk, PinName cs,PinName WP,PinName HOLD);
00046     
00047   
00048     
00049     
00050     int readByte(int addr);                                 // takes a 24-bit (3 bytes) address and returns the data (1 byte) at that location                   
00051     void readStream(int addr, char* buf, int count);        // takes a 24-bit address, reads count bytes, and stores results in buf
00052     int  ReadSignature(void);
00053     void writeByte(int addr, int data);                     // takes a 24-bit (3 bytes) address and a byte of data to write at that location
00054     void writeStream(int addr, char* buf, int count);       // write count bytes of data from buf to memory, starting at addr  
00055     void writeString(int add, string str);
00056     void writePage(int pageNo,char *buf,int count);
00057                                       //erase all data on chip
00058     uint8_t readRegister();  
00059     uint8_t checkIfBusy();                                  // Check if IC is bury writing or erasing 
00060     void writeRegister(uint8_t regValue);                   // Write status register or configuration register                                   
00061     long readLong(int address);                             // Read long int number
00062     void writeLong(int addr, long value);                   // Write Long Integer Number
00063 private:
00064     void writeEnable();                                     // write enable
00065     void writeDisable();                                    // write disable
00066     void chipEnable();                                      // chip enable
00067     void chipDisable();                                     // chip disable
00068     void EnableWriteProtect();
00069     void DisableWriteProtect();
00070     void Hold_ReadWrite();
00071     void ReleaseHold_ReadWrite();
00072 
00073     
00074    // SPI _spi;
00075     DigitalOut _cs;
00076     DigitalOut _wp;
00077     DigitalOut _hold;
00078     
00079 };
00080 
00081 #endif