📄 en25b16_driver.h
字号:
/****************************************************************************
** - EN25B16_driver.h -
**
** NewMsg_EN25B16模块驱动程序的匹配h文档
** Two 4-Kbyte, one 8-Kbyte, one 16-Kbyte,one 32-Kbyte, and thirty one 64-Kbyte sectors
**
**
** mader:许利军
**
** File version: $2008.6.27$ V1.1
**
***************************************************************************/
#ifndef EN25B16_DRIVER_H
#define EN25B16_DRIVER_H
/*IO定义*/
#pragma message ("警告:EN25B16模块驱动IO使用默认定义!")
#define EN25B16_CS_DDR DE_2
#define EN25B16_DO_DDR DE_3
#define EN25B16_DI_DDR DE_4
#define EN25B16_WP_DDR DE_5
#define EN25B16_CLK_DDR DE_6
#define EN25B16_HOLD_DDR DE_7
//
#define EN25B16_CS E_2
#define EN25B16_DO E_3
#define EN25B16_DI E_4
#define EN25B16_WP E_5
#define EN25B16_CLK E_6
#define EN25B16_HOLD E_7
//
#define EN25B16_CS_PING PE_2
#define EN25B16_DO_PING PE_3
#define EN25B16_DI_PING PE_4
#define EN25B16_WP_PING PE_5
#define EN25B16_CLK_PING PE_6
#define EN25B16_HOLD_PING PE_7
/*所有扇区地址*/
#define SECTOR_4K_BASE_ADDRESS 0X000000
#define SECTOR_4K_ADD_ONE_ADDRESS 0X001000
#define SECTOR_8K_BASE_ADDRESS 0X002000
#define SECTOR_16K_BASE_ADDRESS 0X004000
#define SECTOR_32K_BASE_ADDRESS 0X008000
#define SECTOR_64K_BASE_ADDRESS 0X010000
#define SECTOR_64K_ADD_ONE_ADDRESS 0X010000
/*状态寄存器*/
#define SRP 0x01
//Status Register Protect (SRP置1&&(WP#) is driven Low)) 为保护
#define BP2 0x00
//所有扇区都不保护
#define BP1 0x00
#define BP0 0x00
#define WEL 0x00
//Write Enable Latch 可接受擦写
#define BUSY 0x00
//When set to 1, such a cycle is in progress, when reset to 0 no such cycle is in progress
#define STATUS_RERISTER ((SRP<<7)|(BP2<<4)|(BP1<<3)|(BP0<<2)|(WEL<<1)|(BUSY<<0))
/*所有命令*/
#define WriteStatusRegister 0x01
#define ReadStatusRegister 0x05
#define ReadDataBytes 0x03
#define FastRead 0x0B //The first byte addressed can be at any location. The address is automatically
// incremented to the next higher address after each byte of data is shifted out.
//停止信号由CS置1 产生
#define PageProgram 0x02
#define SectorErase 0xD8
#define BulkErase 0xBE
#define DeepPowerdown 0xB9
#define ReadManufacturer_DeviceID 0x90
#define ReadIdentification 0x9F
#define WriteEnable 0x06
#define WriteDisable 0x04
#define ReleaseDeepPowerdown 0xAB
#define ManufacturerDeviceID 0x90
/*
#define EN25B16_IO_INITIALIZTION()\
EN25B16_CS_DDR = 1;\
EN25B16_DO_DDR = 0;\
EN25B16_DI_DDR = 1;\
EN25B16_WP_DDR = 1;\
EN25B16_CLK_DDR = 1;\
EN25B16_HOLD_DDR = 1;\
EN25B16_CS = 1;\
EN25B16_DO = 1;\
EN25B16_DI = 1;\
EN25B16_WP = 1;\
EN25B16_CLK = 0;\
EN25B16_HOLD = 1
#define EN25B16_INITIALIZTION()\
EN25B16_IO_INITIALIZTION();\
EN25B16Write8Bit(WriteEnable);\
EN25B16_CS = 1 ;\
EN25B16Write8Bit(WriteStatusRegister);\
EN25B16Write8Bit(STATUS_RERISTER);\
EN25B16_CS = 1;
#define GoToDeepPowerdownMode()\
EN25B16Write8Bit(DeepPowerdown);\
EN25B16_CS = 1
#define ReleaDeepPowerdownMode()\
EN25B16Write8Bit(ReleaseDeepPowerdown);\
EN25B16_CS = 1
*/
/*函数申明*/
/*EN25B16初始化*/
void EN25B16_INITIALIZTION();
/*进入DeepPowerdownMode*/
void GoToDeepPowerdownMode(void);
/*解除DeepPowerdownMode*/
void ReleaDeepPowerdownMode(void);
void EN25B16Write8Bit(unsigned char byte);
unsigned char EN25B16Read8Bit(void);
/*函数使用说明 sector_num为选择扇区的第1.2个 data_num为所需要写入的数据个数,*pdata为数据指针*/
//!!!!!!!!!!!!!!!!!!!!!写入函数最多支持一次256byte的写入 超多256则需要分多次写!!!!!!!!!!!!!!!!!!!!!!!!!!!
void WriteSector_4K(unsigned char sector_num,unsigned char data_location,unsigned char data_num,unsigned char *pdata);
void WriteSector_8K(unsigned char data_num,unsigned char data_location,unsigned char *pdata);
void WriteSecror_16K(unsigned char data_num,unsigned char data_location,unsigned char *pdata);
void WriteSector_32K(unsigned char data_num,unsigned char data_location,unsigned char *pdata);
void WriteSector_64K(unsigned char sector_num,unsigned char data_location,unsigned char data_num,unsigned char *pdata);
void ReadSector_4K(unsigned char sector_num,unsigned char data_location,unsigned char data_num,unsigned char *pdata);
void ReadSector_8K(unsigned char data_num,unsigned char data_location,unsigned char *pdata);
void ReadSector_16K(unsigned char data_num,unsigned char data_location,unsigned char *pdata);
void ReadSector_32K(unsigned char data_num,unsigned char data_location,unsigned char *pdata);
void ReadSector_64K(unsigned char sector_num,unsigned char data_location,unsigned char data_num,unsigned char *pdata);
void EraseSector_4K(unsigned char sector_num);
void EraseSector_8K(void);
void EraseSector_16K(void);
void EraseSector_32K(void);
void EraseSector_64K(unsigned char sector_num);
void EraseAll(void);
/*快速读取某byte*/
void FastReadSomeByte(unsigned long int add,unsigned char data_num,unsigned char *pdata);
#endif //EN25B16_DRIVER_H
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -