接觸(chù)式IC卡接口原理與不同實現方式對(duì)比
摘要
接觸(chù)式IC卡接口原理與不同實現方式對(duì)比
引 言
IC卡 (Integrated Circuit Card,集成電路卡)是繼磁卡之後出現的又一種新型信息工具。IC卡在有些國家和地區也稱智能卡(smart card)、智慧卡(intelligent card)、微電路卡(microcircuit card)或微芯片卡等。它是将一個微電子芯片嵌入符合ISO 7816标準的卡基中,做成卡片形式;已經十分廣泛地應用於包括金融、交通、社保等很多領域。
IC卡讀寫器是IC卡與應用系統間的橋梁,在ISO國際标準中稱之爲接口設備IFD(Interface Device)。IFD内的CPU通過一個接口電路與IC卡相連並進行通信。IC卡接口電路是IC卡讀寫器中至關重要的部分,根據實際應用系統的不同,可選擇並行通信、半雙工串行通信和I2C通信等不同的IC卡讀寫芯片。
1 接觸式IC卡接口技術原理
IC卡讀寫器要能讀寫符合ISO7816标準的IC卡。IC卡接口電路作爲IC卡與IFD内的CPU進行通信的唯一通道,爲保證通信和數據交換的安全與可靠,其産生的電信号必須滿足下面的特定要求。
1.1 完成IC卡插入與退出的識别操作 1.2 通過觸點向卡提供穩定的電源 (3)通信方式爲I2C的TDA8020
IC卡接口電路對IC卡插入與退出的識别,即卡的激活和釋放,有很嚴格的時序要求。如果不能滿足相應的要求,IC卡就不能正常進行操作;嚴重時将損壞IC卡或IC卡讀寫器。
(1)激活過程
爲啓動對卡的操作,接口電路應按圖1所示順序激活電路:
◇RST處於L狀态;
◇根據所選擇卡的類型,對VCC加電A類或B類,正常操作條件下VCC的電特性見表1;
表1 正常操作條件VCC的電特性
符 号 小值 大值 條 件
Vvcc/V 4.5
2.7 5.5
3.3 A類
B類
Icc/mA 60500.5 A類,在大允許頻率
B類,在大允許頻率時鍾停止
◇VPP上升爲空閑狀态;
◇接口電路的I/O應置於接收狀态;
◇向IC卡的CLK提供時鍾信号(A類卡1~5MHz,B類卡1~4MHz)。
如圖1所示,在t’a時間對IC卡的CLK加時鍾信号。I/O線路應在時鍾信号加於CLK的200個時鍾周期(ta)内被置於高阻狀态Z(ta 時間在t’a之後)。時鍾加於CLK後,保持RST爲狀态L至少400周期(tb)使卡複位(tb在t’a之後)。在時間t’b,RST被置於狀态H。I/O上的應答應在RST上信号上升沿之後的400~40 000個時鍾周期(tc)内開始(tc在t’b之後)。
在RST處於狀态H的情況下,如果應答信号在40 000個時鍾周期内仍未開始,RST上的信号将返回到狀态L,且IC卡接口電路按照圖2所示對IC卡産生釋放。
(2)釋放過程
當信息交換結束或失敗時(例如,無卡響應或卡被移出),接口電路應按圖2所示時序釋放電路:
◇RST應置爲狀态L;
◇CLK應置爲狀态L(除非時鍾已在狀态L上停止);
◇VPP應釋放(如果它已被激活);
◇I/O應置爲狀态A(在td時間内沒有具體定義);
◇VCC應釋放。
圖4
IC卡接口電路應能在表1規定的電壓範圍内,向IC卡提供相應穩定的電流。
1.3 通過觸點向卡提供穩定的時鍾
IC卡接口電路向卡提供時鍾信号。時鍾信号的實際頻率範圍在複位應答期間,應在以下範圍内:A類卡,時鍾應在1~5MHz;B類卡,時鍾應在1~4MHz。
複位後,由收到的ATR(複位應答)信号中的F(時鍾頻率變換因子)和D(比特率調整因子)來確定。
時鍾信号的工作周期應爲穩定操作期間周期的40%~60%。當頻率從一個值轉換到另一個值時,應注意保證沒有比短周期的40%更短的脈沖。
2 幾種實現方式的對比與分析
IFD内的IC卡讀寫芯片,按其與IFD内的CPU的通信方式進行分類,有並行通信、半雙工串行通信和I2C通信的讀寫芯片。圖3是一個基於三種不同通信方式讀寫芯片的通用IC卡讀寫器的原理示意。這個系統可以同時對6片IC卡進行操作,其中每一個IC卡讀寫芯片都可以驅動2片IC卡。應用系統可以根據實際情況合理選用其中的一種或多種讀寫芯片。
2.1 IC卡讀寫芯片的硬件對比分析
(1)通信方式爲並行通信的CTS56I01
CTS56I01支持兩個符合ISO/IEC7816-3标準的T0和T1傳輸協議的IC卡。它採用並行的方式與IFD内的CPU通信;可以檢查到卡的插入與拔出,並自動産生激活與釋放時序。CTS56I01内部每個通道都有發送緩沖空、ATR超時、釋放檢測完成、TS沒有收到等10個獨立的中斷源,當CTS56I01内部的狀态發生變化時,可以産生中斷信号。系統通過P0口與CTS56I01的數據線相連,地址選擇用P2[2:0],兩個中斷信号經過或門後接到89C51的INT0上。對IC卡的所有操作,隻是對CTS56I01内部寄存器的讀寫操作,方便可靠。CTS56I01採用LQFP-32封裝,僅占很小的空間。
(2)通信方式爲半雙工串行通信的WatchCore
WatchCore是握奇公司爲瞭方便各種嵌入式設備與IC卡的通信開發而推出的一款IC卡讀寫芯片,硬件平台採用ST7261單片機,内部掩膜有握奇公司對IC卡進行讀寫操作的全部程序;支持ISO/IEC 7816 T=0、T=1異步傳輸協議的各種智能卡,支持對Memory卡操作,支持雙卡頭操作,與接口CPU採用半雙工串行通信。系統用P1.1和P1.2模拟一個串口與WatchCore進行通信。WatchCore採用SO-20裝封,占PCB闆很小的位置。
圖5
TDA8020是Philips生産的支持兩個獨立IC卡的讀寫芯片,IFD内的CPU採用I2C的方式向TDA8020發送命令和讀取狀态,通過TDA8020的I/OuC端口向IC卡發送和接收數據。它支持符合ISO/IEC7816-3 T=0、T=1标準的IC卡,也支持符合EMV3.1.1(Europay,MasterCard,VISA)标準的卡。與它Pin-to-Pin兼容的芯片還有ST公司生産的ST8020等。TDA8020有2個地址選擇引腳。本系統的地址引腳接地,兩個IC卡對應的地址分别爲0x40和0x48。I2C的時鍾信号和數據信号分别由89C51的P1.3和P1.4進行模拟,IC卡的數據通道I/OuC連89C51的P1.5和P1.6。TDA8020也採用LQFP-32裝封。
2.2 IC卡讀寫芯片的軟件設計
2.2.1 通信方式爲並行通信的CTS56I01
CST56I01隻有3根地址線,内部卻有37個寄存器。其中有8個寄存器可以直接訪問,另外的29個寄存器要通過索引地址寄存器(IAR)來訪問。其訪問分爲兩步:第一步是将要間接訪問的寄存器的地址寫到IAR寄存器中;第二步就是從數據寄存器(DR)中讀出數據或寫入數據到DR寄存器中,來完成對要間接訪問的寄存器的訪問。
下面的C51子程序是基於圖3的寫一個字節到要間接訪問的寄存器中的子程序。
#define SN2_IAR XBYTE[0x0000]
#define SN2_DR XBYTE[0x0100]
void WriteByteIndexed(BYTE bIndex, BYTE bData) {
P1.0=0;
SN2_IAR = bIndex;
SN2_DR = bData;
}
2.2.2 WatchCore的軟件設計
WatchCore是不帶硬件的UART,其串行通信是用軟件實時仿真的。通信速度採用9600bps;通信字節格式爲1位起始位,8位數據位,1位偶校驗位,2位停止位。TXD與RXD電氣信号是标準的CMOS電平,可直接與TTL的電路相連。以下是通信時的數據包格式。
(1)命令包
命令包是IC卡讀寫器内的CPU發往WatchCore的數據,其包格式如下:
NADPCBLENDATABCC
NAD爲卡頭選擇, NAD=0x00/0x12爲主卡頭,NAD=0x13爲從卡頭;
PCB與通信無關,CPU卡T=1時使用,PCB通常設置爲0x00;
LEN爲數據的字節長度(僅DATA段的字節數);
DATA爲發送WactchCore或IC卡内的命令(命令參考ISO7816-4的标準);
BCC爲異或校驗字節(BCC段前的4段所有字節的異或和)。
(2)數據包
數據包是WatchCore 收到命令包後返回的數據,其包格式如下:
NAD* 是WatchCore把命令包中NAD字節的高低4位互換後的返回。例如,命令包發送NAD=0x12,WatchCore則返回NAD*=0x21;
其它各段與命令包相同。
通信舉例(以下數據都用十六進制表示)
對主卡進行複位
發送命令包如下:
12 00 05 00 12 00 00 00 05
若主卡頭中無卡,則WatchCore返回:
21 00 02 62 00 41
若主卡頭有一張T=0的CPU卡,則可能返回:
21 00 11 3B 7A 18 00 00 21 08 11 12 13 14 15 16 17 18 90 00 D8
2.2.3 TDA8020的軟件設計
TDA8020與IFD内CPU的通信是用I2C總線方式進行的。通過I2C接口,IFD内的CPU可以向TDA8020發送命令或讀取TDA8020的狀态。TDA8020有兩個地址選擇引腳(SAD0和SAD1)。在圖3中,這兩個地址選擇引腳接地,對應兩個IC卡的I2C總線地址分别是40H和48H。如果系統中有别的I2C總線器件,可以按表2的方式進行尋址。
表2 TDA8020的I2C地址選擇表
SAD1 SAD0 CARD1 CARD2
0 0 40H 48H
0 1 42H 4AH
1 0 46H 4CH
1 1 48H 4EH
(1)向TDA8020寫入命令的格式
圖4爲向TDA8020寫入命令的格式。按圖3所示,對卡1的地址和寫的字節爲40H。
其中控制字節各位的含義如表3所列。
表3 命令控制字節各位的含義
名 稱位說 明
START和/STOP0爲1,産生一個冷複位的激活時序:爲0,産生一個釋放時序
WARM1爲1,産生一個熱複位時序
3/5V2爲1,設定卡的操作電壓爲3V;爲0,設定卡的操作電壓爲5V
PDOWN3爲1,設定卡爲下電模式;爲0,設定卡爲正常工作模式
CLKPD4爲1,設定下電模式下CLK停在高電平;爲0,設定下電模式下CLK停在低電平
CLKSEL15 兩位設定卡在正常工作模式時的工作時鍾頻率見表4
CLKSEL26
I/OEN7I/O使能位。爲1時,I/O與I/Ouc相連;爲0時,I/Ouc是高阻狀态
(2)讀TDA8020内部狀态的數據格式
從TDA8020讀出狀态的格式如圖5所示。按圖3所示,對卡1的地址和讀的字節爲41H。
其中狀态字節中各位的含義如表5所列。
表4 工作時鍾頻率選擇方式
CLKSEL2CLKSEL1CLOCK OU
00CLKIN/8
00CLKIN/4
10CLKIN/2
11CLKIN
表5 狀态字節各位的含義
名 稱位說 明
PRES0卡的狀态指示。爲1時,檢測到卡:爲0時,沒有檢測到卡
PRESL1爲1時,卡的狀态還沒有讀;當爲0時,卡的狀态已讀出
I/O2I/O爲高時,這位爲1;當I/O爲低時,這位爲0
SUPL3爲1時,表示電源監控器已輸出,上電後就爲1,直到讀出後爲0
PROT4爲1時,表示過熱或過載狀态
MUTE5爲1時表示卡在規定的時間内沒有發出ATR信号
EARLY6爲1時表示卡在規定的時間前就已經發出ATR信号
ACTIVE7爲1時,卡處於激活狀态;爲0時,卡處於釋放狀态
3 總 結
以上比較詳細地介紹瞭三種不同接口的IC卡讀寫芯片。這三種方式大的區别在於其與IFD内的CPU的通信方式不一樣,並且也都符合ISO/IEC7816的标準。但是,這三個讀寫芯片有一些地方也存在一些差異。
TDA8020支持A類和B類卡,但是WatchCore和SNIPER II CST56I01隻支持A類卡。(雖然SNIPER II CST56I01内部寄存器中有一位是卡類選擇,但卻隻支持A類卡。)
TDA8020和SNIPER II CST56I01其ESD保護達6kV,但是WatchCore卻沒有ESD保護功能。
TDA8020對卡的電源可以直接支持,並有過流保護功能;但是WatchCore和SNIPER II CST56I01卻隻有通過一個功放管來實現,並且沒有過流保護功能,隻有外接保護電路(如加可複位保險絲)。
就其接口方式來說,I2C總線的TDA8020和串口的WatchCore雖然與IC卡讀寫器内的CPU的連接方便,但是一般CPU沒有多餘的串口和I2C總線接口給這兩個芯片,一般要用通用I/O口來模拟串口和I2C總線接口才能進行通信。而SNIPER II CST56I01與IFD内的CPU的並行通信雖然連接線較多,但其相應的軟件就方便多瞭。
綜上所述,這三個IC卡讀寫芯片各有不同,在實現應用的過程中,隻有根據不同的資源情況來選用不同的讀寫芯片。
(本文轉自電子工程世界:http://news.eeworld.com.cn/qrs/2012/0116/article_8481_3.html)

