sheafh

RFID:读卡器软件设计

0
阅读(2033)

读卡器软件设计是使用PIC 汇编程序来完成对MIF A R E 卡的操作,包括:主控程序、PIC 单片机初始化、读卡器核心模块R C500 初始化、R C500 读写子程序、防冲突子程序、数据块操作子程序等[4 ]。


PIC 单片机和MIFA R E 卡进行通信是通过天线发送协议ISO14443A 所规定的指令代码和数据格式来实现的。例如向卡片发送数据是通过向读卡器核心模块RC500 内的FIFO Data 寄存器写入待发送数据,Com mand 寄存器放入命令Transceive 的代码0x1e ,RC500 就会将数据发送出去,卡中返回数据则存放在FIFO Data 寄存器中,由PIC 单片机进行操作。读卡器发Request 命令给所有在天线场范围内的IC 卡,通过防冲突循环,得到一张卡的序列号,选择此卡进行鉴别,通过后对存储器进行操作,通信流程如图2 所示[5 ]。典型交易时间不超过100ms。

               

读卡器对IC 卡的操作流程如下:

1 )复位应答(answer to request ) MIFA R E 射频卡的通讯协议和通讯波特率是定义好的,当有卡片进入读卡器的操作范围时,读卡器以特定的协议与它通讯,以确定该卡是否为MIFA R E 射频卡,即验证卡片类型;

2 )防冲突机制(anticollision loop ) 当有多张卡进入读卡器天线感应范围时,防冲突机制将启动,会从多张卡中选择一张卡进行操作,未选中的则处于空闲模式等待下一次选卡,该过程会返回被选卡的序列号。非接触式IC 卡系统为了实现防冲突机制,采用位结构防冲突循环来解决冲突问题,并专门设计了防冲突指令。标 准指令结构包括7个字节长度数据,分为2 部分:(1 )读卡器传输给IC卡的数据为第1 部分,包括1 个字节的操作码SEL ,1 个字节的有效位个数N V B 和卡序列号UID ,第1部分数据最小长度为16 位,最大长度为55 位;(2 )IC 卡返回给读卡器的数据为第2 部分,是IC 卡返回的卡序列号。如图3 所示。

      

指令的工作流程是:

(1 )读卡器分配防冲突命令SEL 的代码为93 ,有效位个数N VB 代码为20(表示读卡器不发送卡序列号,并强制所有有效的IC 卡返回各自完整的卡序列号)。读卡器发送93 和20 ,所有有效的IC 卡返回各自完整的卡序列号。如果有多于一张的IC 卡响应,冲突就会出现;

(2 )读卡器应确认发生冲突的第1 位的位置,读卡器分配有效位个数,其恒等于冲突前读卡器接收到的卡序列号位个数加1。读卡器发送操作码93、有效位个数、冲突前接收到的有效卡序列号和一 位“1”。只有与读卡器发送序列号内容相同的IC卡才返回卡序列号剩余部分;

(3 )如果继续有冲突出现,重复步骤(2 ),最大循环次数为32。如果没有冲突出现,读卡器分配有效位个数N V B 代码为70(表示读卡器发送完整的卡序列号),和这40 位卡序列号匹配的IC卡返回选择认可SA K ,IC 卡从准备就绪状态进入激活状态。

3 ) 选择卡片(select tag ) 选择被选中卡的序列号,并同时返回卡的容量代码。

4 ) 3 次互相确认(3 pass authentication ) 选定要处理的卡片之后,读卡器就确定要访问的扇区号,并对该扇区密码进行密码校验,在3 次相互认证之后就可以通过加密流进行通讯。在选择另一扇区时,则必须进行另一扇区密码校验。

5 ) 对数据块的操作 包括读块、写块、加值、减值操作、存储、传输、中止。存储是将块中的内容存到数据寄存器中;传输则是将数据寄存器中的内容写入块中;中止是将卡置于暂停工 作状态。程序设计中应注意的问题:1 )IC 卡向读卡器发送数据帧是低位在前,高位在后,因此读卡器核心模块R C500 内的FIFO Data 寄存器先接收到的是低位数据,后接收到的是高位数据;2 )要满足相邻2 个R EQ A 命令的起始位之间的最小时间要求,即请求保护时间值为7 000/ f ,射频场的频率f = 13 .56 M Hz ;3 )在读卡器寻卡过程中,可间断地打开和关闭射频输出,或通过设置R C500 内Control 寄存器的StandBy 位,进入软件掉电模式,这样可降低读卡器功耗;4 )通过添加监视定时器W DT 和软件陷阱来防止程序失控,可提高系统抗干扰能力。