#if 1
#ifndef __FLASH_H
#define __FLASH_H			    
#include "sys.h" 

#define W25Q16 	0XEF14
 
#define SPI_FLASH_TYPE	W25Q16

#define	SPI_FLASH_CS PAout(4)  //选中FLASH		2			 
////////////////////////////////////////////////////////////////////////////
typedef struct _PIC_INFO
{
	u8 pic_format;
	u8 pic_num;
	u16 pic_width;
	u16 pic_height;
	u32 pic_bytes;
}PIC_INFO;
#define FLASH_ID 0XEF14
//指令表
#define W25X_WriteEnable		0x06 
#define W25X_WriteDisable		0x04 
#define W25X_ReadStatusReg		0x05 
#define W25X_WriteStatusReg		0x01 
#define W25X_ReadData			0x03 
#define W25X_FastReadData		0x0B 
#define W25X_FastReadDual		0x3B 
#define W25X_PageProgram		0x02 
#define W25X_BlockErase			0xD8 
#define W25X_SectorErase		0x20 
#define W25X_ChipErase			0xC7 
#define W25X_PowerDown			0xB9 
#define W25X_ReleasePowerDown	0xAB 
#define W25X_DeviceID			0xAB 
#define W25X_ManufactDeviceID	0x90 
#define W25X_JedecDeviceID		0x9F 

void SPI_Flash_Init(void);
u16  SPI_Flash_ReadID(void);  	    //读取FLASH ID
u8	 SPI_Flash_ReadSR(void);        //读取状态寄存器 
void SPI_FLASH_Write_SR(u8 sr);  	//写状态寄存器
void SPI_FLASH_Write_Enable(void);  //写使能 
void SPI_FLASH_Write_Disable(void);	//写保护
void SPI_Flash_Read(u8* pBuffer,u32 ReadAddr,u16 NumByteToRead);   //读取flash
void SPI_Flash_Write(u8* pBuffer,u32 WriteAddr,u16 NumByteToWrite);//写入flash
void SPI_Flash_Write_NoCheck(u8* pBuffer,u32 WriteAddr,u16 NumByteToWrite); 
void SPI_Flash_Erase_Chip_ALL(void);   //整片擦除
void SPI_Flash_Erase_Sector(u32 Dst_Addr);//扇区擦除
void SPI_Flash_Wait_Busy(void);           //等待空闲
void SPI_Flash_PowerDown(void);           //进入掉电模式
void SPI_Flash_WAKEUP(void);			  //唤醒

void Read_FlashPic(u32 ReadAddr,u32 NumByteToRead);   
void Disp_Flash_Pic_Num(u8 num);   
void Read_FlashPic_H(u32 ReadAddr,u32 NumByteToRead);  
void Read_FlashPic_9b(u32 ReadAddr,u32 NumByteToRead);  
void Disp_Flash_Pic_9b_Num(u8 num);
void DisplayPic_9b(u8 num);
void DisplayPic(u8 num);

	
#endif
#endif
