基于ARM的SIM卡检测系统的研究
扫描二维码
随时随地手机看文章
摘要:随着集成电路的发展,SIM卡在人们的生活中应用的越来越广泛,如在移动通信领域以及金融领域都有广泛的应用。因此对于SIM的检测也成为供应商和运营商所面临的一个问题。文中给出了一种基于ARM的读卡检测系统平台的设计与实现方案,阐述了硬件电路设计以及软件设计流程,给出了硬件接口电路原理图,完成硬件调试,通过测试表明该方案可行。
关键词:ARM;SIM;阅读器;检测
随着现代社会科学技术的发展,人们对于移动产品的便携性和便利性和高效性的要求越来越高。SIM卡作为智能卡中特殊的一种,采用标准的接触式IC卡,符合IS07816标准规范,它沿袭了智能卡在安全中的特色,在移动商务中扮演着很重要的角色。因此SIM卡的应用范围也变得越来越广,可以应用于金融、便捷支付等高端应用领域。但是对于已经投放到市场上的卡片,运营商对于鉴别是哪个供应商供应的产品比较困难,而且对于供应商自己来说对于自己生产的卡片进行质量检测也是十分必要的。鉴于ARM的高性价比,本文采用一种基于ARM7TDMI内核的CPU STR711FR2作为处理器作为系统核心,设计一款SIM卡读卡系统,它可以兼容符合7816协议的A,B,C 3种卡片,用来读出被芯片固化在芯片内部的信息,以便来确认芯片的生产商以及对芯片实现质量检测。
1 系统结构
读卡系统主要由读卡模块、串口通信模块、USB通信模块、JTAC下载调试模块以及相应的时钟和复位电路模块和上层软件组成。主控电路由ST公司的STR711FR2及其外围电路构成,主要实现对命令的发送和对收到的数据进行传输和处理。系统采用接触式的工作方式,把芯片插入到接口插槽中,通过主控芯片发送指令完成对卡片数据的读取,再把得到数据通过串口通信模块把数据传输到PC机上,通过上层软件对所接收到的数据进行处理和判断,再把结果在PC机上面显示。系统结构如图1所示。
2 硬件平台设计
2.1 平台构架
STR711FR2是ST公司的一款基于ARM7TDMI内核、高性能、低成本、低功耗的微控制器。它内嵌256+16 k的Flash以及64 k的RAM,具有丰富的外设:如智能卡ISO-7816-3接口、USB 2.0接口以及UART接口和丰富的IO接口等。
本系统STR711FR2作为主处理器,使用USB接口用来给系统供电,同时作为备用数据通道;JTAG接口用来给系统进行调试和下载固件;78 16智能卡接口作为插卡口;串口等用来传输读到的数据。系统由USB接口供电;STR711FR2由外部提供4 M晶振提供时钟,32.768 k晶振作为辅助时钟同时提供给内部的实时时钟。STR711FR2与LTC1955之间通过串口发送不同的指令,来判断插入卡片的类型,以便产生卡片相应的电压,然后发命令把数据读出来,再通过串口通信模块把数据传输到PC机上面显示。硬件平台构架如图2所示。
2.2 电源部分
USB接口部分电源电压为5 V,最大电流可以达到500 mA,系统中的MCU和Reader是两个主要的耗能元器件,其中STR711FR2满负荷工作电流为200mA,LTC1955满负荷工作电流不超过为100 mA。LTC1955以及STR711FR2额定电压为3.3 V,因此需要将5 V转换成3.3 V电压,转换芯片采用ASM1117S33。经过转换之后系统完全可以使用USB进行供电。另外STR711FR2支持USB2.0传输协议,所以可以将USB的差分线用1.5kΩ的电阻进行弱上托,分别与主MCU的42脚和43脚相连。以此来支持USB的高速传输模式,因此此部分也可以作为备用的数据传输通道。电路如图3所示。
2.3 7816接口部分
SIM卡的引脚定义符合ISO7816带触电集成电路卡规范,它实际上是一个装有微处理器的芯片卡,包括5个模块并且具有机卡分离接口,通信安全可靠成本较低。其中C1脚是电源VCC、C2脚为复位RST、C3脚为时钟CLK、C4脚不接、C5脚为接地GND、C6脚编程电压VPP、C7脚为数据I/O口、C8脚不接。除了C4和C8脚已被国际标准组织扩展为新一代高速SIM卡接口,C6高压编程引脚已经失去作用,因为SIM卡可以不必外部提供VPP信号即可在内部实现EEPROM的擦写功能。
7816接口部分采用Linear公司的专用芯片LTC1955,LTC1955支持ISO7816-3协议,具有很好的电源管理和控制能力,具有串行数据接口,可以通过它进行数据控制和状态控制,能够在出现电气错误的时候实现自动的掉电。内置电压崩,能够产生1.8 V、3 V以及5 V电压,因此能够兼容7816的A,B,C3种卡。卡片接口能够通过自动震荡电路产生的侦测通道自动侦测卡片类型,串口根据侦测到的信息发送命令可以实现卡片类型的选择,不同命令状态位可以选择不同类型的卡。本系统设计只采用了一个B卡插槽,芯片的32脚和31脚分别为同步和非同步引脚,分别于主控芯片的P1.8和P1.9脚连接.通过中控IO发送同步和非同步的命令,来选择传输模式。数据脚DATA与主控芯片的P1.15脚相接,用来传送接收到的数据,RIN复位脚信息通过主控芯片的P1.14控制发送。电路设计如图4所示。
2.4 UART部分
通信接口是系统与外界进行信息交互的通道和桥梁,因此通信接口的设计在系统中是必不可少的,通过目前主流的儿种通信方式设计比较,本系统采用了UART方式。UART电路的关键是实现STR711FR2与PC电平匹配,PC机电平是12 V而STR711FR2的电平为3.3 V,这就需要进行电平转换,目前此类电平转换芯片有很多,如MAX3232及ST3232等等,本系统采用MAX3232芯片进行转换,MAX3232不仅能保证主机需要,而且单一3.3 V供电,可以同时实现发送转换和接受转换功能。芯片提供了2个UART通道,可以接2个RS3232,本系统只采用一个UART,只用选择第一个通道,另外一个不接。其电路设计如图5。
3 软件检测系统的实现
SIM卡符合国际标准7816协议规范,因此本检测系统分为两个部分,第一部分是对于7816协议通信的固件部分,第二部分是上层软件部分。对于固件部分的操作应该包括接口设备激活电路,冷复位启动卡片应答、卡片与接口设备进行信息交换和接口设备释放电路卡片下电3个过程。
当卡片和接口设备物理连接以后,为启动机械连接的卡的互操作,接口设备需要激活卡片,初始时,所有端口皆处于低电平(L)态,电压范围0~0.4 V;VCC电源电压先上电(H态),VCC电源端稳定一段时间后,将IO端口置为接收方式(H态),电路的激活顺序结束,卡片进入复位过程。在Ta时间CLK开始提供时钟信号;卡应在时钟信号开始后至少200个时钟周期之内(延时时间为Ta)置IO口状态为接受状态。同时,从Ta开始,RST至少保持400个时钟周期(延时时间为Tb))的L态,即保持到时间Tb后RST置状态H,为了保证卡片正常复位,卡片要在400~40 000个时钟周期之内(延时时间为Tc)作出应答,即从IO口返回ATR。复位过程结束。时序如图6所示。
上电后,接口设备可根据卡片返回的ATR来选择工作模式,如果ATR中规定了TA2,则接口设备根据新的参数启动与卡片信息交换方式;如果ATR中没有规定TA2,则接口设备和卡之间可进行PPS过程或者接口设备根据TD1中的参数(T)选择采用哪种通信协议。如果接口设备与卡片停止数据交换,并且IO口保持H状态至少1 860(Tg)个clock,则接口设备可在Te时刻停止时钟,此时VCC保持供电,RST保持高电平。时钟停止时序如图7所示。
信息交互完毕卡片进行释放,RST置状态L:CLK置状态L(除非时钟已经停止在状态L上)IO置状态L:VCC被释放。
上层软件采用C++进行设计,由于卡片在刚刚出厂还没有交付给运营商使用的时候,ATR中有时候也会被写入生产商的相关信息,可以根据此信息来检测芯片,但是一旦被运营商投入市场,那么就会被下载运营商的cos,此时ATR也变成了运营商的了,那么就无法根据ATR来进行检测。但是卡片出厂的时候卡商会将自己的cos下载到NVR中,其中包含了卡片生产商的标志信息,例如卡片的商业代码、生产时间、lot号以及坐标等等。而这些内容一旦下载进去就不能被修改,因此可以据此来检测。检测流程如图8所示。
4 结束语
文中给出了一种基于ARM7内核的SIM卡检测系统,通过测试可以顺利的实现检测功能,本系统采用标准接触式卡片设计,兼容7816的A、B、C 3种卡,为接触和以后升级的非接触式卡片读取信息提供了可行的平台。