You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

50 lines
1.6 KiB
C

#ifndef __GD25Q21_H__
#define __GD25Q21_H__
void GD25Q21_Init(void);
uint16_t GD25Q21_ReadChipID(void);
uint16_t GD25Q21_ReadStatus(void);
uint32_t GD25Q21_IsBusy(void);
void GD25Q21_EraseSector(uint32_t addr);
void GD25Q21_ReadData(uint32_t addr, uint8_t buff[], uint32_t cnt);
void GD25Q21_WritePage(uint32_t addr, uint8_t data[], uint16_t cnt);
void GD25Q21_QuadSwitch(uint32_t on);
#define GD25Q21_STATUS_WIP_Pos 0 // Write In Progress
#define GD25Q21_STATUS_WIP_Msk (0x01 << GD25Q21_STATUS_WIP_Pos)
#define GD25Q21_STATUS_WEL_Pos 1 // Write Enable Latch
#define GD25Q21_STATUS_WEL_Msk (0x01 << GD25Q21_STATUS_WEL_Pos)
#define GD25Q21_STATUS_SBP_Pos 2 // Software Block Protect
#define GD25Q21_STATUS_SBP_Msk (0x1F << GD25Q21_STATUS_SBP_Pos)
#define GD25Q21_STATUS_SRP_Pos 7 // Status Register Protect
#define GD25Q21_STATUS_SRP_Msk (0x03 << GD25Q21_STATUS_SRP_Pos)
#define GD25Q21_STATUS_QE_Pos 9 // Quad Enable
#define GD25Q21_STATUS_QE_Msk (0x01 << GD25Q21_STATUS_QE_Pos)
#define GD25Q21_STATUS_SUS_Pos 15 // SUSPEND STATUS
#define GD25Q21_STATIS_SUS_Msk (0x01 << GD25Q21_STATUS_SUS_Pos)
#define GD25Q21_MANUFACTOR_ID 0xC8
#define GD25Q21_DEVICE_ID 0x11
#define GD25Q21_CMD_READ_CHIP_ID 0x90
#define GD25Q21_CMD_READ_STATUS_L 0x05
#define GD25Q21_CMD_READ_STATUS_H 0x35
#define GD25Q21_CMD_WRITE_STATUS 0x01
#define GD25Q21_CMD_READ_DATA 0x03
#define GD25Q21_CMD_READ_DATA_4bit 0x6B
#define GD25Q21_CMD_WRITE_PAGE 0x02
#define GD25Q21_CMD_ERASE_SECTOR 0x20
#define GD25Q21_CMD_WRITE_ENABLE 0x06
#define GD25Q21_CMD_WRITE_DISABLE 0x04
#endif //__GD25Q21_H__