您当前的位置:五五电子网电子知识通信技术射频技术-RFID非接触式CPU卡的空中传输协议的软硬件设计分析 正文
非接触式CPU卡的空中传输协议的软硬件设计分析

非接触式CPU卡的空中传输协议的软硬件设计分析

点击数:7581 次   录入时间:03-04 11:39:27   整理:http://www.55dianzi.com   射频技术-RFID

     

    图7 块格式



www.55dianzi.com

    协议控制字节PCB用于传送控制数据传输所需要的信息,它的设计实现在本程序中起着至关重要的作用。根据PCB编码的不同,协议定义了块的三种基本类型:用于为应用层的使用传送信息的信息块(I-块);用于传送确认或不确认的接收准备块(R-块);用于在 PCD 和 PICC 间交换控制信息的管理块(S-块)。PCB的编码依赖于它的类型,具体可参看协议ISO14443-4。需要详述的是这样一个关键点:I-块和R-块的PCB中最低位表示块号,它遵循如图8所示的特定的编码规则。具体描述如下:

    (1) PCD规则:对于当前被激活的PICC,PCD块编号应初始化为0;当接收到一个块编号与当前块编号相等的正确的I块或正确的R-块(ACK)时,PCD在发送任意一个块之前,应反转当前的PICC块编号。

    (2) PICC规则:在激活时,PICC块编号应初始化为1;当接收到一个I-块,PICC应在接收I-块之后立即反转它的块编号;当接收到一个块编号不等于目前的PICC的块编号的R-块(ACK)时,PICC应在接收R-块(ACK)之后立即反转它的块编号。

     

图8 PCB中块编号规则

     

    图8 PCB中块编号规则

    关键部分代码如下:

    void APDU_Handle(u8 *APDU_Data)

    {

    if((APDU_Data[0]&PCB_BlkNo_Mask)==Blk_Info.PCB_BlkNo)

    {Blk_Info.PCB_BlkNo ^= PCB_BlkNo_Mask;} //反转块号

    else { return; } //块号不对!

    switch(APDU_Data[0]&PCB_Type_Mask)

    {

    case 0x00: //收到I块

    {

    if(!(APDU_Data[0]&I_PCB_Link_Mask))

    { }//PICC发送的最后一块数据,后续无链接

    else

    { }//PICC分段发送响应数据,后续有链接。PCD需要发送R-块确认

    break;

    }

    case 0x80: //收到R块

    {

    //说明PCD分段发送请求数据,需通过链接位。

    break;

    }

    case 0xC0: //收到S块

    {

    if((APDU_Data[0]&0x30)==0x30) //PICC请求等待时间扩展

    {

    //以后的等待超时时间(Timeout)需要随之改变!

    }

    break;

    }

    default:

    { break; }

    }

    }

    4 测试

    我们选取复旦微电子的非接触式CPU卡做测试。点击“寻找卡片”,依次执行图3中的寻卡,防冲突,选卡等三个步骤,获得卡片序列号和卡片类型;点击“RATS”,发送选择应答请求来激活CPU模式,PICC返回ATS响应“107880B0022090000000000026BAB4A2”,具体含义如表1所示;发送表2所示的取随机数指令,PICC返回表3所示的四字节随机数;发送表4所示的选择MF主文件命令,PICC返回表5所示的嵌套TLV格式的文件控制信息(FCI)。测试效果图如图9所示。

     

图9 上位机测试效果图

     

图9 上位机测试效果图

     

    图9 上位机测试效果图

    结语

    本文硬件电路采用ARM内核的32位微处理器芯片STM32F103RBT6和NXP公司的RC632来完成,软件开发则从物理层和协议层两个层面对PCD和PICC之间的无线射频通信进行设计实现。经实际测试证明,该读写设备工作稳定,抗干扰能力强,读卡准确且操作距离大于5cm。由此可见,对空中传输协议进行了较好的实现。另外,还可以进行扩展改进,如增加GPRS模块再结合相关的非接触式IC卡支付规范,便可实现方便快捷的移动支付。



上一页  [1] [2] 


本文关键字:暂无联系方式射频技术-RFID通信技术 - 射频技术-RFID