📄 flash.h
字号:
/************************************************************************************
* Copyright (c), 2004-2007,西安铭朗电子科技有限责任公司
* All rights reserved.
*
* Http: www.mlarm.com
* Email: mlarm@mlarm.com
*
* File name: Flash.h
* Project : ML-F020ICB
* Processor: C8051F020
* Compiler : Keil C51 Compiler
*
* Author: 李林利
* Version: 1.20
* Date: 2007.6.1
* Email: GavinLi@126.com
*
* Description: 本文件FLASH存储器硬件驱动程序头文件;
*
* Others: 该驱动程序支持39VF512/010/020/040器件,
* SST39VF512, 地址范围: 0x00000~0x0ffff, 扇区索引号范围:0~15,器件标识:0xBFD4
* SST39VF010, 地址范围: 0x00000~0x1ffff, 扇区索引号范围:0~31,器件标识:0xBFD5
* SST39VF020, 地址范围: 0x00000~0x3ffff, 扇区索引号范围:0~63,器件标识:0xBFD6
* SST39VF040, 地址范围: 0x00000~0x7ffff, 扇区索引号范围:0~127,器件标识:0xBFD7
*
* Function List:
* 1. void Flash_Erase(void)
* 2. void Flash_EraseSector(unsigned char sector)
* 3. void Flash_WriteByte(unsigned long addr, unsigned char val)
* 4. unsigned char Flash_Write(unsigned long addr, unsigned char *p, unsigned int len)
* 5. unsigned char Flash_ReadByte(unsigned long addr)
* 6. void Flash_Read(unsigned long addr, unsigned char *p, unsigned int len)
* 7. unsigned int Flash_ReadID(void)
*
* History:
* 1. Author: 李林利
* Version: 1.10
* Date: 2007.3.12
* Modification: none
*
* 2. Author: 李林利
* Version: 1.00
* Date: 2004.11.24
* Modification: 建立文件
*
*************************************************************************************/
/*************************************************************************************
* FLASH存储器函数使用说明
*
* FLASH存储器函数可以任意调用,一般先擦除后写入再读出,但要注意参数范围否则出错;
* 细节详见具体函数说明;
*
*************************************************************************************/
/************************************************************************************/
// 常量及全局变量定义
/************************************************************************************/
/*************************************************************************************/
//
// FLASH存储器函数外部引用声明
//
/*************************************************************************************/
/***********************************************************************************
* Function: Flash_Erase;
*
* Description: Flash芯片擦除程序;
*
* Input: none;
*
* Output: none;
*
* Return: none;
*
* Note: 调用该函数执行时间大约100毫秒;
************************************************************************************/
void Flash_Erase(void);
/***********************************************************************************
* Function: Flash_EraseSector;
*
* Description: Flash芯片扇区擦除程序, 每4KB为一个扇区;
*
* Input: 扇区索引号
* SST39VF512,扇区索引号范围:0~15;
* SST39VF010,扇区索引号范围:0~31;
* SST39VF020,扇区索引号范围:0~63;
* SST39VF040,扇区索引号范围:0~127;
*
* Output: none;
*
* Return: none;
*
* Note: 调用该函数执行时间大约25毫秒, 本函数不做扇区索引号范围检查,所以不要超过范围;
************************************************************************************/
void Flash_EraseSector(unsigned char sector);
/***********************************************************************************
* Function: Flash_WriteByte;
*
* Description: 向FLASH的某个地址写入字节数据;
*
* Input: addr,flash地址; val,写入的字节数据;
* SST39VF512, 地址范围: 0x00000~0x0ffff;
* SST39VF010, 地址范围: 0x00000~0x1ffff;
* SST39VF020, 地址范围: 0x00000~0x3ffff;
* SST39VF040, 地址范围: 0x00000~0x7ffff;
*
* Output: none;
*
* Return: none;
*
* Note: 调用该函数执行时间大约30微秒,本函数不做地址范围范围检查,所以不要超过范围;
************************************************************************************/
void Flash_WriteByte(unsigned long addr, unsigned char val);
/***********************************************************************************
* Function: Flash_Write;
*
* Description: 写入FLASH一段数据;
*
* Input: addr,写入flash数据的起始地址; *p, 要写入数据的指针; len,要写入数据的长度;
* SST39VF512, 地址范围: 0x00000~0x0ffff;
* SST39VF010, 地址范围: 0x00000~0x1ffff;
* SST39VF020, 地址范围: 0x00000~0x3ffff;
* SST39VF040, 地址范围: 0x00000~0x7ffff;
*
* Output: none;
*
* Return: none;
*
* Note: 本函数不做地址范围范围检查,所以不要超过范围;
************************************************************************************/
unsigned char Flash_Write(unsigned long addr, unsigned char *p, unsigned int len);
/***********************************************************************************
* Function: Flash_ReadByte;
*
* Description: 读取FLASH的某个地址一个字节数据;
*
* Input: addr, flash地址;
* SST39VF512, 地址范围: 0x00000~0x0ffff;
* SST39VF010, 地址范围: 0x00000~0x1ffff;
* SST39VF020, 地址范围: 0x00000~0x3ffff;
* SST39VF040, 地址范围: 0x00000~0x7ffff;
*
* Output: none;
*
* Return: flash地址上的数据;
*
* Note: 本函数不做地址范围范围检查,所以不要超过范围;
************************************************************************************/
unsigned char Flash_ReadByte(unsigned long addr);
/***********************************************************************************
* Function: Flash_Read;
*
* Description: 读取FLASH的数据;
*
* Input: addr, 内部FLASH起始地址; *p, 要读取数据存储区指针; len,要读取数据的长度;
* SST39VF512, 地址范围: 0x00000~0x0ffff;
* SST39VF010, 地址范围: 0x00000~0x1ffff;
* SST39VF020, 地址范围: 0x00000~0x3ffff;
* SST39VF040, 地址范围: 0x00000~0x7ffff;
*
* Output: *p, 数据存储区指针;
*
* Return: none;
*
* Note: 本函数不做地址范围范围检查,所以不要超过范围;
************************************************************************************/
void Flash_Read(unsigned long addr, unsigned char *p, unsigned int len);
/***********************************************************************************
* Function: Flash_ReadID;
*
* Description: 读取FLASH器件标识,
* SST39VF512,器件标识:0xBFD4;
* SST39VF010,器件标识:0xBFD5;
* SST39VF020,器件标识:0xBFD6;
* SST39VF040,器件标识:0xBFD7;
*
* Input: none;
*
* Output: none;
*
* Return: FLASH器件标识;
*
* Note: 器件标识:0xBFD7, 其中0xBF是厂商标识,0xD7是器件标识;
************************************************************************************/
unsigned int Flash_ReadID(void);
/***********************************************************************************/
// 文件结束
/***********************************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -