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

📄 fm1715.h

📁 射频读卡芯片FM1715的C驱动程序。实现对FM1715初始化操作;实现对FM1715操作的总线方式(并行总线,SPI)选择;该函数实现从FM1715的EEPOM中读出数据等功能函数
💻 H
📖 第 1 页 / 共 2 页
字号:
//5.1 头文件
/****************************************************************/
/* main 程序头文件 */
/* 主要功能:常量定义 */
/* 编制: */
/* 时间: */
/* 修改:huzhenqing */
/* 时间:2003 年9 月 */
/****************************************************************/
//#ifndef _MAIN_INCLUDED_
//#define _MAIN_INCLUDED_


#include <ABSACC.H>




sbit FM_RST = P3^5; ///FM1715复位脚
//FM1715、RC500的复位控制口
#define FM1715RST_L FM_RST=0;;
#define FM1715RST_H FM_RST=1;

//常量定义
#ifndef TRUE
  #define TRUE 0x01
#endif 
#ifndef FALSE
  #define FALSE 0x00
#endif

//FM1715 命令码
#define Transceive 0x1E //发送接收命令
#define Transmit 0x1a //发送命令
#define ReadE2 0x03 //读FM1715 EEPROM 命令
#define WriteE2 0x01 //写FM1715 EEPROM 命令
#define Authent1 0x0c //验证命令认证过程第1 步
#define Authent2 0x14 //验证命令认证过程第2 步
#define LoadKeyE2 0x0b //将密钥从EEPROM 复制到KEY 缓存
#define LoadKey 0x19 //将密钥从FIFO 缓存复制到KEY 缓存
#define RF_TimeOut 0x50 //发送命令延时时间
#define Req 0x01
#define Sel 0x02

//数据类型定义
#define uchar unsigned char
#define uint unsigned int
#define ulong unsigned long


//卡片类型定义定义
#define TYPEA_MODE 0 //TypeA 模式
#define TYPEB_MODE 1 //TypeB 模式
#define SHANGHAI_MODE 2 //上海模式
#define TM0_HIGH 0xf0 //定时器0 高位,4MS 定时
#define TM0_LOW 0x60 //定时器0 低位
#define TIMEOUT 100 //超时计数器4MS×100=0.4 秒


//射频卡通信命令码定义
//第 15 页 共 52 页
#define RF_CMD_REQUEST_STD 0x26
#define RF_CMD_REQUEST_ALL 0x52
#define RF_CMD_ANTICOL 0x93
#define RF_CMD_SELECT 0x93
#define RF_CMD_AUTH_LA 0x60
#define RF_CMD_AUTH_LB 0x61
#define RF_CMD_READ 0x30
#define RF_CMD_WRITE 0xa0
#define RF_CMD_INC 0xc1
#define RF_CMD_DEC 0xc0
#define RF_CMD_RESTORE 0xc2
#define RF_CMD_TRANSFER 0xb0
#define RF_CMD_HALT 0x50

//Status Values
#define ALL 0x01
#define KEYB 0x04
#define KEYA 0x00
#define _AB 0x40
#define CRC_A 1
#define CRC_B 2
#define CRC_OK 0
#define CRC_ERR 1
#define BCC_OK 0
#define BCC_ERR 1


//******************* 卡类型定义********************
#define MIFARE_8K 0 //MIFARE 系列8KB 卡片
#define MIFARE_TOKEN 1 //MIFARE 系列1KB TOKEN 卡片
#define SHANGHAI_8K 2 //上海标准系列8KB 卡片
#define SHANGHAI_TOKEN 3 //上海标准系列1KB TOKEN 卡片


//******************* 函数错误代码定义********************
#define FM1715_OK 0 //正确
#define FM1715_NOTAGERR 1 //无卡
#define FM1715_CRCERR 2 //卡片CRC 校验错误
#define FM1715_EMPTY 3 //数值溢出错误
#define FM1715_AUTHERR 4 //验证不成功
#define FM1715_PARITYERR 5 //卡片奇偶校验错误
#define FM1715_CODEERR 6 //通讯错误(BCC 校验错)
#define FM1715_SERNRERR 8 //卡片序列号错误(anti-collision 错误)
#define FM1715_SELECTERR 9 //卡片数据长度字节错误(SELECT 错误)
#define FM1715_NOTAUTHERR 10 //卡片没有通过验证
#define FM1715_BITCOUNTERR 11 //从卡片接收到的位数错误
#define FM1715_BYTECOUNTERR 12 //从卡片接收到的字节数错误(仅读函数有效)
#define FM1715_RESTERR 13 //调用restore 函数出错
#define FM1715_TRANSERR 14 //调用transfer 函数出错
#define FM1715_WRITEERR 15 //调用write 函数出错
#define FM1715_INCRERR 16 //调用increment 函数出错
#define FM1715_DECRERR 17 //调用decrement 函数出错
#define FM1715_READERR 18 //调用read 函数出错
//第 16 页 共 52 页
#define FM1715_LOADKEYERR 19 //调用LOADKEY 函数出错
#define FM1715_FRAMINGERR 20 //FM1715 帧错误
#define FM1715_REQERR 21 //调用req 函数出错
#define FM1715_SELERR 22 //调用sel 函数出错
#define FM1715_ANTICOLLERR 23 //调用anticoll 函数出错
#define FM1715_INTIVALERR 24 //调用初始化函数出错
#define FM1715_READVALERR 25 //调用高级读块值函数出错
#define FM1715_DESELECTERR 26
#define FM1715_CMD_ERR 42 //命令错误
#define FM1715_Err 43 //为了压缩判别,统一把FM的错误代码定义为这个,如需要查询错误代码需修改程序,返回实际错误信息



#define FM_Serial  //使用SPI接口

//******************* FM1715 地址定义********************
#ifdef FM_Serial
//SPI接口
//#define Page_Sel 0x00 //页写寄存器
#define Page_SelW(x) WRITE_FM(0x00,x) //页写寄存器

//#define Command 0x01 //命令寄存器
#define CommandW(x) WRITE_FM(0x01,x) //命令寄存器
#define CommandR READ_FM(0x01) //命令寄存器

//#define FIFO 0x02 //64 字节FIFO 缓冲的输入输出寄存器
#define FIFOW(x) WRITE_FM(0x02,x) //64 字节FIFO 缓冲的输入输出寄存器
#define FIFOR READ_FM(0x02) //64 字节FIFO 缓冲的输入输出寄存器

//#define PrimaryStatus 0x03 //发射器,接收器及FIFO 的状态寄存器1	   *

//#define FIFO_Length 0x04 //当前FIFO 内字节数寄存器
#define FIFO_LengthR READ_FM(0x04) //当前FIFO 内字节数寄存器

//#define SecondaryStatus 0x05 //各种状态寄存器2	   
#define SecondaryStatusR 0x05 //各种状态寄存器2	   

//#define InterruptEn 0x06 //中断使能/禁止寄存器
#define InterruptEnW(x) WRITE_FM(0x06,x) //中断使能/禁止寄存器
#define InterruptEnR READ_FM(0x06) //中断使能/禁止寄存器

//#define Int_Req 0x07 //中断请求标识寄存器
#define Int_ReqW(x) WRITE_FM(0x07,x) //中断请求标识寄存器
#define Int_ReqR READ_FM(0x07) //中断请求标识寄存器

//#define Control 0x09 //控制寄存器
#define ControlW(x) WRITE_FM(0x09,x) //控制寄存器
#define ControlR READ_FM(0x09) //控制寄存器

//#define ErrorFlag 0x0A //错误状态寄存器
#define ErrorFlagR READ_FM(0x0A) //错误状态寄存器

//#define CollPos 0x0B //冲突检测寄存器
#define CollPosR READ_FM(0x0B) //冲突检测寄存器

//#define TimerValue 0x0c //定时器当前值			 *

//#define Bit_Frame 0x0F //位帧调整寄存器
#define Bit_FrameW(x) WRITE_FM(0x0F,x) //位帧调整寄存器
#define Bit_FrameR READ_FM(0x0F) //位帧调整寄存器

//#define TxControl 0x11 //发送控制寄存器
#define TxControlW(x) WRITE_FM(0x11,x) //发送控制寄存器
#define TxControlR READ_FM(0x11) //发送控制寄存器

//#define CWConductance 0x12 //选择发射脚TX1 和TX2 发射天线的阻抗
#define CWConductanceW(x) WRITE_FM(0x12,x) //选择发射脚TX1 和TX2 发射天线的阻抗
#define CWConductanceR READ_FM(0x12) //选择发射脚TX1 和TX2 发射天线的阻抗

//#define ModConductance 0x13 //定义输出驱动阻抗
#define ModConductanceW(x) WRITE_FM(0x13,x) //定义输出驱动阻抗
#define ModConductanceR READ_FM(0x13) //定义输出驱动阻抗

//#define CoderControl 0x14 //定义编码模式和时钟频率
#define CoderControlW(x) WRITE_FM(0x14,x) //定义编码模式和时钟频率
#define CoderControlR READ_FM(0x14) //定义编码模式和时钟频率

//#define TypeBFraming 0x17 //定义ISO14443B 帧格式
#define TypeBFramingW(x) WRITE_FM(0x17,x) //定义ISO14443B 帧格式
#define TypeBFramingR READ_FM(0x17) //定义ISO14443B 帧格式

//#define DecoderControl 0x1a //解码控制寄存器
#define DecoderControlW(x) WRITE_FM(0x1a,x) //解码控制寄存器
#define DecoderControlR READ_FM(0x1a) //解码控制寄存器

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -