H4001非接触式IC卡读卡程序设计
扫描二维码
随时随地手机看文章
【摘 要】 介绍了基于P4095芯片的一种非接触式IC卡(H4001)的读卡机制,并提出了一种曼彻斯特码的解码方法。
关键词:非接触式IC卡,曼彻斯特码,解码
IC卡(Integrated Circuit Card)经过20多年的发展,已广泛应用于金融、电信、保险、商业、国防、公共事业等领域。IC卡按外部接口设备的连接方式可分为接触式IC卡和非接触式IC卡(又称射频卡)两类。接触式IC卡,就是IC卡与外界进行数据通讯时,芯片的电极触点必须与IC卡读写设备直接连接;非接触式IC卡在使用时则无须与IC卡读写器设备直接连接,而是通过无线电波或电磁感应的方式实现与IC卡读写设备的数据通讯。在刷卡速度要求高,用卡环境恶劣,污染严重等环境下,非接触式IC卡有着它特有的优势。
我们利用EM公司(EM MICROELECTRONICMARIN SA,2074 MARIN-Switzerland)生产的P4095芯片,制作了IC卡读头,并在此基础上,编写了EM公司H4001非接触式IC卡的读卡程序。
1 工作原理
读卡的工作原理如图1所示。
当IC卡(H4001)靠近读卡器时,图1中的两个回路在125kHz时产生谐振。IC卡从中获取能量,连续地向外发送信号。P4095接收信号,送单片机分析处理该卡的信息。
2 P4095芯片介绍
该芯片集成相同步逻辑系统,可以得到与线圈谐振频率相同的载波频率;不需外部晶振;载波频率为100到150kHz;支持多种IC卡传输协议,如H400X,P4150,P4069等;封装形式为SO16或PSOP216。用P4095制作的射频卡读头可完成下列功能:(1)载波频率驱动线圈。(2)对可写卡磁场的调幅调制。(3)对线圈上由卡引发的调制信号进行幅度解调。(4)与微处理器通过简单的连线相互通信。
芯片的操作由SHD和MOD控制。SHD为高时进入睡眠模式,在芯片供电之后,SHD必须为高以对芯片进行正确的初始化,然后SHD再接低电平,这样芯片可以发出射频场,由解调模块将线圈上读到的信号由DEMOD__OUT输出。MOD接地使芯片进入只读状态。应用图如下图2所示。
3 H4001原理
H4001是在异频无线传送中应用的CMOS集成电路。电路由放在磁场中的线圈驱动,并从中得到时钟脉冲。开关调制电流可以送回包含在激光可编程逻辑器件中的64位信息。
串行输出的数据包括9位起始位,40位信息位,14位校验位,1位停止位。
而这64位信息是通过曼彻斯特码调制的。逻辑“1”是在一个位周期内产生一个下降沿,逻辑“0”是在一个位周期内产生一个上升沿。64位曼彻斯特码如图3所示。一旦发送,就将连续地发。图4所示的就是逻辑电平与曼彻斯特码之间的关系。从图中可以看出64位信号连续循环输出的情况。
4 曼彻斯特码解码方法
根据曼彻斯特码的特点,得知曼彻斯特码中高电平持续的时间有两种情况:半个位周期和一个位周期。高电平持续一个位周期的情况是因为其中前面半个位周期高电平属于前一位逻辑“0”所有,后半个位周期高电平是属于后一位逻辑“1”所有。根据这个特点,我们分析图5示的波形,首先找一个下跳,然后找一个上跳,目的是确认是否接收到信号(曼彻斯特码)。而后进入一个延时阶段t(延时t大于半个位周期,小于一个位周期)。接着读入信号,它必须是“1”。那么这个“1”就肯定是数据序列中某一位(如果不是“1”,就从头再来)。接下来就是找该位“1”的下跳,找到之后又延时t,继续读入下一位数据。重复找跳变和延时的操作,就可以正确地读出曼彻斯特码序列。由于H4001在电磁场中是连续循环地输出它的信息的,为了确保完全读入卡上64位的信息,我们每张卡都读128位。
根据H4001的特性,我们知道它的数据序列是以9个连续的“1”开始的,然后就是数据和校验位。因此,只要在上面128位信息中找到9个连续的“1”,并且分析其后的数据位和行列校验位就可以确定这一张卡的信息。
5 研究结果
在试验的过程中,根据以上原理编制的程序每次都能正确读取卡上的信息。
经测量,程序读卡距离为9.5cm~11.5cm。读卡
时间为0.086s。(测量方法:把卡放在线圈上,开启程序,正确读到信号就停止。)
6 程序流程图
程序流程图见图6。程序略。