72 lines
3.2 KiB
C
72 lines
3.2 KiB
C
|
#ifndef _W25Q256_H
|
||
|
#define _W25Q256_H
|
||
|
|
||
|
#include "gpio.h"
|
||
|
#include "main.h"
|
||
|
|
||
|
/*******************************************************************************
|
||
|
* 常量&宏定义 *
|
||
|
*******************************************************************************/
|
||
|
// #define FLASH_CS_GPIO_Port GPIOA
|
||
|
// #define FLASH_CS_Pin FLASH_CS_Pin
|
||
|
// #define FLASH_CLK_GPIO_Port GPIOA
|
||
|
// #define FLASH_CLK_Pin FLASH_CLK_Pin
|
||
|
// #define FLASH_MISO_GPIO_Port GPIOA
|
||
|
// #define FLASH_MISO_Pin FLASH_MISO_Pin
|
||
|
// #define FLASH_MOSI_GPIO_Port GPIOA
|
||
|
// #define FLASH_MOSI_Pin FLASH_MOSI_Pin
|
||
|
|
||
|
#define FLASH_CS_ENABLE HAL_GPIO_WritePin(FLASH_CS_GPIO_Port, FLASH_CS_Pin, GPIO_PIN_RESET) /*片选使能*/
|
||
|
#define FLASH_CS_DISABLE HAL_GPIO_WritePin(FLASH_CS_GPIO_Port, FLASH_CS_Pin, GPIO_PIN_SET) /*片选失能*/
|
||
|
|
||
|
#define FLASH_CLK_HIGH HAL_GPIO_WritePin(FLASH_CLK_GPIO_Port, FLASH_CLK_Pin, GPIO_PIN_SET) /*时钟信号高*/
|
||
|
#define FLASH_CLK_LOW HAL_GPIO_WritePin(FLASH_CLK_GPIO_Port, FLASH_CLK_Pin, GPIO_PIN_RESET) /*时钟信号低*/
|
||
|
|
||
|
#define FLASH_MISO_READ HAL_GPIO_ReadPin(FLASH_MISO_GPIO_Port, FLASH_MISO_Pin) /*MISO数据输入*/
|
||
|
|
||
|
#define FLASH_MOSI_HIGH HAL_GPIO_WritePin(FLASH_MOSI_GPIO_Port, FLASH_MOSI_Pin, GPIO_PIN_SET) /*MOSI数据引脚高电平*/
|
||
|
#define FLASH_MOSI_LOW HAL_GPIO_WritePin(FLASH_MOSI_GPIO_Port, FLASH_MOSI_Pin, GPIO_PIN_RESET) /*MOSI数据引脚低电平*/
|
||
|
|
||
|
#define FLASH_W25Q128
|
||
|
#ifdef FLASH_W25Q128
|
||
|
#define Flash_ReadData_CMD 0x03
|
||
|
#endif
|
||
|
#ifdef FLASH_W25Q256
|
||
|
#define Flash_ReadData_CMD 0x13
|
||
|
#endif
|
||
|
|
||
|
#define FLASH_WRITE_BUSYBIT 0X01
|
||
|
#define Flash_ReadID 0x90 /*读ID***16位*/
|
||
|
#define Flash_ReadID_only 0x4b /*读唯一ID***64位*/
|
||
|
#define Flash_Chip_Erase_CMD 0xC7 /*片擦除*/
|
||
|
#define Flash_WriteEnable_CMD 0x06
|
||
|
#define Flash_WriteDisable_CMD 0x04
|
||
|
#define Flash_PageProgram_CMD 0x02
|
||
|
#define Flash_WriteSR_CMD 0x01
|
||
|
#define Flash_ReadSR_CMD 0x05
|
||
|
#define Flash_SecErase_CMD 0x20
|
||
|
#define Flash_BlockErase_CMD 0xD8
|
||
|
#define W25Q_4ByteAddrModeEnable 0xB7
|
||
|
#define W25Q_Exit4ByteAddrModeEnable 0xE9
|
||
|
#define Flash_PAGEBYTE_LENGTH 256
|
||
|
#define EXT_FLASH_SECTOR_SIZE (1024*4)
|
||
|
#define EXT_FLASH_BLOCK_SIZE (1024*64)
|
||
|
|
||
|
/*******************************************************************************
|
||
|
* 函数声明 *
|
||
|
*******************************************************************************/
|
||
|
/* w25q256相关引脚初始化 */
|
||
|
void Flash_GPIO_Init(void);
|
||
|
/* 扇区擦除 */
|
||
|
void Flash_Erase_Block(uint8_t BlockNum);
|
||
|
/* 块擦除 */
|
||
|
void Flash_Erase_Sector(uint8_t Block_Num,uint8_t Sector_Number);
|
||
|
/* 写数据 */
|
||
|
void Flash_Write_Page(uint8_t *pBuffer, uint32_t WriteAddr, uint32_t WriteBytesNum);
|
||
|
void Flash_Write_MorePage(uint8_t *pBuffer, uint32_t WriteAddr, uint32_t WriteBytesNum);
|
||
|
/* 读数据 */
|
||
|
void Flash_Read(uint8_t *pBuffer,uint32_t ReadAddr,uint32_t ReadBytesNum);
|
||
|
|
||
|
void W25Q128_Write(uint8_t *pBuffer, uint32_t WriteAddr, uint32_t WriteBytesNum);
|
||
|
|
||
|
#endif
|