非接触式CPU卡的空中传输协议的软硬件设计
射频信道为上层协议提供了一个传输数据的物理媒介,在这一层数据的单位是bit;数据链路层起着承上启下的作用,它负责在物理层提供的传输媒介上 将应用层的数据加工后发送出去;应用层则是提供符合某行业标准的APDU命令。由于应用层和数据链路层联系很紧密,故本节将二者合并为协议层加以介绍。
图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’。
图5 C-APDU 格式
R- APDU由变长的条件体和两字节长的必备尾组成,如图6所示。其中,Data表示响应中接收的数据串,SW1、SW2表示卡片执行命令的返回代码。当 SW1的高半字节为‘9’,且低半字节不为‘0’时,其含义依赖于相关应用;当SW1的高半字节为‘6’,且低半字节不为‘0’时,其含义与应用无关 [5]。
图6 R-APDU 格式
PCD 和PICC之间的半双工协议支持块格式传输,块格式由一个开始域(强制),一个信息域(可选),一个结束域(强制)组成,如图7所示。其中,方括号中的数 据为可选数据。本系统开始域中只含有强制的PCB(协议控制字节),信息域中的数据是基于某行业标准的APDU命令,结束域则是CRC校验,该校验值可由射频芯片RC632自动产生。
图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)之后立即反转它的块编号。
图8 PCB中块编号规则
关键部分代码如下:
void APDU_Handle(u8 *APDU_Data)
{
if((APDU_Data[0]&PCB_BlkNo_Mask)==Blk_Info
RC632 射频 ISO14443 MCU 无线 相关文章:
- 基于CL RC632的射频读写器的RFID系统设计(04-25)
- 一款专用射频读卡器的软件系统的设计及实现(04-01)
- WLAN 需要规划 掌握射频通信知识(01-03)
- 关于UART通信端口上射频干扰的研究(02-09)
- 基于WiMAX技术的5.8G无线专网射频系统设计(10-06)
- XRRU数字射频拉远设备助力无线网络建设(08-01)