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

📄 mem25vf.h

📁 串行flash 25vf020 驱动程序的定义
💻 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 + -