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

📄 flash.h

📁 西安明朗公司开发板ML-F020ICB的全部测试代码
💻 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 + -