[ FORK ] SPI flash memory control library forked from jyam/W25X40BV

Dependents:   11u35_usbLocalFilesystem

Fork of W25X40BV by Johnny Yam

Committer:
jyam
Date:
Mon Mar 19 10:20:37 2012 +0000
Revision:
0:9de212faf980
Child:
1:cd41b8e3fdad
initial publish

Who changed what in which revision?

UserRevisionLine numberNew contents of line
jyam 0:9de212faf980 1 // W25X40BV.h
jyam 0:9de212faf980 2
jyam 0:9de212faf980 3 #ifndef W25X40BV_H
jyam 0:9de212faf980 4 #define W25X40BV_H
jyam 0:9de212faf980 5
jyam 0:9de212faf980 6 #include "mbed.h"
jyam 0:9de212faf980 7
jyam 0:9de212faf980 8 #define SPI_FREQ 1000000
jyam 0:9de212faf980 9 #define SPI_MODE 0
jyam 0:9de212faf980 10 #define SPI_NBIT 8
jyam 0:9de212faf980 11
jyam 0:9de212faf980 12 #define WE_INST 0x06
jyam 0:9de212faf980 13 #define WD_INST 0x04
jyam 0:9de212faf980 14 #define R_INST 0x03
jyam 0:9de212faf980 15 #define W_INST 0x02
jyam 0:9de212faf980 16 #define C_ERASE_INST 0x60
jyam 0:9de212faf980 17
jyam 0:9de212faf980 18 #define DUMMY_ADDR 0x00
jyam 0:9de212faf980 19 #define WAIT_TIME 1
jyam 0:9de212faf980 20
jyam 0:9de212faf980 21 #define ADDR_BMASK2 0x00ff0000
jyam 0:9de212faf980 22 #define ADDR_BMASK1 0x0000ff00
jyam 0:9de212faf980 23 #define ADDR_BMASK0 0x000000ff
jyam 0:9de212faf980 24
jyam 0:9de212faf980 25 #define ADDR_BSHIFT2 16
jyam 0:9de212faf980 26 #define ADDR_BSHIFT1 8
jyam 0:9de212faf980 27 #define ADDR_BSHIFT0 0
jyam 0:9de212faf980 28
jyam 0:9de212faf980 29 class W25X40BV {
jyam 0:9de212faf980 30 public:
jyam 0:9de212faf980 31 W25X40BV(PinName mosi, PinName miso, PinName sclk, PinName cs);
jyam 0:9de212faf980 32
jyam 0:9de212faf980 33 int read(int addr); // takes a 24-bit (3 bytes) address and returns the data (1 byte) at that location
jyam 0:9de212faf980 34 int read(int a2, int a1, int a0); // takes the address in 3 separate bytes A[23,16], A[15,8], A[7,0]
jyam 0:9de212faf980 35
jyam 0:9de212faf980 36 void write(int addr, int data); // takes a 24-bit (3 bytes) address and a byte of data to write at that location
jyam 0:9de212faf980 37 void write(int a2, int a1, int a0, int data); // takes the address in 3 separate bytes A[23,16], A[15,8], A[7,0]
jyam 0:9de212faf980 38
jyam 0:9de212faf980 39 void chipErase(); // erase all data on chip
jyam 0:9de212faf980 40
jyam 0:9de212faf980 41 private:
jyam 0:9de212faf980 42 void writeEnable(); // write enable
jyam 0:9de212faf980 43 void writeDisable(); // write disable
jyam 0:9de212faf980 44 void chipEnable(); // chip enable
jyam 0:9de212faf980 45 void chipDisable(); // chip disable
jyam 0:9de212faf980 46
jyam 0:9de212faf980 47 SPI _spi;
jyam 0:9de212faf980 48 DigitalOut _cs;
jyam 0:9de212faf980 49 };
jyam 0:9de212faf980 50
jyam 0:9de212faf980 51 #endif