?? 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 + -