📄 at45db161.h
字号:
/*=========================================================================*
* 项目:
* 文件: AT45DB161_bsp.h
* 描述: DataFlash的底层驱动
* 编译:
* 版本: 1.00
* 创建日期: 2007年7月2日
* 最后修订:
* 修改历史:
* 编译环境:
* ----------------------------------------------------------------------
* 广州尚地之光电子科技有限公司
* 开发部
*=========================================================================*/
#ifdef _BSP_DB161_C
#define BSP_DB161_EXT
#else
#define BSP_DB161_EXT extern
#endif
// 内部使用变量和函数声明
/*--常用常量定义(禁止更改)--*/
#define FALSE 0
#define TRUE 1
// ************** 变量定义 *******************************************
/*AT45DB081命令,使用SPI mode 3*/
#define CONTINUOUS_ARRAY_READ 0xE8
#define MAIN_MEMORY_PAGE_READ 0xD2
#define BUFFER1_READ 0xD4
#define BUFFER2_READ 0xD6
#define MAIN_MEMORY_PAGE_TO_BUFFER1_COPY 0x53
#define MAIN_MEMORY_PAGE_TO_BUFFER2_COPY 0x55
#define MAIN_MEMORY_PAGE_TO_BUFFER1_COMPARE 0x60
#define MAIN_MEMORY_PAGE_TO_BUFFER2_COMPARE 0x61
#define BUFFER1_WRITE 0x84
#define BUFFER2_WRITE 0x87
#define BUFFER1_PROGRAM_WITH_ERASE 0x83
#define BUFFER2_PROGRAM_WITH_ERASE 0x86
#define BUFFER1_PROGRAM_NO_ERASE 0x88
#define BUFFER2_PROGRAM_NO_ERASE 0x89
#define PAGE_ERASE 0x81
#define BLOCK_ERASE 0x50
#define MAIN_MEMORY_THROUGH_BUFFER1_PROGRAM 0x82
#define MAIN_MEMORY_THROUGH_BUFFER2_PROGRAM 0x85
#define AUTO_PAGE_THROUGH_BUFFER1_REWRITE 0x58
#define AUTO_PAGE_THROUGH_BUFFER2_REWRITE 0x59
#define DATA_FLASH_STATUS 0xD7
#define MAX_PAGE 4096
#define PAGE_RL 2
#define ADDR_MASK 0xfc
#define PAGE_BYTE 528
/* *********************************************************** */
/*SPI & DataFlash IO操作定义*/
#define BSPI1_SO 0x10
#define BSPI1_SI 0x20
#define BSPI1_SCLK 0x40
#define BSPI1_SSN 0x80
#define AT45_CS 0x8000
#define AT45_Chip_Select_ENABLE GPIO1->PD &= ~AT45_CS
#define AT45_Chip_Select_DISABLE GPIO1->PD |= AT45_CS
/*DataFlash 内部定义*/
#define DATA_FLASH_BUFFER1 0x00
#define DATA_FLASH_BUFFER2 0x01
#define DATA_FLASH_STATUS_READY_MASK 0x80
#define IS_DATA_FLASH_READY(_status_) (_status_ & DATA_FLASH_STATUS_READY_MASK)
#define DATA_FLASH_STATUS_COMPARE_MASK 0x40
#define IS_DATA_FLASH_COMPARE_OK(_status_) ((_status_ & DATA_FLASH_STATUS_COMPARE_MASK) == 0)
#define IS_DATA_FLASH_BUSY() (!IS_DATA_FLASH_READY(AT45_Read_REG()))
/********* 函数声明 *************/
BSP_DB161_EXT void initAT45DB161(void);
BSP_DB161_EXT u8 BPSI_DataSendReceive(u8 DATA);
BSP_DB161_EXT u8 Detect_AT45DB(void);
BSP_DB161_EXT void WriteMultiByteToBuffer1(u16 Address, u8 *Data, u16 len);
BSP_DB161_EXT u8 ReadMultiByteFromMainMemory(u16 PageNum, u16 SubAddress, u8 *msg, u8 len);
BSP_DB161_EXT void MainMemoryPageToBuffer1(u16 PageNum);
BSP_DB161_EXT void ProgramBuffer1ToMainMemory(u16 PageNum);
BSP_DB161_EXT u8 WriteMultiByteToMainMemory (u16 PageNum,u16 SubAddress,u8 *MultiByte,u8 len);
BSP_DB161_EXT void AutoPageRewriteThroughBuffer2(u16 PageNum);
BSP_DB161_EXT void WriteDataToFlash(u32 TargetAddr,u8 *save_data,u16 data_len);
BSP_DB161_EXT void WritePageData(u16 PageNum, u8 *save_data, u16 data_len);
BSP_DB161_EXT u8 ReadDataFromFlash(u32 TargetAddr, u8 *read_data, u8 data_len);
BSP_DB161_EXT void ErasePage(u16 PageNum);
BSP_DB161_EXT u8 ReadPageData( u16 PageNum, u16 nByte, u8 *msg);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -