rims-arduino-library  v3.1.1
Recirculation infusion mash system library for Arduino
w25qflash.h
Go to the documentation of this file.
1 
7 #ifndef w25q_h
8 #define w25q_h
9 
10 // === W25Q INSTRUCTION SET ===
11 
12 #define W25Q_READID 0x90
13 
14 #define W25Q_WEN 0x06
15 #define W25Q_WDI 0x04
16 
17 #define W25Q_READ 0x03
18 
19 #define W25Q_PROG_PAGE 0x02
20 
21 #define W25Q_ERASE_SECTOR 0x20 // 4 KByte
22 #define W25Q_ERASE_BLOCK1 0x52 // 32 KByte
23 #define W25Q_ERASE_BLOCK2 0xD8 // 64 KByte
24 #define W25Q_ERASE_CHIP 0xC7 // 1024 KByte
25 
26 #define W25Q_SR_WEN 0x50
27 #define W25Q_SR_READ1 0x05
28 #define W25Q_SR_READ2 0x35
29 #define W25Q_SR_WRITE 0x01
30 
31 // === W25Q MASKS ===
32 
33 #define W25Q_MASK_BSY (0x01 << 0)
34 #define W25Q_MASK_WEL (0x01 << 1)
35 
36 
37 #include "Arduino.h"
38 
44 class W25QFlash {
45 
46 public :
47 
48  W25QFlash(void);
49 
50  void setCSPin(byte csPin);
51 
52  boolean verifyMem();
53 
54  void waitFree();
55  void setWriteEnable(bool state = true);
56 
57  void read(unsigned long addr, byte buffer[], unsigned long n);
58  void program(unsigned long addr, byte buffer[], unsigned long n);
59  void erase(unsigned long addr, byte command = W25Q_ERASE_SECTOR);
60 
61 protected:
62 
63  void _select() {digitalWrite(_csPin,LOW);}
64  void _deselect() {digitalWrite(_csPin,HIGH);}
65  byte _getStatus();
66  void _sendCmdAddr(byte cmd, unsigned long addr);
67 
68 private :
69 
70  byte _csPin;
71 
72 };
73 
74 #endif
Library to handle Windbond W25Q SPI flash memory.
Definition: w25qflash.h:44