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

📄 zlg500.h

📁 SmartARM2400开发平台配套例程
💻 H
📖 第 1 页 / 共 2 页
字号:
// zlg500模块功能接口
#ifndef __ZLG500_H
#define __ZLG500_H

#include "config.h"

#ifdef __cplusplus
	extern "C" {
#endif

// 功能剪裁配置
#define PCD_GET_DEV_INFO_EN			1	// 使能 获取读卡模块的信息函数
#define PCD_CONFIG_EN				1	// 使能 配置函数
#define PCD_CLOSE_EN				1	// 使能 关闭读卡芯片函数
#define PCD_LOAD_KEY_EN				1	// 使能 装载密钥函数
#define PCD_SEL_ANT_EN				1	// 使能 选择天线函数
#define PCD_CLOSE_ANT_EN			1	// 使能 关闭天线函数

#define PICC_REQUEST_EN				1	// 使能 请求卡片函数
#define PICC_ANTICOLL_EN			1	// 使能 卡片防碰撞函数
#define PICC_SELECT_EN				1	// 使能 选择卡片函数
#define PICC_HALT_EN				1	// 使能 卡片挂起函数
#define PICC_ACTIVE_TYPEA_EN		1	// 使能 激活类型A函数
#define PICC_AUTH_KEY_E2PROM_EN		1	// 使能 E2PROM验证卡片函数
#define PICC_AUTH_KEY_EN			1	// 使能 直接验证卡片函数

#define PICC_READ_BLOCK_EN			1	// 使能 读卡数据块函数
#define PICC_WRITE_BLOCK_EN			1	// 使能 写卡数据块函数
#define PICC_UL_READ_BLOCK_EN		1	// 使能 读Ultralight卡数据块函数
#define PICC_UL_WRITE_BLOCK_EN		1	// 使能 写Ultralight卡数据块函数

#define PICC_READ_VALUE_EN			1	// 使能 读值函数
#define PICC_WRITE_VALUE_EN			1	// 使能 写值函数
#define PICC_OPERATE_VALUE_EN		1	// 使能 操作值函数

#define PICC_AUTO_DETECT_EN			1	// 使能 设置自动检测卡片函数
#define PICC_RECV_DETECT_DATA_EN	1	// 使能 接收自动检测卡片数据的函数
#define PICC_READ_DETECT_DATA_EN	1	// 使能 读取自动检测卡片数据的函数


// 函数返回错误代码
#define OK			0		// 正确
#define COMM_ERR	1		// 通信出错
#define SEQ_ERR		2		// 帧号错误
#define BCC_ERR		4		// 校验错误

// 请求类型
#define REQ_STD		0x26	// 标准模式
#define REQ_ALL		0x52	// 全部模式

// 选择和防冲级别
#define SEL_CODE1	0x93	// 一级选择
#define SEL_CODE2	0x95	// 二级选择
#define SEL_CODE3	0x97	// 三级选择

// 密钥类型
#define KEYA		0x60	// A密钥
#define KEYB		0x61	// B密钥

// 数值操作类型
#define DECREMENT	0xC0	// 减少
#define INCREMENT	0xC1	// 增加
#define RESTORE		0xC2	// 恢复

// 卡协议类型
#define ISO14443A	0x00	// A型协议
#define ISO14443B	0x80	// B型协议


// 自动检测的输出模式
#define AD_SERIAL_OUT	0x01	// 串口主动输出
#define AD_INT_ENABLE	0x02	// 中断使能
#define AD_CONTINUE		0x04	// 串口输出之后继续检测
#define AD_HALT			0x08	// 最后将卡挂起

// 天线驱动模式
#define AD_ALTER_TX		0x00	// TX1,TX2交替输出
#define AD_ONLY_TX1		0x01	// 仅TX1输出
#define AD_ONLY_TX2		0x02	// 仅TX2输出
#define AD_ALL_TX		0x03	// TX1,TX2同时输出

#define AD_RFU			0x00
#define AD_RE_ENABLE	0x01


///////////////////////////////////////////////////////////////////////////////
// 设备控制函数,PCD为Proximity Coupling Device的缩写,可简单理解为“读卡器”
//

///////////////////////////////////////////////////////////////////////////
//	函数名:	PCD_Init
//	描述:		初始化
//	输入参数:	无。
//	输出参数:	无。
//	返回值:	OK——成功;其它——失败。
///////////////////////////////////////////////////////////////////////////
uint8 PCD_Init(void);

///////////////////////////////////////////////////////////////////////////
//	函数名:	PCD_GetDevInfo
//	描述:		获取读卡模块的描述信息
//	输入参数:	nInfoSize -- 接收描述信息缓冲区pDevInfo的大小,至少16个字节。
//	输出参数:	pDevInfo  -- 接收描述信息的缓冲区。
//	返回值:	OK——成功;其它——失败。
///////////////////////////////////////////////////////////////////////////
uint8 PCD_GetDevInfo(char *pDevInfo, uint8 nInfoSize);

///////////////////////////////////////////////////////////////////////////
//	函数名:	PCD_Config
//	描述:		配置读卡模块,配置后默认为ISO14443A方式。
//	输入参数:	无。
//	输出参数:	无。
//	返回值:	OK——成功;其它——失败。
///////////////////////////////////////////////////////////////////////////
uint8 PCD_Config(void);

///////////////////////////////////////////////////////////////////////////
//	函数名:	PCD_Close
//	描述:		关闭读卡芯片。
//	输入参数:	无。
//	输出参数:	无。
//	返回值:	OK——成功;其它——失败。
///////////////////////////////////////////////////////////////////////////
uint8 PCD_Close(void);

///////////////////////////////////////////////////////////////////////////
//	函数名:	PCD_LoadKey
//	描述:		装载密钥到读卡模块,并非改变Mifare1卡内扇区的密码。模块内有
//				16个密钥区(区号0~15)可供装载,每个区分密钥A和密钥B两个,
//				总共32个密钥。装载成功后,可用该密钥对Mifare1卡进行验证。若
//				要改变Mifare1卡内的密钥,可在用原密码验证通过后,直接用写块
//				数据指令,将密钥块改写。
//	输入参数:	nSectorNumber	-- 装载到的密码区编号。
//				nKeyType		-- 密钥类型,KEYA或KEYB。
//				pKey			-- 6字节密钥的缓冲区指针。
//	输出参数:	无。
//	返回值:	OK——成功;其它——失败。
///////////////////////////////////////////////////////////////////////////
uint8 PCD_LoadKey(uint8 nSectorNumber, uint8 nKeyType, const uint8 *pKey);

///////////////////////////////////////////////////////////////////////////
//	函数名:	PCD_SelectAntennaTx
//	描述:		选择天线的输出方式,可同时选择两个天线输出。
//	输入参数:	bEnableTx1	-- 是否选择天线1输出,0为不输出,非0为输出。
//				bEnableTx2	-- 是否选择天线2输出,0为不输出,非0为输出。
//	输出参数:	无。
//	返回值:	OK——成功;其它——失败。
///////////////////////////////////////////////////////////////////////////
uint8 PCD_SelectAntennaTx(uint8 bEnableTx1, uint8 bEnableTx2);

///////////////////////////////////////////////////////////////////////////
//	函数名:	PCD_CloseAntennaTx
//	描述:		关闭天线。
//	输入参数:	nCloseTime 	-- 关闭天线的时间,以ms为单位,0表示永远关闭,
//							   直到接收到下一个请求才打开。
//	输出参数:	无。
//	返回值:	OK——成功;其它——失败。
///////////////////////////////////////////////////////////////////////////
uint8 PCD_CloseAntennaTx(uint8 nCloseTime);



///////////////////////////////////////////////////////////////////////////////
// ISO14443A命令函数,PICC为Proximity IC Card的缩写,可简单理解为“IC卡”
//

///////////////////////////////////////////////////////////////////////////
//	函数名:	PICC_Request
//	描述:		请求卡片。卡进入天线后,从射频场中获取能量,从而得电复位,
//				复位后卡处于IDLE模式,用两种请求模式的任一种去请求,卡片
//				均能响应;若对某一张卡成功进行了挂起操作(Halt命令),
//				则进入了Halt模式,此时的卡只响应ALL模式的请求,除非将卡移
//				开天线感应区后再进入。
//				注意:对Mifare1卡连续进行请求操作,总是一次成功,一次失败,循环往复
//	输入参数:	nRequestMode -- 请求模式,分标准模式(REQ_STD)和全部模式(REQ_ALL)两种。
//	输出参数:	pCardType	 -- 卡片的类型指针。
//	返回值:	OK——成功;其它——失败。
///////////////////////////////////////////////////////////////////////////
uint8 PICC_Request(uint8 nRequestMode, uint16 *pCardType);

///////////////////////////////////////////////////////////////////////////
//	函数名:	PICC_Anticoll
//	描述:		防碰撞。
//	输入参数:	nSelectCode -- 选择码,可为一级(SEL_CODE1)、二级(SEL_CODE2)
//							   和三级(SEL_CODE3)。
//	输出参数:	pCardSN		-- 卡片序列号指针。
//	返回值:	OK——成功;其它——失败。

⌨️ 快捷键说明

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