IC卡接口原理管理論文

時間(jian):2022-06-26 05:21:00

導語(yu):IC卡接口原理管理論文(wen)一文(wen)來(lai)源于(yu)網(wang)友上傳,不代(dai)表本站觀點(dian),若需要原創文(wen)章可咨詢客服老師,歡迎(ying)參考。

IC卡接口原理管理論文

摘要:詳細介紹接觸式ic卡讀寫原理;結合一個基于不同讀寫芯片、可以同時操作6片接觸式IC卡的系統,對包括并行通信、半雙工串行通信和I2C通信的幾種不同接口形式的IC卡讀寫芯片進行了(le)詳細的對比分析。

關(guan)鍵詞:ISO/IEC7816接(jie)口技(ji)術接(jie)觸(chu)式(shi)IC卡(ka)并行通信(xin)半雙工(gong)串行通信(xin)I2C總線通信(xin)

引言

IC卡(IntegratedCircuitCard,集成電(dian)路卡)是繼磁(ci)卡之(zhi)后出現的(de)又一(yi)種新型信息工(gong)具(ju)。IC卡在有些國家和地區也稱智能(neng)卡(smartcard)、智慧(hui)卡(intelligentcard)、微(wei)電(dian)路卡(microcircuitcard)或微(wei)芯片(pian)(pian)卡等。它是將一(yi)個微(wei)電(dian)子芯片(pian)(pian)嵌入符合ISO7816標(biao)準的(de)卡基中,做成卡片(pian)(pian)形式;已經十(shi)分(fen)廣泛地應(ying)用于(yu)包括金融、交通、社(she)保等很多(duo)領域。

IC卡(ka)讀寫器是IC卡(ka)與(yu)應用系(xi)統(tong)間的橋梁,在ISO國際標準(zhun)中(zhong)稱之為接口(kou)設(she)備IFD(InterfaceDevice)。IFD內的CPU通過一個接口(kou)電路與(yu)IC卡(ka)相連并(bing)進行(xing)通信(xin)。IC卡(ka)接口(kou)電路是IC卡(ka)讀寫器中(zhong)至關重要的部分,根據(ju)實際應用系(xi)統(tong)的不(bu)同(tong)(tong),可選擇并(bing)行(xing)通信(xin)、半(ban)雙(shuang)工(gong)串行(xing)通信(xin)和I2C通信(xin)等不(bu)同(tong)(tong)的IC卡(ka)讀寫芯片。

1接觸式IC卡接口技術原理

IC卡(ka)(ka)讀寫器要能(neng)讀寫符合(he)ISO7816標準的(de)IC卡(ka)(ka)。IC卡(ka)(ka)接口電路作為(wei)IC卡(ka)(ka)與(yu)IFD內(nei)的(de)CPU進行(xing)通信的(de)唯一通道,為(wei)保證(zheng)通信和數據交換的(de)安全與(yu)可靠,其產生的(de)電信號必須滿足下面(mian)的(de)特定(ding)要求(qiu)。

1.1完成IC卡(ka)插(cha)入與退(tui)出的識別操作(zuo)

IC卡(ka)接口電路對IC卡(ka)插入與退出的(de)(de)(de)(de)識別,即卡(ka)的(de)(de)(de)(de)激(ji)活和釋(shi)放,有很嚴(yan)格的(de)(de)(de)(de)時序要(yao)求。如果不能(neng)滿足相應的(de)(de)(de)(de)要(yao)求,IC卡(ka)就不能(neng)正常進(jin)行操作(zuo);嚴(yan)重時將(jiang)損壞IC卡(ka)或(huo)IC卡(ka)讀寫器。

(1)激活過程

為啟動對卡的(de)操作,接口(kou)電路(lu)應按圖1所示順序激(ji)活電路(lu):

◇RST處于(yu)L狀態;

◇根據所選(xuan)擇卡的類(lei)型,對(dui)VCC加電A類(lei)或(huo)B類(lei),正常操作條件下VCC的電特性見表(biao)1;

表1正常操作(zuo)條件VCC的(de)電特性

符(fu)號最小值最大值條件

Vvcc/V4.5

2.75.5

3.3A類

B類

Icc/mA60500.5A類,在最(zui)大(da)允(yun)許頻率

B類,在最大允許(xu)頻率時鐘停止

◇VPP上升(sheng)為(wei)空閑狀態;

◇接(jie)口電路的I/O應置于(yu)接(jie)收狀態(tai);

◇向(xiang)IC卡的CLK提供時鐘信號(hao)(A類卡1~5MHz,B類卡1~4MHz)。

圖3

如圖1所示,在t’a時(shi)(shi)間(jian)對(dui)IC卡的CLK加時(shi)(shi)鐘(zhong)信(xin)(xin)號(hao)。I/O線(xian)路應在時(shi)(shi)鐘(zhong)信(xin)(xin)號(hao)加于(yu)CLK的200個(ge)時(shi)(shi)鐘(zhong)周(zhou)(zhou)(zhou)期(qi)(ta)內被(bei)置(zhi)于(yu)高阻狀態Z(ta時(shi)(shi)間(jian)在t’a之后(hou)(hou))。時(shi)(shi)鐘(zhong)加于(yu)CLK后(hou)(hou),保持RST為狀態L至(zhi)少(shao)400周(zhou)(zhou)(zhou)期(qi)(tb)使卡復位(tb在t’a之后(hou)(hou))。在時(shi)(shi)間(jian)t’b,RST被(bei)置(zhi)于(yu)狀態H。I/O上的應答應在RST上信(xin)(xin)號(hao)上升(sheng)沿之后(hou)(hou)的400~40000個(ge)時(shi)(shi)鐘(zhong)周(zhou)(zhou)(zhou)期(qi)(tc)內開始(tc在t’b之后(hou)(hou))。

在(zai)RST處于狀(zhuang)態H的情況下(xia),如果應答信號在(zai)40000個時鐘周期(qi)內仍未開始,RST上的信號將(jiang)返回(hui)到狀(zhuang)態L,且IC卡接口電路按照圖2所示對(dui)IC卡產生釋放。

(2)釋放過程

當信息交(jiao)換結束或失(shi)敗時(例如,無(wu)卡響應(ying)或卡被(bei)移(yi)出),接口電路(lu)應(ying)按圖2所示(shi)時序釋放電路(lu):

◇RST應置為(wei)狀態(tai)L;

◇CLK應置為狀態(tai)L(除非時鐘已在狀態(tai)L上停止);

◇VPP應釋放(如果它已被激(ji)活);

◇I/O應置(zhi)為狀態A(在td時間內沒有具體定義(yi));

◇VCC應釋放。

圖4

1.2通過(guo)觸點向卡提供穩定的電源

IC卡接口(kou)電路應能在(zai)表1規定的電壓(ya)范圍內,向IC卡提供相應穩定的電流。

1.3通過(guo)觸點向卡提供穩定的時(shi)鐘(zhong)

IC卡(ka)接口電路向卡(ka)提(ti)供時(shi)(shi)鐘信(xin)號(hao)。時(shi)(shi)鐘信(xin)號(hao)的實(shi)際頻率范(fan)圍在復位應答期間,應在以下范(fan)圍內:A類卡(ka),時(shi)(shi)鐘應在1~5MHz;B類卡(ka),時(shi)(shi)鐘應在1~4MHz。

復(fu)位后,由(you)收到的(de)ATR(復(fu)位應(ying)答(da))信號中的(de)F(時鐘頻率變(bian)換因子)和D(比特率調整因子)來確定。

時鐘信號的(de)工作(zuo)周期(qi)應(ying)為穩定操作(zuo)期(qi)間周期(qi)的(de)40%~60%。當頻率(lv)從一個(ge)(ge)值(zhi)轉換到另一個(ge)(ge)值(zhi)時,應(ying)注意保證沒有比短(duan)周期(qi)的(de)40%更短(duan)的(de)脈沖。

2幾(ji)種(zhong)實現方式的對(dui)比與分析

IFD內的(de)IC卡(ka)(ka)讀(du)寫(xie)(xie)芯片(pian)(pian),按其與(yu)IFD內的(de)CPU的(de)通(tong)信(xin)方式進行分類(lei),有并行通(tong)信(xin)、半雙工(gong)串行通(tong)信(xin)和I2C通(tong)信(xin)的(de)讀(du)寫(xie)(xie)芯片(pian)(pian)。圖3是(shi)一個(ge)基(ji)于三種不同(tong)通(tong)信(xin)方式讀(du)寫(xie)(xie)芯片(pian)(pian)的(de)通(tong)用IC卡(ka)(ka)讀(du)寫(xie)(xie)器的(de)原理示(shi)意。這個(ge)系統(tong)可(ke)以(yi)同(tong)時對6片(pian)(pian)IC卡(ka)(ka)進行操作,其中(zhong)每一個(ge)IC卡(ka)(ka)讀(du)寫(xie)(xie)芯片(pian)(pian)都(dou)可(ke)以(yi)驅動2片(pian)(pian)IC卡(ka)(ka)。應用系統(tong)可(ke)以(yi)根據(ju)實際情況合理選用其中(zhong)的(de)一種或(huo)多種讀(du)寫(xie)(xie)芯片(pian)(pian)。

2.1IC卡(ka)讀寫芯片(pian)的硬件對(dui)比分析(xi)

(1)通信方式為并行通信的CTS56I01

CTS56I01支持兩個符合(he)ISO/IEC7816-3標準的(de)T0和T1傳輸協議的(de)IC卡(ka)(ka)。它采用(yong)并行(xing)的(de)方(fang)式與(yu)IFD內的(de)CPU通(tong)(tong)信(xin);可(ke)(ke)以檢查到(dao)卡(ka)(ka)的(de)插(cha)入與(yu)拔出(chu),并自動產生(sheng)激活(huo)與(yu)釋(shi)放(fang)時序。CTS56I01內部每(mei)個通(tong)(tong)道都有發送緩沖空、ATR超時、釋(shi)放(fang)檢測完成、TS沒有收到(dao)等10個獨立的(de)中(zhong)斷(duan)源(yuan),當(dang)CTS56I01內部的(de)狀態發生(sheng)變(bian)化時,可(ke)(ke)以產生(sheng)中(zhong)斷(duan)信(xin)號(hao)。系統(tong)通(tong)(tong)過P0口與(yu)CTS56I01的(de)數據線相連,地(di)址選(xuan)擇用(yong)P2[2:0],兩個中(zhong)斷(duan)信(xin)號(hao)經過或門(men)后接到(dao)89C51的(de)INT0上。對IC卡(ka)(ka)的(de)所有操作(zuo),只是對CTS56I01內部寄存器的(de)讀寫操作(zuo),方(fang)便可(ke)(ke)靠(kao)。CTS56I01采用(yong)LQFP-32封裝,僅占很小的(de)空間(jian)。

(2)通信方式為半(ban)雙工串行通信的WatchCore

WatchCore是握奇公(gong)司為了方便各種嵌(qian)入(ru)式設備與(yu)IC卡(ka)的通(tong)信開發而推出的一款IC卡(ka)讀寫(xie)芯(xin)片(pian),硬件平臺采(cai)用ST7261單片(pian)機,內部掩(yan)膜有握奇公(gong)司對(dui)IC卡(ka)進行讀寫(xie)操(cao)作的全部程序(xu);支(zhi)(zhi)持(chi)ISO/IEC7816T=0、T=1異步傳(chuan)輸(shu)協議的各種智(zhi)能卡(ka),支(zhi)(zhi)持(chi)對(dui)Memory卡(ka)操(cao)作,支(zhi)(zhi)持(chi)雙(shuang)卡(ka)頭(tou)操(cao)作,與(yu)接口CPU采(cai)用半雙(shuang)工串行通(tong)信。系(xi)統用P1.1和P1.2模(mo)擬(ni)一個串口與(yu)WatchCore進行通(tong)信。WatchCore采(cai)用SO-20裝封,占PCB板很小的位置。

圖5

(3)通信方(fang)式為(wei)I2C的TDA8020

TDA8020是(shi)Philips生產的(de)支持(chi)兩(liang)個(ge)獨立IC卡(ka)(ka)的(de)讀寫芯(xin)片,IFD內的(de)CPU采用I2C的(de)方(fang)式向(xiang)TDA8020發送命令和(he)(he)(he)(he)讀取(qu)狀(zhuang)態,通(tong)過TDA8020的(de)I/OuC端口向(xiang)IC卡(ka)(ka)發送和(he)(he)(he)(he)接(jie)收數據。它支持(chi)符(fu)合ISO/IEC7816-3T=0、T=1標準的(de)IC卡(ka)(ka),也支持(chi)符(fu)合EMV3.1.1(Europay,MasterCard,VISA)標準的(de)卡(ka)(ka)。與它Pin-to-Pin兼容的(de)芯(xin)片還有ST公司生產的(de)ST8020等。TDA8020有2個(ge)地(di)(di)址(zhi)選擇引腳。本系統(tong)的(de)地(di)(di)址(zhi)引腳接(jie)地(di)(di),兩(liang)個(ge)IC卡(ka)(ka)對(dui)應(ying)的(de)地(di)(di)址(zhi)分別(bie)為0x40和(he)(he)(he)(he)0x48。I2C的(de)時鐘信(xin)號和(he)(he)(he)(he)數據信(xin)號分別(bie)由(you)89C51的(de)P1.3和(he)(he)(he)(he)P1.4進行(xing)模擬,IC卡(ka)(ka)的(de)數據通(tong)道I/OuC連89C51的(de)P1.5和(he)(he)(he)(he)P1.6。TDA8020也采用LQFP-32裝封(feng)。

2.2IC卡(ka)讀(du)寫芯片(pian)的軟(ruan)件設(she)計

2.2.1通信(xin)方式為并行通信(xin)的CTS56I01

CST56I01只有3根地(di)(di)址線,內部卻(que)有37個寄(ji)(ji)存(cun)器(qi)(qi)(qi)。其(qi)中有8個寄(ji)(ji)存(cun)器(qi)(qi)(qi)可以直接(jie)訪問(wen)(wen),另外的29個寄(ji)(ji)存(cun)器(qi)(qi)(qi)要通過索(suo)引地(di)(di)址寄(ji)(ji)存(cun)器(qi)(qi)(qi)(IAR)來(lai)訪問(wen)(wen)。其(qi)訪問(wen)(wen)分(fen)為(wei)兩(liang)步:第一(yi)步是(shi)將要間(jian)(jian)接(jie)訪問(wen)(wen)的寄(ji)(ji)存(cun)器(qi)(qi)(qi)的地(di)(di)址寫到IAR寄(ji)(ji)存(cun)器(qi)(qi)(qi)中;第二步就(jiu)是(shi)從(cong)數據(ju)寄(ji)(ji)存(cun)器(qi)(qi)(qi)(DR)中讀出數據(ju)或寫入(ru)數據(ju)到DR寄(ji)(ji)存(cun)器(qi)(qi)(qi)中,來(lai)完(wan)成對要間(jian)(jian)接(jie)訪問(wen)(wen)的寄(ji)(ji)存(cun)器(qi)(qi)(qi)的訪問(wen)(wen)。

下(xia)面的C51子程(cheng)序(xu)是基(ji)于圖(tu)3的寫(xie)一個字節(jie)到要間接(jie)訪問的寄存器中的子程(cheng)序(xu)。

#defineSN2_IARXBYTE[0x0000]

#defineSN2_DRXBYTE[0x0100]

voidWriteByteIndexed(BYTEbIndex,BYTEbData){

P1.0=0;

SN2_IAR=bIndex;

SN2_DR=bData;

}

2.2.2WatchCore的軟件設計(ji)

WatchCore是(shi)不帶硬件的UART,其串(chuan)行通信是(shi)用(yong)軟件實時仿真的。通信速度采用(yong)9600bps;通信字節格式為1位起始(shi)位,8位數(shu)據位,1位偶校驗位,2位停止位。TXD與(yu)(yu)RXD電氣信號是(shi)標(biao)準的CMOS電平,可直(zhi)接與(yu)(yu)TTL的電路相連。以下是(shi)通信時的數(shu)據包格式。

(1)命令包

命令包是(shi)IC卡(ka)讀寫器內的CPU發往(wang)WatchCore的數據,其包格式(shi)如下:

NAD

PCB

LEN

DATA

BCC

NAD為卡頭選擇(ze),NAD=0x00/0x12為主卡頭,NAD=0x13為從卡頭;

PCB與通信無關,CPU卡(ka)T=1時(shi)使用,PCB通常設置為0x00;

LEN為數(shu)據(ju)的(de)字節長度(僅DATA段的(de)字節數(shu));

DATA為發送WactchCore或IC卡內的(de)命令(ling)(命令(ling)參考ISO7816-4的(de)標準);

BCC為異(yi)或(huo)校驗字節(BCC段前的4段所有(you)字節的異(yi)或(huo)和)。

(2)數據包

數據包(bao)是WatchCore收(shou)到命令(ling)包(bao)后返回的數據,其包(bao)格式如下:

NAD*是WatchCore把(ba)命令(ling)包(bao)中(zhong)NAD字節(jie)的高低4位互換后的返回。例如(ru),命令(ling)包(bao)發送(song)NAD=0x12,WatchCore則返回NAD*=0x21;

其它各(ge)段與(yu)命(ming)令包相同。

通信舉例(以下數據(ju)都用十(shi)六進制(zhi)表(biao)示)

對主卡進行復位

發送命令包如下:

120005001200000005

若主卡頭中無卡,則WatchCore返回(hui):

210002620041

若(ruo)主卡頭有一張T=0的CPU卡,則可能返(fan)回:

2100113B7A180000210811121314151617189000D8

2.2.3TDA8020的軟(ruan)件設計

TDA8020與IFD內CPU的(de)(de)(de)通(tong)信是用I2C總(zong)線(xian)方(fang)式(shi)進行的(de)(de)(de)。通(tong)過I2C接(jie)口,IFD內的(de)(de)(de)CPU可以向TDA8020發送命令或(huo)讀取TDA8020的(de)(de)(de)狀態(tai)。TDA8020有(you)兩(liang)個地址選擇引(yin)腳(SAD0和(he)SAD1)。在圖3中,這兩(liang)個地址選擇引(yin)腳接(jie)地,對應兩(liang)個IC卡的(de)(de)(de)I2C總(zong)線(xian)地址分(fen)別是40H和(he)48H。如果系統中有(you)別的(de)(de)(de)I2C總(zong)線(xian)器(qi)件,可以按(an)表2的(de)(de)(de)方(fang)式(shi)進行尋址。

表2TDA8020的I2C地址選擇表

SAD1SAD0CARD1CARD2

0040H48H

0142H4AH

1046H4CH

1148H4EH

(1)向(xiang)TDA8020寫入(ru)命令的格(ge)式

圖4為向TDA8020寫入命令(ling)的(de)格式。按(an)圖3所示,對卡1的(de)地址和寫的(de)字節為40H。

其中控制(zhi)字節各位的(de)含義如(ru)表3所列。

表(biao)3命(ming)令控制(zhi)字(zi)節各位的含(han)義

名稱位說明

START和/STOP0為(wei)1,產生一(yi)個冷復位的激活時序(xu)(xu):為(wei)0,產生一(yi)個釋放(fang)時序(xu)(xu)

WARM1為1,產生(sheng)一個熱(re)復位時序(xu)

3/5V2為1,設定(ding)卡的(de)操作電壓為3V;為0,設定(ding)卡的(de)操作電壓為5V

PDOWN3為(wei)(wei)1,設定卡(ka)為(wei)(wei)下(xia)電模式(shi);為(wei)(wei)0,設定卡(ka)為(wei)(wei)正常工(gong)作模式(shi)

CLKPD4為1,設(she)定(ding)下(xia)(xia)(xia)電(dian)(dian)模式下(xia)(xia)(xia)CLK停在高(gao)電(dian)(dian)平;為0,設(she)定(ding)下(xia)(xia)(xia)電(dian)(dian)模式下(xia)(xia)(xia)CLK停在低電(dian)(dian)平

CLKSEL15兩位(wei)設定卡在(zai)正(zheng)常(chang)工作(zuo)模式時的工作(zuo)時鐘頻率(lv)見表4

CLKSEL26

I/OEN7I/O使能位(wei)。為1時,I/O與I/Ouc相連(lian);為0時,I/Ouc是(shi)高阻狀(zhuang)態

(2)讀TDA8020內部(bu)狀(zhuang)態的數(shu)據格式

從TDA8020讀(du)出狀態的格式如圖(tu)5所示。按圖(tu)3所示,對卡1的地址和(he)讀(du)的字(zi)節為41H。

其中(zhong)狀態字(zi)節中(zhong)各(ge)位的含義如表5所(suo)列。

表4工(gong)作時鐘頻率選擇方式

CLKSEL2CLKSEL1CLOCKOU

00CLKIN/8

00CLKIN/4

10CLKIN/2

11CLKIN

表5狀態字節(jie)各位的含義

名稱位說明

PRES0卡(ka)的(de)狀態指示。為1時,檢(jian)(jian)測到卡(ka):為0時,沒有檢(jian)(jian)測到卡(ka)

PRESL1為(wei)(wei)1時,卡(ka)的(de)狀(zhuang)態(tai)還沒有讀;當(dang)為(wei)(wei)0時,卡(ka)的(de)狀(zhuang)態(tai)已(yi)讀出(chu)

I/O2I/O為(wei)高時(shi),這位(wei)為(wei)1;當I/O為(wei)低時(shi),這位(wei)為(wei)0

SUPL3為1時,表示(shi)電(dian)源(yuan)監控器已輸出(chu),上電(dian)后(hou)就為1,直到讀(du)出(chu)后(hou)為0

PROT4為1時,表示(shi)過(guo)熱或過(guo)載狀態

MUTE5為1時(shi)表示(shi)卡在規定的時(shi)間內沒有發(fa)出ATR信號

EARLY6為(wei)1時表示卡在規定的時間前(qian)就已經發出ATR信號

ACTIVE7為(wei)1時(shi),卡處(chu)于激(ji)活狀態;為(wei)0時(shi),卡處(chu)于釋放狀態

3總結

以上比較詳細地介(jie)紹(shao)了三種不同接口的(de)IC卡讀寫芯片(pian)。這三種方(fang)式最大的(de)區別在(zai)于(yu)其與IFD內的(de)CPU的(de)通信方(fang)式不一(yi)(yi)樣,并(bing)且也(ye)都符合ISO/IEC7816的(de)標(biao)準。但是,這三個(ge)讀寫芯片(pian)有一(yi)(yi)些(xie)地方(fang)也(ye)存在(zai)一(yi)(yi)些(xie)差異。

TDA8020支(zhi)持A類和B類卡(ka)(ka),但是(shi)WatchCore和SNIPERIICST56I01只(zhi)支(zhi)持A類卡(ka)(ka)。(雖然SNIPERIICST56I01內部寄存(cun)器中有一位是(shi)卡(ka)(ka)類選擇,但卻只(zhi)支(zhi)持A類卡(ka)(ka)。)

TDA8020和SNIPERIICST56I01其(qi)ESD保護達(da)6kV,但(dan)是WatchCore卻沒有ESD保護功能(neng)。

TDA8020對卡的電源(yuan)可(ke)以直接支(zhi)持,并有(you)過(guo)流保護功能(neng);但(dan)是WatchCore和SNIPERIICST56I01卻只(zhi)有(you)通過(guo)一(yi)個(ge)功放管來實現,并且(qie)沒(mei)有(you)過(guo)流保護功能(neng),只(zhi)有(you)外(wai)接保護電路(如加可(ke)復位保險絲)。

就其接(jie)口方式(shi)來說,I2C總(zong)線的(de)TDA8020和(he)串(chuan)口的(de)WatchCore雖然與IC卡(ka)讀寫器內的(de)CPU的(de)連接(jie)方便,但(dan)(dan)是(shi)一般CPU沒有多(duo)余的(de)串(chuan)口和(he)I2C總(zong)線接(jie)口給(gei)這(zhe)兩(liang)個芯片,一般要用(yong)通(tong)用(yong)I/O口來模(mo)擬(ni)串(chuan)口和(he)I2C總(zong)線接(jie)口才能進行通(tong)信(xin)。而(er)SNIPERIICST56I01與IFD內的(de)CPU的(de)并行通(tong)信(xin)雖然連接(jie)線較多(duo),但(dan)(dan)其相應的(de)軟件就方便多(duo)了(le)。

綜上所述,這三個IC卡讀(du)寫芯片各有(you)不(bu)同,在實(shi)現應用的過程中,只(zhi)有(you)根據不(bu)同的資源情(qing)況來選用不(bu)同的讀(du)寫芯片。