📄 flash.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 + -