原创 RFID:读卡器软件设计

2010-12-21 13:50 2987 7 8 分类: 通信

读卡器软件设计是使用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。


                ae24b247-22c9-4ed9-b9ec-ee801fb8be48.gif


读卡器对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 所示。


       a8e540aa-63d8-4899-a8cb-a39ca8f64cf1.gif


指令的工作流程是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 和软件陷阱来防止程序失控,可提高系统抗干扰能力。

PARTNER CONTENT

文章评论1条评论)

登录后参与讨论

用户377235 2015-8-15 13:13

你好,您是专业做RFID的软件的吗?请与我联系一下QQ624723068
相关推荐阅读
用户1583963 2012-09-17 10:20
心得:画PCB制图心得
1.公司或个人的logo不要忘记; 2.电源和地尽量做到短;(PS:注意地与电源最好在走线的过程中注意贴着走,减小两者之间的面积,减小两者的干扰) 3.引出各测试管脚,方便后面对信号进行观...
用户1583963 2011-08-12 16:36
板级:PCB敷铜经验交流
所谓覆铜,就是将PCB上闲置的空间作为基准面,然后用固体铜填充,这些铜区又称为灌铜。敷铜的意义在于,减小地线阻抗,提高抗干扰能力;降低压降,提高电源效率;还有,与地线相连,减小环路面积。如果PCB的...
用户1583963 2011-08-11 15:05
基础知识:Altium 快捷键
1. PCB设计快捷键(单次按键) 单次按键是指按下该键并放开。 1-01 * 在PCB电气层之间切换(小键盘上的*)。在交互布线的过程中,按此键则换层并自动添加过孔。这很常用。 1-02 Tab键...
用户1583963 2011-06-28 14:47
基础知识:三极管放大电路分析
三极管是电流放大器件,有三个极,分别叫做集电极C,基极B,发射极E。分成NPN和PNP两种。我们仅以NPN三极管的共发射极放大电路为例来说明一下三极管放大电路的基本原理。 下面的分析仅对于NP...
用户1583963 2011-06-28 11:36
板级:整流电路分析
电力网供给用户的是交流电,而各种无线电装置需要用直流电。整流,就是把交流电变为直流电的过程。利用具有单向导电特性的器件,可以把方向和大小交变的电流变换为直流电。下面介绍利用晶体二极管组成的各种整流电路...
用户1583963 2011-06-28 11:13
基础知识:交流电与直流电区别
把一节电池的头(正极)对着另一节的尾(负极)装在手电筒中,手电筒就亮了:如果倒过来,头对头或尾对尾,手电筒就不亮。这是因为电池所产生的电流总是朝一个方向流动,所以叫做直流电。通过输电线或电缆送入家...
我要评论
1
7
关闭 站长推荐上一条 /3 下一条