📄 mem25vf.h
字号:
/***************************************************************************
* Copyright (c) 2005,深圳威利姆
* All rights reserved.
*
* 文件名称:mem25vf.h
* 摘 要:25vf020访问的头文件,采用8515的SPI接口
* 片选与写保护线连接方式如下:
*
* |-----------| |--------|
* | 8515 | |25vf020 |
* | PB4|---------------->|CE1 |
* | PB2|--------+------->|WP |
* | | | |--------|
* | | |
* | | | |--------|
* | | | |25vf020 |
* | | +------->|WP |
* | PB3|---------------->|CE2 |
* |-----------| |--------|
* 当前版本:2.1.2
* 作 者:陈兆红
* 完成日期:2005年10月15日
****************************************************************************/
#ifndef __MEM25VF_H
#define __MEM25VF_H
#include "uart.h"
#include "string.h"
//=============================================================================================
//=============================================================================================
#define CE10; SET_BIT(DDRD,3); CLR_BIT(PORTD,3)
#define CE11; SET_BIT(DDRD,3); SET_BIT(PORTD,3)
#define CE20; SET_BIT(DDRB,4); CLR_BIT(PORTB,4)
#define CE21; SET_BIT(DDRB,4); SET_BIT(PORTB,4)
#define WP10; SET_BIT(DDRB,3); CLR_BIT(PORTB,3)
#define WP11; SET_BIT(DDRB,3); SET_BIT(PORTB,3)
//---------------------------------------------------------------------------------------------
//25vf020 command set
//---------------------------------------------------------------------------------------------
#define MEM_READ 0x03
#define MEM_SECTOR_ERASE 0x20
#define MEM_BLOCK_ERASE 0x52
#define MEM_CHIP_ERASE 0x60
#define MEM_BYTE_WRITE 0x02
#define MEM_AAI_WRITE 0xaf
#define MEM_READ_STATUS 0x05
#define MEM_ENABLE_STATUS_WRITE 0x50
#define MEM_WRITE_STATUS 0x01
#define MEM_WRITE_ENABLE 0x06
#define MEM_WRITE_DISABLE 0x04
#define MEM_READ_ID 0x90
#define MEM_ID 0x43
//=================================================================================================
// Flash 内部存贮地址定义
//-------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------
//记录、字库存贮器片选
//---------------------------------------------------------------------------------------------
#define RECORD_MEM 2
#define ZIKU_MEM 1
//---------------------------------------------------------------------------------------------
/* 黑名单占用空间0x1000(1K),每个用户6字节,4096/6== 个黑名单用户信息(682个)*/
#define HEI_ID_START 0x0000
#define HEI_ID_END 0x0fff
#define HeiMaxNum 600
/*白名单占用空间0xf000-0x1000==>0xE000(58K)每个用户18字节,58K/18== 3185个白名单用户信息(3000个)*/
#define Bai_ID_START (ulong)0x1000
#define Bai_ID_END (ulong)0xf000
#define BaiMaxNum 3000
#define RECORD_START (ulong)0x0f000
#define RECORD_END (ulong)0x40000
/* 记录占用56K+256K , 汉字库占用196K(196*32==6272个汉字)*/
//==================================================================================
// 定义记录长度,以及记录到达18000条记录的时候报警,19000跳的时候提示抄收数据
//----------------------------------------------------------------------------------
#define RECORD_NUM 20000
#define ALARM_NUM 19000
//---------------------------------------------------------------------------------------------
//记录长度
#define RecordLength 10
//---------------------------------------------------------------------------------------------
#define HZ_OFFSET (ulong)0x1000 // 0x01000~0x4f000
/* 汉字占用的是第一块Flash, 占用空间为:256K,字库通过烧写IC写入 */
//=================================================================================================
// Mage16 内部 EeProm 地址定义
//-------------------------------------------------------------------------------------------------
#define DOOR_ADDR 0x0010 /* 门禁机地址存放地址 */
#define DOOR_ADDR_INV DOOR_ADDR+1 /* DOOR_ADDR+1 */
#define SPECIAL_CARD_USE_ADDR DOOR_ADDR_INV+1 /* Length 1 ==0x0012 */
#define NumOfTimeSeg_ADDR SPECIAL_CARD_USE_ADDR+1 /* Length 1 ==0x0013 */
#define CARD_TIME NumOfTimeSeg_ADDR+1 /* Length 1 ==0x0014 */
#define LCD_DISP CARD_TIME+1 /* Length 1 ==0x0015 */
//three special card addr
#define REPAIR_CARD_ADDR LCD_DISP+1 /* Length 13 ==0x0016 */
#define BAUD_NUM_ADDR REPAIR_CARD_ADDR+10 /* Length 4 0x0023 */
//-----------------------------------------------------------------------------------------------
/*开门时段 */
#define TIME_SEG_NUN_ADDR BAUD_NUM_ADDR+2 /* Length 4 0x0023 */
#define TIME1_SEG_ADDR TIME_SEG_NUN_ADDR+1 /* Length 1 0x0033 */
#define KAOQIN_ONLY_ADDR TIME1_SEG_ADDR+32 /* Length 1 0x0034 */
//-------------------------------------------------------------------------------------------------
/* 下载公司名称 , 中文:7个汉字 英文:52个字母 */
#define Len1OfCompanyName 14
#define Len2OfCompanyName 32
#define SENTENCE_ADDR KAOQIN_ONLY_ADDR+1 /* Length 14 or 32 0x0035*/
//-------------------------------------------------------------------------------------------------
/*the user sum and the record sum */
#define USER_SUM_ADDR SENTENCE_ADDR+32+1 /* Length 2 0x0071 */
#define HEI_SUM_ADDR USER_SUM_ADDR+2 /* Length 11 0x0073 */
//-----------------------
#define REC_BUF_LEN 60
//-----------------------
#define CUR_REC_LEN_ADDR HEI_SUM_ADDR+11 /* Length 2 0x00bc */
#define CUR_REC_PT_ADDR CUR_REC_LEN_ADDR+20 /* Length 4 *10 */
//-----------------------
#define LenOfSerialNo 16 /* 产品序列号长度 */
//-----------------------
#define ProductSerialNo_Addr CUR_REC_PT_ADDR+40 /* 产品序列号地址 */
#define RecLenPTR_Addr ProductSerialNo_Addr+16
#define RecAddrPTR_Addr RecLenPTR_Addr+2
#define Eeprom_ADDR_END RecAddrPTR_Addr+2 /* 初始标志地址 2字节 */
#define TimeSeg_ADDR Eeprom_ADDR_END+2 /* 长度==96 */
//-------------------------------------------------------------------------------------------------
#define SEN_Valid 0x03 /* 下载欢迎辞结束标志 */
//-------------------------------------------------------------------------------------------------
// Mage16 内部 EeProm 地址定义结束
//-------------------------------------------------------------------------------------------------
//-------------------------------------------------------------------------------------------------
//25vf020 operation function
//-------------------------------------------------------------------------------------------------
uchar Read_Status(uchar chipcs);
void Write_Status(uchar status,uchar chipcs);
uchar Mem_Read(ulong address,uchar chipcs);
uchar SPI_Receive(void);
void SPI_Init(void);
void SPI_Send(uchar sdata);
void Write_Enable(uchar chipcs);
void Sector_Erase(ulong address,uchar chipcs);
//void Block_Erase(ulong address,uchar chipcs);
void Chip_Erase(uchar chipcs);
//void Byte_Write(ulong address,uchar sdata,uchar chipcs);
void AAI_Write(uchar num,ulong address,uchar *sdata,uchar chipcs);
void read_flash(ulong addr,uchar chip_cs,uchar n,uchar *p);
//uchar Read_Id(uchar chipcs);
uchar RecordAdd( uchar *CardID );
//===============================================================================================
//===============================================================================================
#endif
//===============================================================================================
//===============================================================================================
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -