ISO14443数据读取
一、实验目的:
1.学习和了解HF ISO14443 reader的原理。;
2.掌握传感器采集数据的使用方法;
3.熟悉传感器的操作、响应方式。
二、实验设备:
1.本实验所需仪器为13.56M标签、RFID试验箱、RFID读卡器电源。;
2.IAR编译软件;
3.串口调试工具。
三、实验内容:
了解熟悉WSN模块、HF ISO14443 reader的构成;对模块做简单的测试操作。
四、实验步骤及数据分析:
1.基本原理
交变的磁场RF,工作在13.56MHZ,LC谐振回路,共振,产生电荷;累积到2V以上,作为内部工作电压,PICC的内部数据发射出去或接受读写器的数据,PCD对接收到的信号进行解调,解码后送至网关。线圈电压的累积类似于变压器初级线圈与次级线圈的关系。
2.操作步骤
(1)打开RFID试验箱电源;
(2)连接13.56M读卡器电源并打开底板上的电源;
(3)观察读卡器上的CC2530红色LED常亮;
(4)用13.56M标签靠近读卡区域辐射面,当读取标签时,会有蜂鸣器提示音,并且在网关的LCD上会有显示当前读取的ID号和金额;
(5)按上下按键,会发现金额的变化,代表读卡成功(也代表写数据成功,变化的数据被检测到了)。
13.56M模块读卡示意图:
代码
if (events & RFID_EVT)
{
uint8 state;
static uint8 hasCardOld = FALSE;
static uint8 hasCardNow = FALSE;
hasCardOld = hasCardNow;
hasCardNow = Request(RF_CMD_REQUEST_STD);
if (hasCardOld != hasCardNow) // 返回1说明检测到卡
{
state = ReadCardNum(); // 读卡号,存储在CardNo数组里面
if (!state) // 读卡正确
{
BEEP = 1;
UART0_Format.Command = SEND;
UART0_Format.Data[0] = CardNo[0]; // d2345678
UART0_Format.Data[1] = CardNo[1];
UART0_Format.Data[2] = CardNo[2];
UART0_Format.Data[3] = CardNo[3];
MIF_READ(RevBuffer, block_numset(1)); // 读出数据块0的数据放在RevBuffer里面
UART0_Format.Data[4] = RevBuffer[2]; // 卡内块0中的第一个字节为金额高位
UART0_Format.Data[5] = RevBuffer[3]; // 卡内块0中的第二个字节为金额低位
osal_set_event(SerialApp_TaskID, SERIALAPP_SEND_EVT);
MicroWait(50000);
MicroWait(50000);
BEEP = 0;
}
else
{
CardNo[0] = CardNo[1] = CardNo[2] = CardNo[3] = 0;
}
}
osal_start_timerEx(SerialApp_TaskID, RFID_EVT, 1000);
return (events ^ RFID_EVT);
}
/****************************************************************/
/*名称: MIF_Read */
/*功能: 该函数实现读MIFARE卡块的数值*/
/*输入: buff: 缓冲区首地址*/
/* Block_Adr: 块地址*/
/*输出: FM1702_NOTAGERR: 无卡*/
/* FM1702_PARITYERR: 奇偶校验错*/
/* FM1702_CRCERR: CRC校验错*/
/* FM1702_BYTECOUNTERR: 接收字节错误*/
/* FM1702_OK: 应答正确*/
/****************************************************************/
uint8 MIF_READ(uint8 *buff, uint8 Block_Adr)
{
uint8 temp;
WriteReg(0x22, 0x0f);
buff[0] = RF_CMD_READ; // 0x30
buff[1] = Block_Adr;
temp = Command_Send(2, buff, Transceive);
if (temp == 0)
{
return (1); // 错误
}
temp = ReadReg(0x04);
if (temp == 0x10)
{
Fifo_Read(buff);
return (0); // 正确
}
return (1);
}
五、实验小结:
1、通过本次实验,我更加深刻地认识了什么是NFC:
近场通信(NFC)是一种射频识别系统(RFID),该技术可以使通信两端使用13.56-MHz的RFID频段进行短距离的快速通信。NFC技术作为基于工作频率在13.56MHz RFID 的非接触式卡标准,其是随着智能手机端移动支付的大规模应用,手机配置NFC,才使得这一技术流行开来。目前,因为NFC具有低功耗、无需电池等优良特性,所以近场通讯技术开始出现在医学的应用之中,例如利用无源标签对患者身份与病症识别、药品库存识别及控制以及一些植入式的医疗器械等。
NFC系统是属于RFID系统中的一种,典型的系统由应答器、读写器以及应用系统组成,如下图所示:
通常来说,NFC系统是由一对 NFC 设备及其之间的相互通讯组成。应答器(又可称射频标签),一般来说是要安放在识别的物体表面,标签存储着被识别物体的数据或者采集到的信息,这些信息可被读写器进行射频识别,从而读写器就从这一标签当中读出来可获得的有效的数据或采集的数据,标签是由一片NFC芯片和外接天线(能量耦合元件)构成,NFC芯片上还集成了ADC、FRAM、CPU等部分,每个射频标签在其内部都出厂存有着唯一的可识别信息,使用者可以很方便的对不同的应答器进行分类及管理。
在无源NFC系统中,因为NFC阅读器与NFC应答器间的能量与数据的传输是采用“问答”的形式进行的,所以控制这个通讯序列是需要一定的时序控制。在这种情况下,阅读器除了还要无线供能之外,还要进行通讯时序控制。
NFC系统的能量以电感耦合(电磁感应)的方式通过天线来进行无线的能量传输,其射频载波频率为 13.56MHz,采用电感耦合方式的无源射频标签的典型的工作距离为10-20cm,在此距离范围内,可以进行能量传输与数据通信,如图2所示。
详细来说,NFC两端通讯的过程如下:上位机可以控制NFC读写器,通过串口给读写器写入将要发送的信息,读写器天线将信息发射给距离内的射频标签,此时无线能量传输也在进行,在距离范围之内的标签获得能量且激活,信息通过标签端的天线处理后直接进入芯片的寄存器区,之后标签上采集或存储的信息可以由上位机写入的程序控制后,通过标签端的外围天线发射到读写器;之后读写器将从寄存器读来的信息送到上位机进行下一步的处理;上位机得到NFC读写器传输来的数据之后,进行下一步的数据处理分析并存储,这样就实现了NFC两端的相互通信。
NFC技术拥有着两种通讯模式:主动通讯模式和被动通讯模式,分别如图3 、图4所示。在3主动通讯模式中,读写器和标签端都可以从自身产生射频场,也就是可以自身供给能量,两端相互之间可以按时序传输信号。但在图4被动通讯模式中,就只有读写器端能够产生射频场,标签收到能量被激活后可以发射信息回答读取器。
主动通讯模式:
被动通讯模式: