隨著現(xiàn)代社會(huì)科學(xué)技術(shù)的發(fā)展,人們對(duì)于移動(dòng)產(chǎn)品的便攜性和便利性和高效性的要求越來(lái)越高。SIM卡作為智能卡中特殊的一種,采用標(biāo)準(zhǔn)的接觸式IC卡,符合IS07816標(biāo)準(zhǔn)規(guī)范,它沿襲了智能卡在安全中的特色,在移動(dòng)商務(wù)中扮演著很重要的角色。因此SIM卡的應(yīng)用范圍也變得越來(lái)越廣,可以應(yīng)用于金融、便捷支付等高端應(yīng)用領(lǐng)域。但是對(duì)于已經(jīng)投放到市場(chǎng)上的卡片,運(yùn)營(yíng)商對(duì)于鑒別是哪個(gè)供應(yīng)商供應(yīng)的產(chǎn)品比較困難,而且對(duì)于供應(yīng)商自己來(lái)說(shuō)對(duì)于自己生產(chǎn)的卡片進(jìn)行質(zhì)量檢測(cè)也是十分必要的。鑒于ARM的高性?xún)r(jià)比,本文采用一種基于ARM7TDMI內(nèi)核的CPU STR711FR2作為處理器作為系統(tǒng)核心,設(shè)計(jì)一款SIM卡讀卡系統(tǒng),它可以兼容符合7816協(xié)議的A,B,C 3種卡片,用來(lái)讀出被芯片固化在芯片內(nèi)部的信息,以便來(lái)確認(rèn)芯片的生產(chǎn)商以及對(duì)芯片實(shí)現(xiàn)質(zhì)量檢測(cè)。
1 系統(tǒng)結(jié)構(gòu)
讀卡系統(tǒng)主要由讀卡模塊、串口通信模塊、USB通信模塊、JTAC下載調(diào)試模塊以及相應(yīng)的時(shí)鐘和復(fù)位電路模塊和上層軟件組成。主控電路由ST公司的STR711FR2及其外圍電路構(gòu)成,主要實(shí)現(xiàn)對(duì)命令的發(fā)送和對(duì)收到的數(shù)據(jù)進(jìn)行傳輸和處理。系統(tǒng)采用接觸式的工作方式,把芯片插入到接口插槽中,通過(guò)主控芯片發(fā)送指令完成對(duì)卡片數(shù)據(jù)的讀取,再把得到數(shù)據(jù)通過(guò)串口通信模塊把數(shù)據(jù)傳輸?shù)絇C機(jī)上,通過(guò)上層軟件對(duì)所接收到的數(shù)據(jù)進(jìn)行處理和判斷,再把結(jié)果在PC機(jī)上面顯示。系統(tǒng)結(jié)構(gòu)如圖1所示。
2 硬件平臺(tái)設(shè)計(jì)
2.1 平臺(tái)構(gòu)架
STR711FR2是ST公司的一款基于ARM7TDMI內(nèi)核、高性能、低成本、低功耗的微控制器。它內(nèi)嵌256+16 k的Flash以及64 k的RAM,具有豐富的外設(shè):如智能卡ISO-7816-3接口、USB 2.0接口以及UART接口和豐富的IO接口等。
本系統(tǒng)STR711FR2作為主處理器,使用USB接口用來(lái)給系統(tǒng)供電,同時(shí)作為備用數(shù)據(jù)通道;JTAG接口用來(lái)給系統(tǒng)進(jìn)行調(diào)試和下載固件;78 16智能卡接口作為插卡口;串口等用來(lái)傳輸讀到的數(shù)據(jù)。系統(tǒng)由USB接口供電;STR711FR2由外部提供4 M晶振提供時(shí)鐘,32.768 k晶振作為輔助時(shí)鐘同時(shí)提供給內(nèi)部的實(shí)時(shí)時(shí)鐘。STR711FR2與LTC1955之間通過(guò)串口發(fā)送不同的指令,來(lái)判斷插入卡片的類(lèi)型,以便產(chǎn)生卡片相應(yīng)的電壓,然后發(fā)命令把數(shù)據(jù)讀出來(lái),再通過(guò)串口通信模塊把數(shù)據(jù)傳輸?shù)絇C機(jī)上面顯示。硬件平臺(tái)構(gòu)架如圖2所示。
2.2 電源部分
USB接口部分電源電壓為5 V,最大電流可以達(dá)到500 mA,系統(tǒng)中的MCU和Reader是兩個(gè)主要的耗能元器件,其中STR711FR2滿(mǎn)負(fù)荷工作電流為200mA,LTC1955滿(mǎn)負(fù)荷工作電流不超過(guò)為100 mA。LTC1955以及STR711FR2額定電壓為3.3 V,因此需要將5 V轉(zhuǎn)換成3.3 V電壓,轉(zhuǎn)換芯片采用ASM1117S33。經(jīng)過(guò)轉(zhuǎn)換之后系統(tǒng)完全可以使用USB進(jìn)行供電。另外STR711FR2支持USB2.0傳輸協(xié)議,所以可以將USB的差分線(xiàn)用1.5kΩ的電阻進(jìn)行弱上托,分別與主MCU的42腳和43腳相連。以此來(lái)支持USB的高速傳輸模式,因此此部分也可以作為備用的數(shù)據(jù)傳輸通道。電路如圖3所示。
2.3 7816接口部分
SIM卡的引腳定義符合ISO7816帶觸電集成電路卡規(guī)范,它實(shí)際上是一個(gè)裝有微處理器的芯片卡,包括5個(gè)模塊并且具有機(jī)卡分離接口,通信安全可靠成本較低。其中C1腳是電源VCC、C2腳為復(fù)位RST、C3腳為時(shí)鐘CLK、C4腳不接、C5腳為接地GND、C6腳編程電壓VPP、C7腳為數(shù)據(jù)I/O口、C8腳不接。除了C4和C8腳已被國(guó)際標(biāo)準(zhǔn)組織擴(kuò)展為新一代高速SIM卡接口,C6高壓編程引腳已經(jīng)失去作用,因?yàn)镾IM卡可以不必外部提供VPP信號(hào)即可在內(nèi)部實(shí)現(xiàn)EEPROM的擦寫(xiě)功能。
7816接口部分采用Linear公司的專(zhuān)用芯片LTC1955,LTC1955支持ISO7816-3協(xié)議,具有很好的電源管理和控制能力,具有串行數(shù)據(jù)接口,可以通過(guò)它進(jìn)行數(shù)據(jù)控制和狀態(tài)控制,能夠在出現(xiàn)電氣錯(cuò)誤的時(shí)候?qū)崿F(xiàn)自動(dòng)的掉電。內(nèi)置電壓崩,能夠產(chǎn)生1.8 V、3 V以及5 V電壓,因此能夠兼容7816的A,B,C3種卡??ㄆ涌谀軌蛲ㄟ^(guò)自動(dòng)震蕩電路產(chǎn)生的偵測(cè)通道自動(dòng)偵測(cè)卡片類(lèi)型,串口根據(jù)偵測(cè)到的信息發(fā)送命令可以實(shí)現(xiàn)卡片類(lèi)型的選擇,不同命令狀態(tài)位可以選擇不同類(lèi)型的卡。本系統(tǒng)設(shè)計(jì)只采用了一個(gè)B卡插槽,芯片的32腳和31腳分別為同步和非同步引腳,分別于主控芯片的P1.8和P1.9腳連接.通過(guò)中控IO發(fā)送同步和非同步的命令,來(lái)選擇傳輸模式。數(shù)據(jù)腳DATA與主控芯片的P1.15腳相接,用來(lái)傳送接收到的數(shù)據(jù),RIN復(fù)位腳信息通過(guò)主控芯片的P1.14控制發(fā)送。電路設(shè)計(jì)如圖4所示。
2.4 UART部分
通信接口是系統(tǒng)與外界進(jìn)行信息交互的通道和橋梁,因此通信接口的設(shè)計(jì)在系統(tǒng)中是必不可少的,通過(guò)目前主流的兒種通信方式設(shè)計(jì)比較,本系統(tǒng)采用了UART方式。UART電路的關(guān)鍵是實(shí)現(xiàn)STR711FR2與PC電平匹配,PC機(jī)電平是12 V而STR711FR2的電平為3.3 V,這就需要進(jìn)行電平轉(zhuǎn)換,目前此類(lèi)電平轉(zhuǎn)換芯片有很多,如MAX3232及ST3232等等,本系統(tǒng)采用MAX3232芯片進(jìn)行轉(zhuǎn)換,MAX3232不僅能保證主機(jī)需要,而且單一3.3 V供電,可以同時(shí)實(shí)現(xiàn)發(fā)送轉(zhuǎn)換和接受轉(zhuǎn)換功能。芯片提供了2個(gè)UART通道,可以接2個(gè)RS3232,本系統(tǒng)只采用一個(gè)UART,只用選擇第一個(gè)通道,另外一個(gè)不接。其電路設(shè)計(jì)如圖5。
3 軟件檢測(cè)系統(tǒng)的實(shí)現(xiàn)
SIM卡符合國(guó)際標(biāo)準(zhǔn)7816協(xié)議規(guī)范,因此本檢測(cè)系統(tǒng)分為兩個(gè)部分,第一部分是對(duì)于7816協(xié)議通信的固件部分,第二部分是上層軟件部分。對(duì)于固件部分的操作應(yīng)該包括接口設(shè)備激活電路,冷復(fù)位啟動(dòng)卡片應(yīng)答、卡片與接口設(shè)備進(jìn)行信息交換和接口設(shè)備釋放電路卡片下電3個(gè)過(guò)程。
當(dāng)卡片和接口設(shè)備物理連接以后,為啟動(dòng)機(jī)械連接的卡的互操作,接口設(shè)備需要激活卡片,初始時(shí),所有端口皆處于低電平(L)態(tài),電壓范圍0~0.4 V;VCC電源電壓先上電(H態(tài)),VCC電源端穩(wěn)定一段時(shí)間后,將IO端口置為接收方式(H態(tài)),電路的激活順序結(jié)束,卡片進(jìn)入復(fù)位過(guò)程。在Ta時(shí)間CLK開(kāi)始提供時(shí)鐘信號(hào);卡應(yīng)在時(shí)鐘信號(hào)開(kāi)始后至少200個(gè)時(shí)鐘周期之內(nèi)(延時(shí)時(shí)間為T(mén)a)置IO口狀態(tài)為接受狀態(tài)。同時(shí),從Ta開(kāi)始,RST至少保持400個(gè)時(shí)鐘周期(延時(shí)時(shí)間為T(mén)b))的L態(tài),即保持到時(shí)間Tb后RST置狀態(tài)H,為了保證卡片正常復(fù)位,卡片要在400~40 000個(gè)時(shí)鐘周期之內(nèi)(延時(shí)時(shí)間為T(mén)c)作出應(yīng)答,即從IO口返回ATR。復(fù)位過(guò)程結(jié)束。時(shí)序如圖6所示。
上電后,接口設(shè)備可根據(jù)卡片返回的ATR來(lái)選擇工作模式,如果ATR中規(guī)定了TA2,則接口設(shè)備根據(jù)新的參數(shù)啟動(dòng)與卡片信息交換方式;如果ATR中沒(méi)有規(guī)定TA2,則接口設(shè)備和卡之間可進(jìn)行PPS過(guò)程或者接口設(shè)備根據(jù)TD1中的參數(shù)(T)選擇采用哪種通信協(xié)議。如果接口設(shè)備與卡片停止數(shù)據(jù)交換,并且IO口保持H狀態(tài)至少1 860(Tg)個(gè)clock,則接口設(shè)備可在Te時(shí)刻停止時(shí)鐘,此時(shí)VCC保持供電,RST保持高電平。時(shí)鐘停止時(shí)序如圖7所示。
信息交互完畢卡片進(jìn)行釋放,RST置狀態(tài)L:CLK置狀態(tài)L(除非時(shí)鐘已經(jīng)停止在狀態(tài)L上)IO置狀態(tài)L:VCC被釋放。
上層軟件采用C++進(jìn)行設(shè)計(jì),由于卡片在剛剛出廠還沒(méi)有交付給運(yùn)營(yíng)商使用的時(shí)候,ATR中有時(shí)候也會(huì)被寫(xiě)入生產(chǎn)商的相關(guān)信息,可以根據(jù)此信息來(lái)檢測(cè)芯片,但是一旦被運(yùn)營(yíng)商投入市場(chǎng),那么就會(huì)被下載運(yùn)營(yíng)商的cos,此時(shí)ATR也變成了運(yùn)營(yíng)商的了,那么就無(wú)法根據(jù)ATR來(lái)進(jìn)行檢測(cè)。但是卡片出廠的時(shí)候卡商會(huì)將自己的cos下載到NVR中,其中包含了卡片生產(chǎn)商的標(biāo)志信息,例如卡片的商業(yè)代碼、生產(chǎn)時(shí)間、lot號(hào)以及坐標(biāo)等等。而這些內(nèi)容一旦下載進(jìn)去就不能被修改,因此可以據(jù)此來(lái)檢測(cè)。檢測(cè)流程如圖8所示。
4 結(jié)束語(yǔ)
文中給出了一種基于ARM7內(nèi)核的SIM卡檢測(cè)系統(tǒng),通過(guò)測(cè)試可以順利的實(shí)現(xiàn)檢測(cè)功能,本系統(tǒng)采用標(biāo)準(zhǔn)接觸式卡片設(shè)計(jì),兼容7816的A、B、C 3種卡,為接觸和以后升級(jí)的非接觸式卡片讀取信息提供了可行的平臺(tái)。