采用曼码调制的非接触式IC卡译码软件设计
文章出处:http://www.singbon.com 作者:陈伟 李彦华 人气: 发表时间:2011年09月22日
[文章内容简介]:本文通过对采用曼码调制的ID卡进行解码为例,目的是介绍一种对曼码进行译码的方法,能过实际应用,本程序数据首读出率高,误码率极低,对读者具有一定的参考意义。
目前,随着技术的发展和应用的需求,IC卡(又称智能卡)在人们的日常生活中已经得到了广泛应用。通常,IC卡可以分为接触式IC卡和非接触式IC卡两类。接触式IC卡是卡与读卡器直接物理接触进行数据交换,部分金属电路是裸露在外面的,如手机卡、公共IC电话号等。非接触式IC卡又叫射频卡,射频与读卡器之间通过射频信号进行数据交换,不需物理接触,电路是封装在内部的,如公交车的收费卡等。非接触式IC卡与接触式IC卡相比,只有可靠性高,使用方便,不怕雨水、静电以及没有接触划伤等优点,因此,得到了更广泛的应用。这种非接触式IC卡采用的技术称为RFID技术。
射频卡与读卡器之间的射频信号调制方式常见的有FSK(调频)、PSK(调相)、BIPH(双相)、Manchester(曼彻斯特)。其中,曼彻斯特调制方式一般用在低频,低成本的产品中,虽然在国外采用曼码调制的IC 卡已不常用,但由于其价格低廉的优势,目前在我国采用此种调制方式的低端IC卡还具有广泛的应用。在实际应用中,使用者有时会遇到对曼彻斯特编码进行译码的问题,鉴于此,本文介绍了一种译码方法,以供读者作为参考。
1 无线射频识别(RFID)技术概述
1.1 RFID系统的基本工作原理
无线射频识别(RFID,radio frequency identification)技术是一种非接触式的自动识别技术,基本原理是利用空间电磁感应或者电磁传播来进行通信,以达到自动识别目标对象并获取相关数据的目的。
RFID系统由射频卡和射频卡读写器两部分组成,如图1所示,射频卡与读写器之间通过耦合元件实现射频信号的空间(无接触)耦合,在耦合通道内,根据时序关系,实现能量传递和数据交换。
1.2 射频卡读写器
在实际应用硬件电路中,读写器一般由天线、基站芯片、MCU组成。其中,基站芯片主要实现高频接口模块的功能,用于完成数据的调制、发射和射频的接收以及数据的解调任务。
下面简单介绍一种射频卡基站芯片U2270B,U2270B是一个能对IC卡进行读写操作的射频卡基站芯片,主要特点有:
振荡器能产生100kHz~150kHz的载波频率,并可通过外接电阻进行精确调整,其典型应用频率为125kHz;
适用于曼彻斯特编码和双相位编码;
带有微处理器接口,可与单片机直接连接;
125kHz时的典型读写距离为15mm。
在实际应用中,当射频卡进入到由读写器天线产生的射频场内时,由于电磁感应的作用而得到触发,从射频卡发出的负载调制信号会在基站天线上产生微弱的调幅,这样,基站芯片即可回收射频卡调制数据流。应当说明,当返回的射频卡调制数据流采用的是曼彻斯特编码形式时,U2270B通过内部的一系列处理,将与MCU接口兼容的标准曼彻斯特编码信号输出给MCU,U2270B不能完成曼彻斯特编码的解调, 解调工作必须由MCU软件来完成,这也是本文的意义所在。
1.3 射频卡
射频卡有很多种分类方法,其中按芯片可分为三类:只读卡,读写卡和CPU卡。
下面介绍一种只读卡(又称为ID卡)EM4100,它靠读写器感应供电并读出存储在芯片EEPROM中的唯一卡号,卡号在封装前一次写入,封卡后不能更改。
EM4100ID卡的主要特点:
载波频率RF为125kHz;
感应距离为2~15cm;
数据存储容量共64位,包括制造商、发行版本号和用户代码;
数据的传送速率有RF/64bit/s、RF/32bit/s和RF/16bit/s三种。
卡内数据格式:总共64位,其中包括9个起始位,40个数据位(前8位为版本或制造商信息,后32位为用户信息),10个行校验位,4个列校验位,1个结束停止位。
在读写器工作状态下,当ID卡进入读写器产生的射频场内时,依次将卡内64位数据循环输出,直到ID卡离开读写器失电为止。
2 曼彻斯特译码软件设计
假如对EM4100 ID卡进行解码,载波频率RF采用为125kHz,数据传送速率采用RF/64,那么传送一位数据所需要的时钟周期T=512μs。首先,由于曼彻斯特编码包含了同步时钟信号,第一步必须提取出同步时钟信号,并在提取出同步时钟信号的同时,将会得到第一个数据。之后,就可进行数据的采集。在数据采集时,先采集到起始位9个1,再采集后面的数据。然后进行奇偶校验和对数据的一些处理。程序的流程图如图2所示。
结合图3来说明一下提取同步时钟信号和取得第一个数据的方法。
曼彻斯特编码是在位周期中间产生跳变,所以可以通过检测曼码的上升沿或者下降沿来提取出同步时钟信号,具体方法为:在程序检测出第一个上升沿(或下降沿)之间,如果检测出t=T’(T’为传送一位数据所需要的时间,理想情况下为位时钟周期T)时间的低电平(或高电平),那么此上升沿(或下降沿)必发生在位时钟周期的中间,在取得同步时钟信号的同时,将得第一个数据位1(或0),将当前收到的数据位存放入微控制器的存储器中,并同时将此值赋给一个状态位con_receive=1(或0),此状态位在检测下一个数据时会用到。以图3为例(本例是通过上升沿来提取同步时钟信号),在b上升沿之前,检测出有t=T’时间的低电平,那么b上升沿必产生在位时钟周期中间,并同时取得第一个数据1,将数据1存入寄存器,并赋给状态位con_receive=1,用于下一个数据的检测。
2.1 数据采集
在提取出同步时钟信号后,就可以通过检测出两个上升沿(或下降沿)的时间间隔来提取数据了。两个上升沿(或下降沿)的时间间隔总共有t=T’,t=1.5T’,t=2T’三种情况。
如果检测到两个上升沿之间的间隔t=T’时,则收到一个与前一个逻辑值相同的数据,例如图3,在b上升沿之后t=T’时间的的c处检测到上升沿,得到与前一个逻辑值con_receive相同的数据1。将此数据存放入存储器中,并同时将当前逻辑值1赋给状态位con_receive;如果检测到两个上升沿之间的时间间隔t=1.5T’时,两种情况:当前一个数据值con_receive为1时,得到两个数据00,并将逻辑值0赋给con_receive;当前一个数据为0时,得到一个数据1,并将逻辑值1赋给con_receive。如图3,在c上升沿之后t=1.5T’时间的d处检测到上升沿,由于在c上升沿得到的逻辑值为1,则得到数据00,con_receive的值也相应变为0;又经过T’时间后到达e上升沿,得到与前一个逻辑值相同的数据0;又经过t=1.5T’时间到达f上升沿,由于前一个数据的逻辑值为0,则得到数据1,con_receive也相应变为1;如果检测到两个上升沿之间的时间间隔t=2T’时,得到两个数据01,并将逻辑值1赋给con_receive。如图3,在f上升沿之后的t=2T’时间的g处检测到上升沿,得到两个数据01;
如果检测到两个上升沿之间的时间间隔t不等于T’、1.5T’、2T’中的任何一个,则采集数据出错。
在采集数据过程中,由于一些干扰或者其他因素,采集数据错误是无法避免的,出错处理部分可由读者自己决定作如何处理。比如:可以选择为重新开始提取同步时钟信号,重新译码,如果在连续的重新译码一定的次数之后,还没有得到64位数据则报警等。
2.2 数据校验及数据处理
为了便于对读出的数据进行奇偶机校验,将起始位9个1之后的55个数据按每5位作为一个字节进行存放,在数据全部读出后,根据ID卡的数据结构,对数据进行奇偶校验。奇偶校验正确之后,可以对这些原始数据做进一步的处理以作实验应用。
2.3 其他一些说明
在理想状态下,传送一位数据的时间T’应该等于位时钟周期T,由于射频场信号的强弱和外界的影响,T’不是一个稳定的值,因此在实际应用中,T’是一个取值范围。例如:例如:当位时钟周期T=512μs,理想状态下,T’=T=512μs,但实际中T’选取一个范围,比如可以取400μs<T’<580μs,640μs<1.5T’<820μs,870μs<2T’<1100μs(这些取值范围并不是固定的,也没有太严格的要求。在实际应用中,最好对所使用的ID卡进行测量一下,然后参考测量的结果来选取。
有些ID卡曼彻斯特编码是位数据1对应着电平下位,位数据0对应着电平上跳,当对这种卡进行解码时,只要把程序中检测上升沿变为检测下降沿、检测下降沿变为检测上升沿即可。
检测上升沿(或下降沿)可以采用中断法或者扫描法。当采用扫描法时,由于在现实工作中,数据信号会受到调制、解调、噪声各种效应的影响,其上升沿和下降沿存在抖动,可以采用键盘消除抖动的办法消除抖动的影响。
如果奇偶校验连续NG一定次数之后,还没有得到正确的64位数据,则可以采用报警或者其它办法处理。
本文关键词:非接触式IC卡,曼彻斯特编码,曼码调制,,接触式IC卡,曼彻斯特编码,曼码调制,I,触式IC卡,曼彻斯特编码,曼码调制,IC,式IC卡,曼彻斯特编码,曼码调制,IC卡,IC卡,曼彻斯特编码,曼码调制,IC卡,,C卡,曼彻斯特编码,曼码调制,IC卡,R,卡,曼彻斯特编码,曼码调制,IC卡,RF,,曼彻斯特编码,曼码调制,IC卡,RFI,曼彻斯特编码,曼码调制,IC卡,RFID
上一篇:提高非接触有值IC卡操作的可靠性研究[ 09-22 ]
下一篇:智能卡卡基材料概述[ 09-23 ]