接觸式IC卡接口原理與不同實現(xiàn)方式對比
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發(fā)送命令或讀取TDA8020的狀態(tài)。TDA8020有兩個地址選擇引腳(SAD0和SAD1)。在圖3中,這兩個地址選擇引腳接地,對應兩個IC卡的I2C總線地址分別是40H和48H。如果系統(tǒng)中有別的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的地址和寫的字節(jié)為40H。
其中控制字節(jié)各位的含義如表3所列。
表3 命令控制字節(jié)各位的含義
名 稱 | 位 | 說 明 |
START和/STOP | 0 | 為1,產(chǎn)生一個冷復位的激活時序:為0,產(chǎn)生一個釋放時序 |
WARM | 1 | 為1,產(chǎn)生一個熱復位時序 |
3/5V | 2 | 為1,設定卡的操作電壓為3V;為0,設定卡的操作電壓為5V |
PDOWN | 3 | 為1,設定卡為下電模式;為0,設定卡為正常工作模式 |
CLKPD | 4 | 為1,設定下電模式下CLK停在高電平;為0,設定下電模式下CLK停在低電平 |
CLKSEL1 | 5 | 兩位設定卡在正常工作模式時的工作時鐘頻率見表4 |
CLKSEL2 | 6 | |
I/OEN | 7 | I/O使能位。為1時,I/O與I/Ouc相連;為0時,I/Ouc是高阻狀態(tài) |
(2)讀TDA8020內部狀態(tài)的數(shù)據(jù)格式
從TDA8020讀出狀態(tài)的格式如圖5所示。按圖3所示,對卡1的地址和讀的字節(jié)為41H。
其中狀態(tài)字節(jié)中各位的含義如表5所列。
表4 工作時鐘頻率選擇方式
CLKSEL2 | CLKSEL1 | CLOCK OU |
0 | 0 | CLKIN/8 |
0 | 0 | CLKIN/4 |
1 | 0 | CLKIN/2 |
1 | 1 | CLKIN |
表5 狀態(tài)字節(jié)各位的含義
名 稱 | 位 | 說 明 |
PRES | 0 | 卡的狀態(tài)指示。為1時,檢測到卡:為0時,沒有檢測到卡 |
PRESL | 1 | 為1時,卡的狀態(tài)還沒有讀;當為0時,卡的狀態(tài)已讀出 |
I/O | 2 | I/O為高時,這位為1;當I/O為低時,這位為0 |
SUPL | 3 | 為1時,表示電源監(jiān)控器已輸出,上電后就為1,直到讀出后為0 |
PROT | 4 | 為1時,表示過熱或過載狀態(tài) |
MUTE | 5 | 為1時表示卡在規(guī)定的時間內沒有發(fā)出ATR信號 |
EARLY | 6 | 為1時表示卡在規(guī)定的時間前就已經(jīng)發(fā)出ATR信號 |
ACTIVE | 7 | 為1時,卡處于激活狀態(tài);為0時,卡處于釋放狀態(tài) |
3 總 結
以上比較詳細地介紹了三種不同接口的IC卡讀寫芯片。這三種方式最大的區(qū)別在于其與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卻只有通過一個功放管來實現(xiàn),并且沒有過流保護功能,只有外接保護電路(如加可復位保險絲)。
就其接口方式來說,I2C總線的TDA8020和串口的WatchCore雖然與IC卡讀寫器內的CPU的連接方便,但是一般CPU沒有多余的串口和I2C總線接口給這兩個芯片,一般要用通用I/O口來模擬串口和I2C總線接口才能進行通信。而SNIPER II CST56I01與IFD內的CPU的并行通信雖然連接線較多,但其相應的軟件就方便多了。
綜上所述,這三個IC卡讀寫芯片各有不同,在實現(xiàn)應用的過程中,只有根據(jù)不同的資源情況來選用不同的讀寫芯片。
評論