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

📄 flash.h

📁 SPI接口的Data Flash at45db的C驱动
💻 H
字号:
//*------------------------------------------------------------------------------------------------
//* 文件名			   : flash.h
//* 功能描述		   : 与外部flash相关的常量、宏、函数原型定义
//* 作者    		   : 焦海波
//* 版本			   : 0.1
//* 建立日期、时间	   : 2008/05/04 16:10
//* 最近修改日期、时间 : 
//* 修改原因		   : 
//*------------------------------------------------------------------------------------------------

#ifndef	FLASH_H
#define	FLASH_H

#ifdef OS_GLOBALS 
	#define OS_FLASH_EXT 
#else 
	#define OS_FLASH_EXT extern 
#endif
//*---------------------------------------- 常量、变量及宏定义 ------------------------------------
//* 外部FLASH占用的SPI片选引脚定义
#define	FLASH_NPCS		AT91C_PA12_SPI0_NPCS0
#define	FLASH_NPCS_IDX	0
#define	FLASH_BASE		AT91C_BASE_SPI0

//* 与FLASH相关的设备参数定义
#define FLASH_RW_BAUD_RATE	1000000			//* 通过SPI口读写FLASH使用1MHz的波特率

//* 指定FLASH ID号
#define	FLASH_ID			0x0C
#define	FLASH_ID_MASK		0x3C			//* 0x00111100(正好是5:2位域,该位域保存FLASH设备ID)

//* FLASH操作指令
#define	FLASH_CMD_READ_STATUS		0xD7
#define	FLASH_CMD_CONTINUOUS_READ	0xE8
#define	FLASH_CMD_PAGE_ERASE		0x81
#define	FLASH_CMD_PAGE_WRITE		0x82

//* FLASH状态寄存器位域掩码
#define	FLASH_IS_RDY	0x80

//* FLASH页面数量
#define	FLASH_PAGE_NUM			512
#define	FLASH_PAGE_SIZE			264
#define	FLASH_BUF_SIZE			FLASH_PAGE_SIZE

//* 实现高位数据到低位数据的交换,比如0x12345678经过转换后成为0x78563412
#define	macHighToLowSwitch(u32Val)		((u32Val & 0xFF000000) >> 24 | (u32Val & 0x00FF0000) >> 8 \
                                         | (u32Val & 0x0000FF00) << 8| (u32Val & 0x000000FF) << 24)
//*------------------------------------------- 结构体定义 ----------------------------------------
typedef union {
	INT32U	u32OptCode;
	struct {
		INT32U	bitByteAddr	:9;		//* 页面内的偏移地址
		INT32U	bitPageAddr	:9;    	//* 页面地址,实际上就是页面序号
		INT32U	bitReserved	:6;     //* 保留
		INT32U	bitCmd		:8;		//* 操作指令
	} bstOptCode;		
}U_FLASH_OPT_CODE;
//*-------------------------------------------- 原型声明 -----------------------------------------
OS_FLASH_EXT void FlashInitCfg(void);
OS_FLASH_EXT void CheckFlashID(void);
OS_FLASH_EXT BOOLEAN FlashWrite(INT16U u16PageIdx, INT16U u16ByteAddr, INT8U *pbData, INT16U u16DataLen);
OS_FLASH_EXT void FlashRead(INT16U u16PageIdx, INT16U u16ByteAddr, INT8U *pbData, INT32U u32DataLen);

#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -