42 lines
1.5 KiB
C
42 lines
1.5 KiB
C
|
|
#ifndef _MCU_W25Q64JVSSIQ_DRV_H_
|
|||
|
|
#define _MCU_W25Q64JVSSIQ_DRV_H_
|
|||
|
|
|
|||
|
|
#include <stdbool.h>
|
|||
|
|
#include <stdint.h>
|
|||
|
|
#include <stdio.h>
|
|||
|
|
|
|||
|
|
#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
|
|||
|
|
|