⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 at45db161.h

📁 使用STR710的SPI接口访问外部EEPROM的例子程序.使用KEIL UV3编译.使用了MDK3.05操作系统.
💻 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 + -