#ifndef _MCU_W25Q64JVSSIQ_DRV_H_ #define _MCU_W25Q64JVSSIQ_DRV_H_ #include #include #include #define W25Q64_FLASH_SIZE (8*1024*1024) // 8MB #define W25Q64_FLASH_PAGE_LEN 256 //单页字节数 #define W25Q64_FLASH_PAGE_NUM 32768 // 页缓存字节数为 FLASH_SIZE_MAX / FLASH_PAGE_BUF_SIZE #define W25Q64_FLASH_SECTOR_NUM 2048 // 区,一个区4K #define W25Q64_FLASH_BLOCK_NUM 128 // 块,一个块64K typedef void (*W25Q64JVSSIQ_SpiCs)(uint8_t flag); typedef unsigned char (*W25Q64JVSSIQ_SpiWriteReadByte)(uint8_t Data); typedef void (*W25Q64JVSSIQ_DelayUs)(unsigned int period); typedef struct { W25Q64JVSSIQ_SpiCs SpiCs; W25Q64JVSSIQ_SpiWriteReadByte SpiWriteReadByte; W25Q64JVSSIQ_DelayUs DelayUs; } W25Q64JVSSIQ_OBJ; /* 初始化FLASH */ int W25Q64_Init(W25Q64JVSSIQ_OBJ * FlashObj); /* 读取Flash上的部分数据 */ int W25Q64_ReadBytes(W25Q64JVSSIQ_OBJ * FlashObj, unsigned int Raddr, unsigned char *Rbuf, unsigned int RbufLen); int W25Q64_WriteBytes(W25Q64JVSSIQ_OBJ * FlashObj, unsigned int Waddr, unsigned char *Wbuf, unsigned int WbufLen); /* 清除块数据 */ int W25Q64_EraseBlock(W25Q64JVSSIQ_OBJ * FlashObj, unsigned int BlockAddr); /* 清除扇区数据 */ int W25Q64_EraseSector(W25Q64JVSSIQ_OBJ * FlashObj, unsigned int SectorAddr); /* 清除FLASH数据 */ void W25Q64_EraseChip(W25Q64JVSSIQ_OBJ * FlashObj); /* 进入低功耗 */ void W25Q64_PowerDown(W25Q64JVSSIQ_OBJ * FlashObj); /* 唤醒 */ void W25Q64_WakeUp(W25Q64JVSSIQ_OBJ * FlashObj); #endif