103 lines
3.7 KiB
C
103 lines
3.7 KiB
C
|
#ifndef _W25Q128_H
|
|||
|
#define _W25Q128_H
|
|||
|
|
|||
|
#include "comm_types.h"
|
|||
|
#include "gd32f4xx_gpio.h"
|
|||
|
|
|||
|
|
|||
|
|
|||
|
extern unsigned short int ID;
|
|||
|
extern unsigned char only_id[8];
|
|||
|
/*
|
|||
|
*********************************************************************************************************
|
|||
|
*
|
|||
|
*********************************************************************************************************
|
|||
|
*/
|
|||
|
|
|||
|
#define FLASH_DI_HIGH (gpio_bit_set(GPIOB,GPIO_PIN_5))
|
|||
|
#define FLASH_DI_LOW (gpio_bit_reset(GPIOB,GPIO_PIN_5))
|
|||
|
|
|||
|
#define FLASH_CLK_HIGH (gpio_bit_set(GPIOB,GPIO_PIN_3))
|
|||
|
#define FLASH_CLK_LOW (gpio_bit_reset(GPIOB,GPIO_PIN_3))
|
|||
|
|
|||
|
//#define FLASH_CS_DISABLE (gpio_bit_set(GPIOE,GPIO_PIN_2))
|
|||
|
//#define FLASH_CS_ENABLE (gpio_bit_reset(GPIOE,GPIO_PIN_2))
|
|||
|
|
|||
|
#define FLASH_CS_DISABLE (gpio_bit_set(GPIOB,GPIO_PIN_8))
|
|||
|
#define FLASH_CS_ENABLE (gpio_bit_reset(GPIOB,GPIO_PIN_8))
|
|||
|
|
|||
|
|
|||
|
#define FLASH_DO_READ (gpio_input_bit_get(GPIOB,GPIO_PIN_4))
|
|||
|
|
|||
|
#define FLASH_W25Q128
|
|||
|
|
|||
|
#define FLASH_WRITE_BUSYBIT 0X01
|
|||
|
#ifdef FLASH_W25Q128
|
|||
|
#define Flash_ReadData_CMD 0x03 //3 BYTE MODE
|
|||
|
#endif
|
|||
|
|
|||
|
#ifdef FLASH_W25Q256
|
|||
|
#define Flash_ReadData_CMD 0x13 //4 BYTE MODE new add
|
|||
|
#endif
|
|||
|
|
|||
|
|
|||
|
#define Flash_ReadID 0x90//<2F><>ID***16λ
|
|||
|
#define Flash_ReadID_only 0x4b//<2F><>ΨһID***64λ
|
|||
|
#define Flash_Chip_Erase_CMD 0xC7//Ƭ<><C6AC><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
#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 Flash_SECBYTE_LENGTH (1024*4)
|
|||
|
#define Flash_BLOCKBYTE_LENGTH (Flash_SECBYTE_LENGTH << 4) //Block<63><6B>С
|
|||
|
|
|||
|
//<2F><><EFBFBD><EFBFBD>FLASH<53>洢<EFBFBD><E6B4A2><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>ַ
|
|||
|
#define FLASH_BLOCK_ADD(BLOCK) (BLOCK * 65536)
|
|||
|
#define FLASH_SECTOR_ADD(BLOCK, SECTOR) ((BLOCK * 65536) + (SECTOR * 4096))
|
|||
|
|
|||
|
|
|||
|
|
|||
|
#define W25Q128_BUFFER_LEN 256//һ<>ζ<EFBFBD><CEB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD>,<2C><>һ<EFBFBD><D2BB><EFBFBD>ܱ<EFBFBD>1024<32><34><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
typedef struct _w25q128_add_inf_
|
|||
|
{
|
|||
|
unsigned int add;//<2F><>ַ
|
|||
|
unsigned char block;//<2F><>ַ<EFBFBD><D6B7><EFBFBD>ڵ<EFBFBD>block
|
|||
|
unsigned int block_first_add;//<2F><>ַ<EFBFBD><D6B7><EFBFBD>ڵ<EFBFBD>block<63><6B><EFBFBD><EFBFBD>ַ
|
|||
|
unsigned int block_tail_add;//<2F><>ַ<EFBFBD><D6B7><EFBFBD>ڵ<EFBFBD>block<63><6B>β<EFBFBD><CEB2>ַ
|
|||
|
|
|||
|
unsigned char sector;//<2F><>ַ<EFBFBD><D6B7><EFBFBD>ڵ<EFBFBD>sector
|
|||
|
unsigned int sector_first_add;//<2F><>ַ<EFBFBD><D6B7><EFBFBD>ڵ<EFBFBD>sector<6F><72><EFBFBD><EFBFBD>ַ
|
|||
|
unsigned int sector_tail_add;//<2F><>ַ<EFBFBD><D6B7><EFBFBD>ڵ<EFBFBD>sector<6F><72>β<EFBFBD><CEB2>ַ
|
|||
|
|
|||
|
}w25q128_add_inf;
|
|||
|
|
|||
|
/*******************************************************************************
|
|||
|
** <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
*******************************************************************************/
|
|||
|
void Flash_GPIO_Init(void);
|
|||
|
void Flash_Erase_Block(u_int8_t BlockNum);
|
|||
|
void Flash_Erase_Sector(u_int8_t Block_Num,u_int8_t Sector_Number);
|
|||
|
void Flash_Write_MorePage(u_int8_t *pBuffer, u_int32_t WriteAddr, u_int32_t WriteBytesNum);
|
|||
|
void Flash_Read(u_int8_t *pBuffer,u_int32_t ReadAddr,u_int32_t ReadBytesNum);
|
|||
|
void Enter4ByteAddrMode(void);
|
|||
|
void Exit4ByteAddrMode(void);
|
|||
|
void write_many_data(int n,unsigned char *p,unsigned int start_address);
|
|||
|
void Flash_Write_Page(u_int8_t *pBuffer, u_int32_t WriteAddr, u_int32_t WriteBytesNum);
|
|||
|
char w25q128_random_write(unsigned int write_add, unsigned int cache_add, char *data, unsigned int len);
|
|||
|
unsigned int w25q128_random_crc(char *data, unsigned int len);
|
|||
|
w25q128_add_inf w25q128_block_sector_to_add(unsigned char block, unsigned char sector);
|
|||
|
w25q128_add_inf w25q128_add_to_block_sector(unsigned int add);
|
|||
|
void FLASH_BulkErase();
|
|||
|
|
|||
|
void Read_w25q128_ID();
|
|||
|
void Read_w25q128_only_ID();
|
|||
|
|
|||
|
#endif
|