![]() |
STM32 W25Qxx QuadSPI Driver
0.1a
https://github.com/Crazy-Geeks/STM32-W25Q-QSPI
|
Header for W25Qxxx lib. More...
#include "libs.h"Go to the source code of this file.
Data Structures | |
| struct | W25Q_STATUS_REG |
| W25Q Status Registers @TODO: Mem protected recognition. More... | |
Macros | |
| #define | MEM_FLASH_SIZE 256U |
| Mem size in MB-bit. | |
| #define | MEM_BLOCK_SIZE 64U |
| Mem big block size in KB. | |
| #define | MEM_SBLOCK_SIZE 32U |
| Mem small block size in KB. | |
| #define | MEM_SECTOR_SIZE 4U |
| Mem sector size in KB. | |
| #define | MEM_PAGE_SIZE 256U |
| Mem page size in bytes. | |
| #define | BLOCK_COUNT (MEM_FLASH_SIZE * 2) |
| Blocks count. | |
| #define | SECTOR_COUNT (BLOCK_COUNT * 16) |
| Sector count. | |
| #define | PAGE_COUNT (SECTOR_COUNT * 16) |
| Pages count. | |
| #define | W25Q_WRITE_ENABLE 0x06U |
| sets WEL bit, must be set before any write/program/erase | |
| #define | W25Q_WRITE_DISABLE 0x04U |
| resets WEL bit (state after power-up) | |
| #define | W25Q_ENABLE_VOLATILE_SR 0x50U |
| check 7.1 in datasheet | |
| #define | W25Q_READ_SR1 0x05U |
| read status-register 1 | |
| #define | W25Q_READ_SR2 0x35U |
| read status-register 2 | |
| #define | W25Q_READ_SR3 0x15U |
| read ststus-register 3 | |
| #define | W25Q_WRITE_SR1 0x01U |
| write status-register 1 (8.2.5) | |
| #define | W25Q_WRITE_SR2 0x31U |
| write status-register 2 (8.2.5) | |
| #define | W25Q_WRITE_SR3 0x11U |
| write status-register 3 (8.2.5) | |
| #define | W25Q_READ_EXT_ADDR_REG 0xC8U |
| read extended addr reg (only in 3-byte mode) | |
| #define | W25Q_WRITE_EXT_ADDR_REG 0xC8U |
| write extended addr reg (only in 3-byte mode) | |
| #define | W25Q_ENABLE_4B_MODE 0xB7U |
| enable 4-byte mode (128+ MB address) | |
| #define | W25Q_DISABLE_4B_MODE 0xE9U |
| disable 4-byte mode (<=128MB) | |
| #define | W25Q_READ_DATA 0x03U |
| read data by standard SPI | |
| #define | W25Q_READ_DATA_4B 0x13U |
| read data by standard SPI in 4-byte mode | |
| #define | W25Q_FAST_READ 0x0BU |
| highest FR speed (8.2.12) | |
| #define | W25Q_FAST_READ_4B 0x0CU |
| fast read in 4-byte mode | |
| #define | W25Q_FAST_READ_DUAL_OUT 0x3BU |
| fast read in dual-SPI OUTPUT (8.2.14) | |
| #define | W25Q_FAST_READ_DUAL_OUT_4B 0x3CU |
| fast read in dual-SPI OUTPUT in 4-byte mode | |
| #define | W25Q_FAST_READ_QUAD_OUT 0x6BU |
| fast read in quad-SPI OUTPUT (8.2.16) | |
| #define | W25Q_FAST_READ_QUAD_OUT_4B 0x6CU |
| fast read in quad-SPI OUTPUT in 4-byte mode | |
| #define | W25Q_FAST_READ_DUAL_IO 0xBBU |
| fast read in dual-SPI I/O (address transmits by both lines) | |
| #define | W25Q_FAST_READ_DUAL_IO_4B 0xBCU |
| fast read in dual-SPI I/O in 4-byte mode | |
| #define | W25Q_FAST_READ_QUAD_IO 0xEBU |
| fast read in quad-SPI I/O (address transmits by quad lines) | |
| #define | W25Q_FAST_READ_QUAD_IO_4B 0xECU |
| fast read in quad-SPI I/O in 4-byte mode | |
| #define | W25Q_SET_BURST_WRAP 0x77U |
| use with quad-I/O (8.2.22) | |
| #define | W25Q_PAGE_PROGRAM 0x02U |
| program page (256bytes) by single SPI line | |
| #define | W25Q_PAGE_PROGRAM_4B 0x12U |
| program page by single SPI in 4-byte mode | |
| #define | W25Q_PAGE_PROGRAM_QUAD_INP 0x32U |
| program page (256bytes) by quad SPI lines | |
| #define | W25Q_PAGE_PROGRAM_QUAD_INP_4B 0x34U |
| program page by quad SPI in 4-byte mode | |
| #define | W25Q_SECTOR_ERASE 0x20U |
| sets all 4Kbyte sector with 0xFF (erases it) | |
| #define | W25Q_SECTOR_ERASE_4B 0x21U |
| sets all 4Kbyte sector with 0xFF in 4-byte mode | |
| #define | W25Q_32KB_BLOCK_ERASE 0x52U |
| sets all 32Kbyte block with 0xFF | |
| #define | W25Q_64KB_BLOCK_ERASE 0xD8U |
| sets all 64Kbyte block with 0xFF | |
| #define | W25Q_64KB_BLOCK_ERASE_4B 0xDCU |
| sets all 64Kbyte sector with 0xFF in 4-byte mode | |
| #define | W25Q_CHIP_ERASE 0xC7U |
| fill all the chip with 0xFF | |
| #define | W25Q_ERASEPROG_SUSPEND 0x75U |
| suspend erase/program operation (can be applied only when SUS=0, BYSY=1) | |
| #define | W25Q_ERASEPROG_RESUME 0x7AU |
| resume erase/program operation (if SUS=1, BUSY=0) | |
| #define | W25Q_POWERDOWN 0xB9U |
| powers down the chip (power-up by reading ID) | |
| #define | W25Q_POWERUP 0xABU |
| release power-down | |
| #define | W25Q_DEVID 0xABU |
| read Device ID (same as powerup) | |
| #define | W25Q_FULLID 0x90U |
| read Manufacturer ID & Device ID | |
| #define | W25Q_FULLID_DUAL_IO 0x92U |
| read Manufacturer ID & Device ID by dual I/O | |
| #define | W25Q_FULLID_QUAD_IO 0x94U |
| read Manufacturer ID & Device ID by quad I/O | |
| #define | W25Q_READ_UID 0x4BU |
| read unique chip 64-bit ID | |
| #define | W25Q_READ_JEDEC_ID 0x9FU |
| read JEDEC-standard ID | |
| #define | W25Q_READ_SFDP 0x5AU |
| read SFDP register parameters | |
| #define | W25Q_ERASE_SECURITY_REG 0x44U |
| erase security registers | |
| #define | W25Q_PROG_SECURITY_REG 0x42U |
| program security registers | |
| #define | W25Q_READ_SECURITY_REG 0x48U |
| read security registers | |
| #define | W25Q_IND_BLOCK_LOCK 0x36U |
| make block/sector read-only | |
| #define | W25Q_IND_BLOCK_UNLOCK 0x39U |
| disable block/sector protection | |
| #define | W25Q_READ_BLOCK_LOCK 0x3DU |
| check block/sector protection | |
| #define | W25Q_GLOBAL_LOCK 0x7EU |
| global read-only protection enable | |
| #define | W25Q_GLOBAL_UNLOCK 0x98U |
| global read-only protection disable | |
| #define | W25Q_ENABLE_RST 0x66U |
| enable software-reset ability | |
| #define | W25Q_RESET 0x99U |
| make software reset | |
Enumerations | |
| enum | W25Q_STATE { W25Q_OK = 0 , W25Q_BUSY = 1 , W25Q_PARAM_ERR = 2 , W25Q_CHIP_ERR = 3 , W25Q_SPI_ERR = 4 , W25Q_CHIP_IGNORE = 5 } |
| W25Q Return State Lib's functions status returns. More... | |
Functions | |
| W25Q_STATE | W25Q_Init (void) |
| Initalize function. More... | |
| W25Q_STATE | W25Q_EnableVolatileSR (void) |
| Make Status Register Volatile. More... | |
| W25Q_STATE | W25Q_ReadStatusReg (u8_t *reg_data, u8_t reg_num) |
| Read status register to variable. More... | |
| W25Q_STATE | W25Q_WriteStatusReg (u8_t reg_data, u8_t reg_num) |
| Write status register from variable. More... | |
| W25Q_STATE | W25Q_ReadStatusStruct (W25Q_STATUS_REG *status) |
| Read all status registers to struct. More... | |
| W25Q_STATE | W25Q_IsBusy (void) |
| Check chip's busy status. More... | |
| W25Q_STATE | W25Q_ReadSByte (i8_t *buf, u8_t pageShift, u32_t pageNum) |
| Read signed 8-bit variable. More... | |
| W25Q_STATE | W25Q_ReadByte (u8_t *buf, u8_t pageShift, u32_t pageNum) |
| Read 8-bit variable. More... | |
| W25Q_STATE | W25Q_ReadSWord (i16_t *buf, u8_t pageShift, u32_t pageNum) |
| Read signed 16-bit variable. More... | |
| W25Q_STATE | W25Q_ReadWord (u16_t *buf, u8_t pageShift, u32_t pageNum) |
| Read 16-bit variable. More... | |
| W25Q_STATE | W25Q_ReadSLong (i32_t *buf, u8_t pageShift, u32_t pageNum) |
| Read signed 32-bit variable. More... | |
| W25Q_STATE | W25Q_ReadLong (u32_t *buf, u8_t pageShift, u32_t pageNum) |
| Read 32-bit variable. More... | |
| W25Q_STATE | W25Q_ReadData (u8_t *buf, u16_t len, u8_t pageShift, u32_t pageNum) |
| Read any 8-bit data. More... | |
| W25Q_STATE | W25Q_ReadRaw (u8_t *buf, u16_t data_len, u32_t rawAddr) |
| Read data from raw addr. More... | |
| W25Q_STATE | W25Q_SingleRead (u8_t *buf, u32_t len, u32_t Addr) |
| Read data from raw addr by single line. More... | |
| W25Q_STATE | W25Q_EraseSector (u32_t SectAddr) |
| Erase 4KB Sector. More... | |
| W25Q_STATE | W25Q_EraseBlock (u32_t BlockAddr, u8_t size) |
| Erase 32KB/64KB Sector. More... | |
| W25Q_STATE | W25Q_EraseChip (void) |
| Erase all chip. More... | |
| W25Q_STATE | W25Q_ProgramSByte (i8_t buf, u8_t pageShift, u32_t pageNum) |
| Program signed 8-bit variable. More... | |
| W25Q_STATE | W25Q_ProgramByte (u8_t buf, u8_t pageShift, u32_t pageNum) |
| Program 8-bit variable. More... | |
| W25Q_STATE | W25Q_ProgramSWord (i16_t buf, u8_t pageShift, u32_t pageNum) |
| Program signed 16-bit variable. More... | |
| W25Q_STATE | W25Q_ProgramWord (u16_t buf, u8_t pageShift, u32_t pageNum) |
| Program 16-bit variable. More... | |
| W25Q_STATE | W25Q_ProgramSLong (i32_t buf, u8_t pageShift, u32_t pageNum) |
| Program signed 32-bit variable. More... | |
| W25Q_STATE | W25Q_ProgramLong (u32_t buf, u8_t pageShift, u32_t pageNum) |
| Program 32-bit variable. More... | |
| W25Q_STATE | W25Q_ProgramData (u8_t *buf, u16_t len, u8_t pageShift, u32_t pageNum) |
| Program any 8-bit data. More... | |
| W25Q_STATE | W25Q_ProgramRaw (u8_t *buf, u16_t data_len, u32_t rawAddr) |
| Program data to raw addr. More... | |
| W25Q_STATE | W25Q_SetBurstWrap (u8_t WrapSize) |
| Set Burst with Wrap. More... | |
| W25Q_STATE | W25Q_ProgSuspend (void) |
| Pause Programm/Erase operation. More... | |
| W25Q_STATE | W25Q_ProgResume (void) |
| Resume Programm/Erase operation. More... | |
| W25Q_STATE | W25Q_Sleep (void) |
| Set low current consumption. More... | |
| W25Q_STATE | W25Q_WakeUP (void) |
| Wake the chip up from sleep mode. More... | |
| W25Q_STATE | W25Q_ReadID (u8_t *buf) |
| Read chip ID. More... | |
| W25Q_STATE | W25Q_ReadFullID (u8_t *buf) |
| Read full chip ID (Manufacturer ID + Device ID) More... | |
| W25Q_STATE | W25Q_ReadUID (u8_t *buf) |
| Read unique chip ID. More... | |
| W25Q_STATE | W25Q_ReadJEDECID (u8_t *buf) |
| Read ID by JEDEC Standards. More... | |
| W25Q_STATE | W25Q_ReadSFDPRegister (u8_t *buf) |
| Read device descriptor (SFDP Standard) More... | |
| W25Q_STATE | W25Q_EraseSecurityRegisters (u8_t numReg) |
| Erase security register. More... | |
| W25Q_STATE | W25Q_ProgSecurityRegisters (u8_t *buf, u8_t numReg, u8_t byteAddr) |
| Program security register. More... | |
| W25Q_STATE | W25Q_ReadSecurityRegisters (u8_t *buf, u8_t numReg, u8_t byteAddr) |
| Read security register. More... | |
| W25Q_STATE | W25Q_BlockReadOnly (u32_t Addr, bool enable) |
| Individual block/sector read-only lock. More... | |
| W25Q_STATE | W25Q_BlockReadOnlyCheck (bool *state, u32_t Addr) |
| Check block's/sector's read-only lock status. More... | |
| W25Q_STATE | W25Q_GlobalReadOnly (bool enable) |
| Set read-only param to all chip. More... | |
| W25Q_STATE | W25Q_SwReset (bool force) |
| Software reset. More... | |
Header for W25Qxxx lib.