Driver for AT25SF041 SPI Flash Memory, just basic operations

Committer:
tpadovani
Date:
Thu Sep 17 19:53:27 2015 +0000
Revision:
1:e6ad2967ec95
Parent:
0:9225e2aef6b3
Credits header

Who changed what in which revision?

UserRevisionLine numberNew contents of line
tpadovani 0:9225e2aef6b3 1 #ifndef AT25SF041_H
tpadovani 0:9225e2aef6b3 2 #define AT25SF041_H
tpadovani 0:9225e2aef6b3 3
tpadovani 0:9225e2aef6b3 4 #include "mbed.h"
tpadovani 0:9225e2aef6b3 5
tpadovani 0:9225e2aef6b3 6 #include "at25sf041_commands.h"
tpadovani 0:9225e2aef6b3 7
tpadovani 0:9225e2aef6b3 8 #define spi_transfer(data) _spi.write(data)
tpadovani 0:9225e2aef6b3 9
tpadovani 0:9225e2aef6b3 10 #define DF_CS_inactive _cs = 1
tpadovani 0:9225e2aef6b3 11 #define DF_CS_active _cs = 0
tpadovani 0:9225e2aef6b3 12
tpadovani 0:9225e2aef6b3 13 #define READY_BUSY 0x01
tpadovani 0:9225e2aef6b3 14 #define WRITE_ENABLE_LATCH 0x02
tpadovani 0:9225e2aef6b3 15
tpadovani 0:9225e2aef6b3 16
tpadovani 0:9225e2aef6b3 17 class AT25SF041
tpadovani 0:9225e2aef6b3 18 {
tpadovani 0:9225e2aef6b3 19 public:
tpadovani 0:9225e2aef6b3 20
tpadovani 0:9225e2aef6b3 21 struct ID
tpadovani 0:9225e2aef6b3 22 {
tpadovani 0:9225e2aef6b3 23 uint8_t manufacturer; /**< Manufacturer id **/
tpadovani 0:9225e2aef6b3 24 uint8_t device[2]; /**< Device id **/
tpadovani 0:9225e2aef6b3 25 };
tpadovani 0:9225e2aef6b3 26
tpadovani 0:9225e2aef6b3 27 public:
tpadovani 0:9225e2aef6b3 28 /** CTOR **/
tpadovani 0:9225e2aef6b3 29 AT25SF041(PinName mosi, PinName miso, PinName sclk, PinName cs);
tpadovani 0:9225e2aef6b3 30 AT25SF041(SPI &spi, PinName cs);
tpadovani 0:9225e2aef6b3 31 /** DTOR **/
tpadovani 0:9225e2aef6b3 32 ~AT25SF041();
tpadovani 0:9225e2aef6b3 33
tpadovani 0:9225e2aef6b3 34 /** Setup SPI and pinout **/
tpadovani 0:9225e2aef6b3 35 void Init();
tpadovani 0:9225e2aef6b3 36
tpadovani 0:9225e2aef6b3 37 uint8_t ReadStatusRegister(int n);
tpadovani 0:9225e2aef6b3 38 void WriteEnable();
tpadovani 0:9225e2aef6b3 39 void WriteDisable();
tpadovani 0:9225e2aef6b3 40 void ReadManufacturerAndDeviceID(struct AT25SF041::ID *id);
tpadovani 0:9225e2aef6b3 41 void ReadArray(uint32_t address, uint32_t length, uint8_t *buffer);
tpadovani 0:9225e2aef6b3 42 void WriteArray(uint32_t address, uint32_t length, uint8_t *buffer);
tpadovani 0:9225e2aef6b3 43 void ChipErase();
tpadovani 0:9225e2aef6b3 44 void EndAndWait();
tpadovani 0:9225e2aef6b3 45
tpadovani 0:9225e2aef6b3 46 private:
tpadovani 0:9225e2aef6b3 47 SPI _spi;
tpadovani 0:9225e2aef6b3 48 DigitalOut _cs;
tpadovani 0:9225e2aef6b3 49 };
tpadovani 0:9225e2aef6b3 50
tpadovani 0:9225e2aef6b3 51 #endif /* AT25SF041_H */