#ifndef __W25QXX_H
#define __W25QXX_H

#include "main.h"

#define Flash_CS_Pin    GPIO_PIN_4
#define Flash_CS_Port   GPIOA



#define CS_DISENABLE        HAL_GPIO_WritePin(Flash_CS_Port, Flash_CS_Pin, GPIO_PIN_SET);    //CS无效信号
#define CS_ENABLE           HAL_GPIO_WritePin(Flash_CS_Port, Flash_CS_Pin, GPIO_PIN_RESET);  //CS有效信号

#define W25QxxID	            0XEF16  //W25Qxx ID
#define W25Qxx_WriteEnable		0x06    //写使能
#define W25Qxx_WriteDisable     0x04    //写禁止
#define W25Qxx_ReadStatusReg1	0x05    //读状态寄存器1指令
#define W25Qxx_SectorErase		0x20    //扇区（4KB）擦除指令
#define W25Qxx_BlockErase	    0xD8    //块（64KB）擦除指令
#define W25Qxx_PageProgram		0x02    //页（256B）写入指令
#define W25Qxx_ReadData	        0x03    //读数据指令
#define W25Qxx_Powerdown        0xB9    //Powerdown指令

void w25qxxInit(void);                     //函数声明，初始化W25Qxx
void w25qxxWriteEnable(void);                //函数声明，W25Qxx擦写使能
void w25qxxWrite_Disable(void);                //函数声明，W25Qxx擦写禁止
uint16_t w25qxxReadID(void);                  //函数声明，读取W25Qxx芯片ID
void w25qxxWaitBusy(void);                   //函数声明，W25Qxx等待空闲
void w25qxxErase_Sector(uint16_t);            //函数声明，W25Qxx擦除一个扇区（4KB）
void w25qxxErase_Block(uint8_t);              //函数声明，W25Qxx擦除一个块（64KB）
void w25qxxWrite_Page(uint8_t*, uint16_t);    //函数声明，W25Qxx写入一页数据（256字节）
void w25qxxRead(uint8_t*,uint32_t,uint32_t);  //函数声明，W25Qxx读取数据
	
#endif


