Driver for AT25SF041 SPI Flash Memory, just basic operations
at25sf041.h@0:9225e2aef6b3, 2015-09-17 (annotated)
- Committer:
- tpadovani
- Date:
- Thu Sep 17 19:46:19 2015 +0000
- Revision:
- 0:9225e2aef6b3
primeira vers?o do protocolo de comunica??o com mem?ria flash SPI AT25SF041
Who changed what in which revision?
User | Revision | Line number | New 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 */ |