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

发布者:Asawen最新更新时间:2016-08-16 来源: eefocus关键字:RC632  射频  ISO14443  MCU  无线 手机看文章 扫描二维码
随时随地手机看文章
普通的逻辑加密卡,如Mifare1卡(即M1卡),由非易失性存储器和硬件加密逻辑组成,通过校验密码的方式来保护卡内的数据,其具有一定的安全性,但 这只是低层次的安全保护,无法防范恶意性的攻击,因此无法满足更高的安全性和更复杂的多应用的需求。而CPU卡内部具有微处理器芯片,且固化有COS操作 系统,可执行严谨的加密运算,安全性极高,灵活性强,且存储容量大。来看一组金融领域的数据,截至2014年6月底,全国金融IC卡累计发行超过8.7亿 张,其中上半年金融IC卡新增2.84亿张,占新增银行 卡总量的82%,商户POS和ATM实现全面受理,行业应用不断涌新。随着应用环境的日渐成熟,各商业银行将于年底前逐步关闭金融IC卡降级交易,并将在 2015年后,发行纯芯片卡。可以看到,原本的磁条卡时代正在缓缓落幕,银行 卡“芯”时代已成大势所趋,与此同时,相应的终端机具需求量必将剧增,这给企业带来了巨大的商业契机。

本文在研究了ISO/IEC14443标准以及相关的金融标准基础上,基于RC632射频收发芯片,对非接触式CPU卡和终端机具之间通信所采用的空中传输协议进行了设计与实现,并进行有关测试,给出测试结果。

1 ISO14443协议简介

ISO14443协议是13.56MHz下非接触式IC卡的国际标准协议,由以下4部分组成:(1)物理特性:规定了接近式IC卡(PICC) 的物理特性;(2)射频功率和信号接口:规定了在接近式耦合设备(PCD)和接近式IC卡(PICC)之间提供功率和双向通信的场的性质与特征;(3)初 始化和防冲突:描述了PICC进入PCD工作场的轮询,规定了在PCD和PICC之间通信的初始阶段所使用的字节格式、帧格式和帧时序,以及在冲突发生的 情况下如何从多张卡片中选出一张(防冲突)的方法;(4)传输协议:规定了非接触式应用中具有特色的半双工传输协议。随着应用场景的不断多元化,尤其是在 快速消费领域,由于卡片和终端机具的需求量与日俱增,ISO14443协议应用也越来越广泛,像国内很多行业标准,如中国金融集成电路(IC)卡规范等, 都是在它的基础上修订的。

2 系统硬件部分

2.1 MCU控制电路

本 系统中MCU芯片我们选取STM32F103RBT6,它是基于Cortex-M3 ARM内核的高性能32位处理器,具有128KB Flash、20 KB SRAM,主频可达72 MHz,且具有功耗低、价格便宜、接口资源丰富等特点;与传统的8位单片机相比,32位的高性能ARM处理器拥有更高的通信效率、更强的控制功能,更加方 便后期的系统扩展。

2.2 射频收发电路

射频收发电路是本系统的核心部分,由RC632应用电路和天线组成。RC632是 NXP推出的一款多协议非接触式读写芯片,集成了在13.56MHz下所有类型的被动非接触式通信方式和协议,也就是说它支持ISO14443(包括 Type A和Type B)和ISO15693(包括I·CODE1)两种国际标准。它的发送器电路设计成具有非常低的阻抗,只需要很少的用于匹配和滤波的无源器件就可以直接驱 动天线,操作卡片的距离可达10cm,其引脚TX1和TX2上传递的信号是由包络信号调制的13.56MHz的载波信号,这两个信号可通过寄存器 TxControl进行控制;它的接收器设计有一个正交调制电路,该电路从输入到RX引脚的13.56MHz的ASK调制信号中解析出副载波信号,该副载 波信号经过放大滤波,然后输入到相关性电路,对相关性结果数字化后输入到数字电路。方便的并行接口可直接连接到任何8位微处理器,这给读写器及终端的设计 带来了极大的灵活性;另外,RC632支持通过SPI方式连接到微处理器。

本系统中我们采用SPI的方式将RC632连接到 MCU,其原理图如图1所示。图中的MOSI_rf,MISO_rf,SCK_rf,NSS_rf四个脚需连接到MCU的SPI外设,C16f,C17f 两端的GND_rf网络是需要绘制天线线圈(天线的设计不在本文范围内)的。硬件焊接调试完成后,其实物图如图2所示。

 

非接触式CPU卡的空中传输协议的软硬件设计
图1 射频收发电路

非接触式CPU卡的空中传输协议的软硬件设计
图2 实物图

3 系统软件部分

与M1卡一样,非接触式CPU卡(以后称PICC)符合ISO14443-1、- 2、-3标准,不同的是它通过RATS命令可进入到CPU模式,以后都按照ISO14443-4的块传输协议与读写设备(以后称PCD)进行信息交互。 PCD访问PICC的工作流程如图3所示,激活CPU卡的过程总共包括寻卡,防冲突,寻卡,RATS四步,其中RATS是在判断选卡命令的响应支持 ISO14443-4标准的情况下发送的,以便进入CPU模式。

 

非接触式CPU卡的空中传输协议的软硬件设计
图3 读写设备访问卡片工作流程

根 据OSI参考模型分层原理设计的思想,对PCD和PICC之间的半双工块传输协议进行概况,可抽象出三层,如图4所示。物理层处在该层次结构的最底层,它 利用空中射频信道为上层协议提供了一个传输数据的物理媒介,在这一层数据的单位是bit;数据链路层起着承上启下的作用,它负责在物理层提供的传输媒介上 将应用层的数据加工后发送出去;应用层则是提供符合某行业标准的APDU命令。由于应用层和数据链路层联系很紧密,故本节将二者合并为协议层加以介绍。

 

非接触式CPU卡的空中传输协议的软硬件设计
图4 半双工传输协议软件设计的层次划分

3.1 物理层设计

物 理层的实现在双方通信过程中起着“桥梁”的作用,本系统中“担此重任”的角色就是射频收发芯片RC632。在程序初始化时,配置RC632的相关寄存器, 使芯片工作在ISO14443 Type A模式;而针对不同的传输要求,需及时调整相关寄存器的值,使PCD和PICC之间的底层“对话”按照规定的比特流进行,比如通信采用短帧还是标准帧可通 过调整BitFraming寄存器,有无奇偶校验或者CRC校验可通过调整ChannelRedundancy寄存器。RC632的状态由可执行特定命令 集的内部状态机决定,这些命令通过将相应的命令码写入到Command寄存器来启动。本系统中主要用到了Transceive指令,其指令码是0x1E, 该指令从FIFO缓冲区中取出数据并送到发送器发送出去,接收器在间隔约定时间后自动启动,所有从RF接口接收到的数据再通过FIFO缓冲区返回;而处理 一个命令所需要的变量或者数据则要通过FIFOData寄存器写入到FIFO缓冲区,然后进行交换。概况起来,RC632的射频收发过程如下:在Idle 命令有效时,将所有要发送到卡片的数据通过FIFOData寄存器写入到FIFO,之后将Transceive指令码写入到Command寄存器来启动收 发过程,然后再通过FIFOData寄存器从FIFO中取出返回的数据。

3.2 协议层设计

要运行一个应用,还需要在终端上实现一个附加的应用协议层,这个协议层包括向卡片发送命令、卡片内处理命令和返回IC卡处理响应等步骤。应用层发出的命令报文和卡片返回到应用层的响应报文统称为应用协议数据单元(APDU);响应是和命令相对应的,通常被称为APDU命令-响应对;在一个APDU命令-响应对中,命令报文(C-APDU)或响应报文(R-APDU)都可能包含数据[4]。

C- APDU由4字节长的必备头和变长的条件体构成,如图5所示。其中,CLA表示指令类型,INS表示指令码,P1表示指令参数1,P2表示指令参数 2,Lc表示命令数据域中发送的数据字节数,Data表示命令发送的数据串,Le表示期望返回的数据字节数。当Le存在且值为0时,表示需要最大字节数 (256字节);在命令报文需要时,Le可始终被设为‘00’。

非接触式CPU卡的空中传输协议的软硬件设计
图5 C-APDU 格式

R- APDU由变长的条件体和两字节长的必备尾组成,如图6所示。其中,Data表示响应中接收的数据串,SW1、SW2表示卡片执行命令的返回代码。当 SW1的高半字节为‘9’,且低半字节不为‘0’时,其含义依赖于相关应用;当SW1的高半字节为‘6’,且低半字节不为‘0’时,其含义与应用无关 [5]。

非接触式CPU卡的空中传输协议的软硬件设计
图6 R-APDU 格式

PCD 和PICC之间的半双工协议支持块格式传输,块格式由一个开始域(强制),一个信息域(可选),一个结束域(强制)组成,如图7所示。其中,方括号中的数 据为可选数据。本系统开始域中只含有强制的PCB(协议控制字节),信息域中的数据是基于某行业标准的APDU命令,结束域则是CRC校验,该校验值可由射频芯片RC632自动产生。

非接触式CPU卡的空中传输协议的软硬件设计
图7 块格式

协 议控制字节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)之后立即反转它的块编号。

非接触式CPU卡的空中传输协议的软硬件设计
图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所示。

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

非接触式CPU卡的空中传输协议的软硬件设计
图9 上位机测试效果图

结语

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

关键字:RC632  射频  ISO14443  MCU  无线 引用地址:非接触式CPU卡的空中传输协议的软硬件设计

上一篇:STM32外部中断之二
下一篇:基于ARM7软中断程序的设计

推荐阅读最新更新时间:2024-03-16 15:05

AVR单片机atmega16串口中断接收和发送程序
// Target : M16 // Crystal: 8.0000Mhz // AVR单片机 atmega16串口中断接收和发送程序。接收到字符后再发送出去 #include iom16v.h #include macros.h unsigned char com_in_buf ; void port_init(void) { PORTA = 0xFF; DDRA = 0xFF; PORTB = 0x00; DDRB = 0x00; PORTC = 0x00; DDRC = 0x00; PORTD = 0x00; DDRD = 0x00; } //UART0 initialize // desired ba
[单片机]
单片机步进电机转速控制程序(速度LED显示)
单片机源程序如下: //数码管位 高位-----低位 //四个按键控制步进电机:正转,反转,加1,减1 //上电时电机启动,数码管上显示速度最小档1,加减档位均能通过数码管显示出来,电机采用单双八拍方式 //电机转速一共10档,通过按键调节转速 //电机正转时最高位数码管显示0,反转时显示1 #include reg51.h #define uchar unsigned char #define uint unsigned int #define led P0//数码管段选 #define haha P2 sbit s1 = P1^0; sbit s2 = P1^1; sbit s3 = P3^0; sbit s4 = P
[单片机]
<font color='red'>单片机</font>步进电机转速控制程序(速度LED显示)
车身控制模块单片机和本地互连网的作用
  随着应用的不断扩展,今天和未来的单片机普及和车辆网络正在继续。单片机是车辆内各种电子控制模块的“大脑”,而网络则是“系统互连”。本地互连网络(LIN)是业界第一个提出车内ClassA开放多路复用协议标准。它定义了一个支持车辆内分布式车身控制电子系统的低成本的串行通信系统。LIN补充了由CAN引导的汽车多路复用网络的现有产品线。工业分析家指出,据估计到2010年每辆车将平均拥有20个LIN节点。车身控制应用代表了车辆中一个重要的领域,LIN有利于支持低成本子网络的简化,而不需要额外的带宽或产生复杂性。   通用的单片机,例如微芯科技的FlashPIC®单片机,其独特的程序存储器和外设的组合,非常适用于那些支持CAN和LIN标准
[单片机]
8051单片机和STM32单片机的编程环境对比
单片机编程是一门实战性的技术,程序要在单片机平台上跑起来才能看到效果、才能积累编程经验。在学校学习单片机课程时,可能会感觉到一直有一种脱节的感觉,因为一直没有用武之地。其实学习单片机很简单,第一步就是搞清楚编程环境。 入门单片机时,我们常用51型8051单片机和STM32单片机。这两种单片机比较典型,因为学校里单片机课程是基于51单片机的,而STM32的单片机则具有较多的学习资料。下面就这两种单片机介绍一下编程环境。 1、单片机常用的编程环境 比较流行的单片机环境有keil和IAR,这两种环境可以覆盖市面上90%的单片机型号,而且都提供了函数库。根据单片机位数不同,这两个编程环境也有不同的版本。 1.1 Keil的常用版本
[单片机]
8051<font color='red'>单片机</font>和STM32<font color='red'>单片机</font>的编程环境对比
基于ARM Linux的无线音视频对讲系统
  随着数字化和网络化时代的到来,尤其是宽带无线网络的发展,为音视频这样大数据量传输业务在无线网络上的应用提供了契机。同时由于音视频独特的感官特性,使其相关的应用需求也变得越来越迫切。无线多媒体是多媒体和移动通信这两个领域的技术相互融合的产物,成为当今通信领域的一个热点。鉴于Linux内核的开源性,采用其作为操作系统,从而使整个系统具有更好的实时性和稳定性。整个系统以ARM11为核心处理器、采用新一代视频编解码标准H.264进行编译码,并通过无线网络传输音视频。它充分利用S3C6410微处理器内部集成的多媒体编解码器(Multi-Formatvideo Codec,MFC),有效提高了系统的性价比。整个系统为无线多媒体音视频的传输
[单片机]
基于ARM Linux的<font color='red'>无线</font>音视频对讲系统
英特尔推出首款支持WiFi 6E无线网卡AX210
无线行业对 WiFi 6E 的需求迅速增加,促使英特尔推出了首款支持 WiFi 6E 的无线网卡,称为 Intel Wi-Fi 6E AX210。据说该无线网卡基于 IEEE 802.11ax 标准。 WiFi 6E 是该模块中的最新芯片,由于其 6GHz 频段优于 2.4GHz 和 5GHz Wi-Fi 频段,因此受到了极大的欢迎。此次升级将极大地提高带宽和速度。 WiFi 采用 M.2 2230 规格,同时支持 802.11ac 和 802.11ax(Wi-Fi 6 和 Wi-Fi 6E)协议。M.2 将适合带有 M.2 WiFi 模块的笔记本电脑或台式机主板。新的无线网卡将支持高带宽和低延迟的应用,例如高清视频流,虚
[手机便携]
8051单片机教程第五课:延时程序分析
上一次课中,我们已经知道,程序中的符号R7、R6是代表了一个个的RAM单元,是用来放一些数据的,下面我们再来看一下其它符号的含义。 DELAY:MOVR7,#250;(6) D1:MOVR6,#250;(7) D2:DJNZR6,D2;(8) DJNZR7,D1;(9) RET;(10) MOV:这是一条指令,意思是传递数据。说到传递,我们都很清楚,传东西要从一个人的手上传到另一个人的手上,也就是说要有一个接受者,一个传递者和一样东西。从指令MOVR7,#250中来分析,R7是一个接受者,250是被传递的数,传递者在这条指令中被省略了(注意:并不是每一条传递指令都会省的,事实上大部份数据传递指令都会有传递者
[单片机]
8051<font color='red'>单片机</font>教程第五课:延时程序分析
基于Atmega16单片机的智能空调遥控器
  1 引言   近年来,计算机技术、现代通信技术和自动控制技术高速发展,智能化家居系统也随着新技术的发展进入了千家万户,家居系统中如空调、电视、照明系统等,都使用遥控器进行控制。红外线遥控器由于具有结构简单、体积小、功耗低、功能强、成本低等特点,已成为使用最广泛的一种遥控方式。然而,由于各种红外设备采用的技术标准与协议大不相同,使得各种设备的遥控器并不能兼容,给用户和消费者带来了诸多不便。   目前,市场上已有的万能遥控器多是内置了多种品牌的红外控制指令,对内置品牌以外的红外设备则无能为力。为此,本文设计了一款针对空调设备的智能学习型红外遥控器,采用记录脉冲宽度的方法,成功实现了对多种红外空调遥控信号的学习与再现,真正实现了
[单片机]
基于Atmega16<font color='red'>单片机</font>的智能空调遥控器
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved