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

📄 fm1702.h

📁 ARM_CORTEX-M3应用实例开发详解光盘
💻 H
字号:
/******************************* (C) Embest ***********************************
* File Name          : fm1702.h
* Author             : tary
* Date               : 2009-06-25
* Version            : 0.4u
* Description        : fm1702 device low level operations 
******************************************************************************/

#ifndef __FM1702_H__
#define __FM1702_H__

//;==============================================
//;FM1702控制寄存器定义
//;==============================================
#define		Page_Reg		0x00
#define		Command_Reg		0x01
#define		FIFOData_Reg		0x02
#define		FIFOLength_Reg		0x04
#define		SecondaryStatus_Reg  	0x05
#define		InterruptEn_Reg		0x06
#define		InterruptRq_Reg		0x07
#define		Control_Reg		0x09
#define		ErrorFlag_Reg		0x0A
#define		CollPos_Reg		0x0B
#define		TimerValue_Reg		0x0C
#define		BitFraming_Reg	     	0x0F
#define		TxControl_Reg		0x11
//定义输出电导,用来调整输出能量,电流消耗,及操作距离
#define		CWConductance_Reg	0x12
#define		ModConductance_Reg	0x13
#define		ModWidth_Reg		0x15
#define		RxThreshold_Reg		0x1C
#define		RxControl2_Reg		0x1E
#define  	RxWait_Reg          	0x21
#define		ChannelRedundancy_Reg	0x22
#define		CRCPresetLSB		0x23
#define		CRCPresetMSB		0x24
#define  	MFOUTSelect_Reg        	0x26
#define  	FIFOLevel_Reg          	0x29
#define		TimerClock_Reg		0x2A
#define		TimerControl_Reg	0x2B
#define		TimerReload_Reg		0x2C



//;==============================================
//;FM1702发送命令代码
//;==============================================
//读FM1702 EEPROM命令, 并写入FIFO
#define 	ReadE2			0x03
//写FM1702 EEPROM命令, 数据来自FIFO
#define 	WriteE2			0x01
//将密钥从EEPROM复制到KEY缓存
#define		LoadKeyE2		0x0B
//将密钥从FIFO复制到KEY缓存
#define		LoadKey			0x19
//发送FIFO缓存数据
#define		Transmit                0x1A
//发送FIFO缓存数据并自动激活接收
#define		Transceive		0x1E
//证认第一步
#define		Authent1		0x0C
//证认第二步
#define		Authent2		0x14


int fm1702_init(void);
int fm1702_reg_initial(int fix);
int fm1702_mif_key_e2p(int mif_sec);
int fm1702_mif_key(int mif_sec, char* key);
int fm1702_mif_no_energy(int usec);
int fm1702_mif_halt(void);
int fm1702_mif_req(int f_all);
int fm1702_mif_anticol(char* uid);
int fm1702_mif_sel(char* uid);
int fm1702_mif_auth(char* uid, int mif_blk);
int fm1702_mif_read(int mif_blk, char* buf);
int fm1702_mif_write(int mif_blk, char* buf);

//FM1702的EEPROM操作
int fm1702_read_e2p(int addr, char* buf, int len);
int fm1702_write_e2p(int addr, char* buf, int len);

//#define REQ_TEST	1

#if defined(REQ_TEST)
//int iso14443_cmd(char* buf, int len);
int iso14443_test(void);
#endif


/* FM1702函数的返回值 */
#define FM1702_OK			0
#define FM1702_ERR_NOTAG		(-1)
#define FM1702_ERR_CRC			(-2)
#define FM1702_ERR_EMPTY		(-3)
#define FM1702_ERR_AUTH			(-4)
#define FM1702_ERR_PARITY		(-5)
#define FM1702_ERR_CODE			(-6)
#define FM1702_ERR_SERNR		(-7)
#define FM1702_ERR_SELECT		(-8)
#define FM1702_ERR_BIT			(-11)
#define FM1702_ERR_BYTE			(-12)
#define FM1702_ERR_WRITE		(-15)
#define FM1702_ERR_READ			(-18)
#define FM1702_ERR_LOADKEY		(-19)
#define FM1702_ERR_FRAME		(-20)
#define FM1702_ERR_REQ			(-21)
#define FM1702_ERR_SEL			(-22)
#define FM1702_ERR_ANTICOL		(-23)
#define FM1702_ERR_INIT			(-24)
#define FM1702_ERR_DESELECT		(-26)
#define FM1702_ERR_CMD			(-30)
#define FM1702_ERR_FIFO			(-31)
#define FM1702_ERR_E2P			(-32)
#define FM1702_ERR_REG			(-33)

// return = ErrorFlag + FM1702_E_BASE
#define FM1702_E_BASE			(-256)

//是否输出错误寄存器信息
#define FM1702_DEBUG			0

//是否调试CWConductance寄存器
#define FM1702_CW_DEBUG			0

#if FM1702_CW_DEBUG
extern int CW_VAL;
extern int MOD_W_VAL;
extern int fm1702_cw_debug(void);
#else
#define CW_VAL				(0x3F)
#define MOD_W_VAL			(0x13)
#endif

#endif //__FM1702_H__

/************************************END OF FILE******************************/

⌨️ 快捷键说明

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