📄 flash.h
字号:
/************************************************************************************
* Copyright (c) 2004,西安铭朗电子科技有限责任公司
* All rights reserved.
*
* 文件名称: Flash.H
* 文件标识: none
* 适用器件: SST39VF040
*
* 摘 要: 本文件是外部Flash存储器SST39VF040的操作函数库的头文件;
*
* 当前版本: 1.1
* 作者:刘大伟
* 完成日期:2007年1月24日
*
* 历史版本:1.0
* 作 者:卢 阳
* 完成日期:2004年11月14日
*
* 历史版本:0.9
* 原作者 : 李林利
* 完成日期:2004年1月1日
*************************************************************************************/
#ifndef __Flash_h__
#define __Flash_h__
#define BANK_ADDRHN P4 //外部存储器地址高位占用P4口
#define CMD0_Addr XBYTE[0XD555]
#define CMD1_Addr XBYTE[0XEAAA]
#define BANK_ADDR_512 0X03 //39VF512高位地址占用I/O口低2位
#define BANK_ADDR_010 0X07 //39VF010高位地址占用I/O口低3位
#define BANK_ADDR_020 0X0F //39VF020高位地址占用I/O口低4位
#define BANK_ADDR_040 0X1F //39VF040高位地址占用I/O口低5位
#define Chip_512 2 //39VF512在系统中由P4口提供地址线的位数
#define Chip_010 3 //39VF010在系统中由P4口提供地址线的位数
#define Chip_020 4 //39VF020在系统中由P4口提供地址线的位数
#define Chip_040 5 //39VF040在系统中由P4口提供地址线的位数
#define SST39VF512_SECTORS 16 //39VF512扇区数
#define SST39VF010_SECTORS 32 //39VF010扇区数
#define SST39VF020_SECTORS 64 //39VF020扇区数
#define SST39VF040_SECTORS 128 //39VF040扇区数
/*****在此修改选用器件,将选用器件后的值改为"1",其他不用的器件改为"0"*****/
#define SST39VF512 0
#define SST39VF010 0
#define SST39VF020 0
#define SST39VF040 1 //系统使用39VF040
#if SST39VF512
#define BANK_ADDR BANK_ADDR_512
#define BANK_ADDRHN_CLR BANK_ADDRHN&(~BANK_ADDR)
#define Chip_Model Chip_512 //选择系统选用的芯片
#define FLASH_SECTORS SST39VF512_SECTORS
#elif SST39VF010
#define BANK_ADDR BANK_ADDR_010
#define BANK_ADDRHN_CLR BANK_ADDRHN&(~BANK_ADDR)
#define Chip_Model Chip_010 //选择系统选用的芯片
#define FLASH_SECTORS SST39VF010_SECTORS
#elif SST39VF020
#define BANK_ADDR BANK_ADDR_020
#define BANK_ADDRHN_CLR BANK_ADDRHN&(~BANK_ADDR)
#define Chip_Model Chip_020 //选择系统选用的芯片
#define FLASH_SECTORS SST39VF020_SECTORS
#elif SST39VF040
#define BANK_ADDR BANK_ADDR_040
#define BANK_ADDRHN_CLR BANK_ADDRHN&(~BANK_ADDR)
#define Chip_Model Chip_040 //选择系统选用的芯片
#define FLASH_SECTORS SST39VF040_SECTORS
#endif
/*********************************函数外部引用声明***********************************/
/*************************************************************************************
* 函数名称:Flash_ChipErase;
*
* 函数功能描述:Flash芯片整片擦除程序;
*
* 输入参数:none;
*
* 返回数据:none;
*
* 注意: 操作数据与顺序是针对39VF系列的固定操作,参考SST39VF512/010/020/040.PDF
* 系统选用39VF040,如有同系列型号变动,可修改头文件,无须改动此程序;
************************************************************************************/
void Flash_ChipErase (void);
/************************************************************************************
* 函数名称:Flash_SectorErase;
*
* 函数功能描述:Flash芯片扇区擦除程序;
*
* 输入参数:unsigned char类型扇区区号;
*
* 返回数据:none;
*
* 注意: 参数有效位位数与选用器件有关,系统中选用39VF040.
* 作数据与顺序是针对39VF系列的固定操作,参考SST39VF512/010/020/040.PDF
* 如有同系列型号变动,可修改头文件,无须改动此程序;
************************************************************************************/
void Flash_SectorErase (unsigned char sector);
/************************************************************************************
* 函数名称:Flash_ByteWR;
*
* 函数功能描述:Flash写入字节程序;
*
* 输入参数:unsigned long类型地址,unsigned char类型数据;
*
* 返回数据:none;
*
* 注意: 系统选用39VF040,如有同系列型号变动,可修改头文件,无须改动此程序;
*************************************************************************************/
void Flash_ByteWR (unsigned long address, unsigned char dat);
/*************************************************************************************
* 函数名称:Flash_DataWR;
*
* 函数功能描述:Flash写入多数据程序;
*
* 输入参数:unsigned long类型地址,unsigned char类型数据起始指针,unsigned char类型数据长度;
*
* 返回数据:none;
*
* 注意: 字符串长度不超过256字节;
*************************************************************************************/
void Flash_DataWR (unsigned long address, unsigned char *dat_sta, unsigned char count);
/*************************************************************************************
* 函数名称:Flash_ByteRD;
*
* 函数功能描述:Flash读取字节函数程序;
*
* 输入参数:unsigned long类型地址;
*
* 返回数据:unsigned char类型读出数据;
*
* 注意: 系统选用39VF040,如有同系列型号变动,可修改头文件,无须改动此程序;
*************************************************************************************/
unsigned char Flash_ByteRD (unsigned long Address);
/*************************************************************************************
* 函数名称:Flash_DataRD;
*
* 函数功能描述:Flash多数据读取程序;
*
* 输入参数:unsigned long类型地址,unsigned char类型数据存储起始地址指针,unsigned char类型数据长度;
*
* 返回数据:none;
*
* 注意: 注意所给地址范围,地址出错将返回不正确的数据;
**************************************************************************************/
void Flash_DataRD (unsigned long address, unsigned char *buf, unsigned char count);
/*************************************************************************************/
#endif
/*************************************************************************************/
// 文件结束
/*************************************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -