PCB
LEN
DATA
BCC
NAD為卡頭選擇, NAD=0x00/0x12為主卡頭,NAD=0x13為從卡頭;
PCB與通信無(wú)關(guān),CPU卡T=1時(shí)使用,PCB通常設(shè)置為0x00;
LEN為數(shù)據(jù)的字節(jié)長(zhǎng)度(僅DATA段的字節(jié)數(shù));
DATA為發(fā)送WactchCore或IC卡內(nèi)的命令(命令參考ISO7816-4的標(biāo)準(zhǔn));
BCC為異或校驗(yàn)字節(jié)(BCC段前的4段所有字節(jié)的異或和)。
(2)數(shù)據(jù)包
數(shù)據(jù)包是WatchCore 收到命令包后返回的數(shù)據(jù),其包格式如下:
NAD* 是WatchCore把命令包中NAD字節(jié)的高低4位互換后的返回。例如,命令包發(fā)送NAD=0x12,WatchCore則返回NAD*=0x21;
其它各段與命令包相同。
通信舉例(以下數(shù)據(jù)都用十六進(jìn)制表示)
對(duì)主卡進(jìn)行復(fù)位
發(fā)送命令包如下:
12 00 05 00 12 00 00 00 05
若主卡頭中無(wú)卡,則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的軟件設(shè)計(jì)
TDA8020與IFD內(nèi)CPU的通信是用I2C總線方式進(jìn)行的。通過(guò)I2C接口,IFD內(nèi)的CPU可以向TDA8020發(fā)送命令或讀取TDA8020的狀態(tài)。TDA8020有兩個(gè)地址選擇引腳(SAD0和SAD1)。在圖3中,這兩個(gè)地址選擇引腳接地,對(duì)應(yīng)兩個(gè)IC卡的I2C總線地址分別是40H和48H。如果系統(tǒng)中有別的I2C總線器件,可以按表2的方式進(jìn)行尋址。
表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所示,對(duì)卡1的地址和寫的字節(jié)為40H。
其中控制字節(jié)各位的含義如表3所列。
表3 命令控制字節(jié)各位的含義
名 稱 位 說(shuō) 明
START和/STOP 0 為1,產(chǎn)生一個(gè)冷復(fù)位的激活時(shí)序:為0,產(chǎn)生一個(gè)釋放時(shí)序
WARM 1 為1,產(chǎn)生一個(gè)熱復(fù)位時(shí)序
3/5V 2 為1,設(shè)定卡的操作電壓為3V;為0,設(shè)定卡的操作電壓為5V
PDOWN 3 為1,設(shè)定卡為下電模式;為0,設(shè)定卡為正常工作模式
CLKPD 4 為1,設(shè)定下電模式下CLK停在高電平;為0,設(shè)定下電模式下CLK停在低電平
CLKSEL1 5 兩位設(shè)定卡在正常工作模式時(shí)的工作時(shí)鐘頻率見(jiàn)表4
CLKSEL2 6
I/OEN 7 I/O使能位。為1時(shí),I/O與I/Ouc相連;為0時(shí),I/Ouc是高阻狀態(tài)
(2)讀TDA8020內(nèi)部狀態(tài)的數(shù)據(jù)格式
從TDA8020讀出狀態(tài)的格式如圖5所示。按圖3所示,對(duì)卡1的地址和讀的字節(jié)為41H。
其中狀態(tài)字節(jié)中各位的含義如表5所列。
表4 工作時(shí)鐘頻率選擇方式
CLKSEL2 CLKSEL1 CLOCK OU
0 0 CLKIN/8
0 0 CLKIN/4
1 0 CLKIN/2
1 1 CLKIN
表5 狀態(tài)字節(jié)各位的含義
名 稱 位 說(shuō) 明
PRES 0 卡的狀態(tài)指示。為1時(shí),檢測(cè)到卡:為0時(shí),沒(méi)有檢測(cè)到卡
PRESL 1 為1時(shí),卡的狀態(tài)還沒(méi)有讀;當(dāng)為0時(shí),卡的狀態(tài)已讀出
I/O 2 I/O為高時(shí),這位為1;當(dāng)I/O為低時(shí),這位為0
SUPL 3 為1時(shí),表示電源監(jiān)控器已輸出,上電后就為1,直到讀出后為0
PROT 4 為1時(shí),表示過(guò)熱或過(guò)載狀態(tài)
MUTE 5 為1時(shí)表示卡在規(guī)定的時(shí)間內(nèi)沒(méi)有發(fā)出ATR信號(hào)
EARLY 6 為1時(shí)表示卡在規(guī)定的時(shí)間前就已經(jīng)發(fā)出ATR信號(hào)
ACTIVE 7 為1時(shí),卡處于激活狀態(tài);為0時(shí),卡處于釋放狀態(tài)
3 總 結(jié)
以上比較詳細(xì)地介紹了三種不同接口的IC卡讀寫芯片。這三種方式最大的區(qū)別在于其與IFD內(nèi)的CPU的通信方式不一樣,并且也都符合ISO/IEC7816的標(biāo)準(zhǔn)。但是,這三個(gè)讀寫芯片有一些地方也存在一些差異。
TDA8020支持A類和B類卡,但是WatchCore和SNIPER II CST56I01只支持A類卡。(雖然SNIPER II CST56I01內(nèi)部寄存器中有一位是卡類選擇,但卻只支持A類卡。)
TDA8020和SNIPER II CST56I01其ESD保護(hù)達(dá)6kV,但是WatchCore卻沒(méi)有ESD保護(hù)功能。
TDA8020對(duì)卡的電源可以直接支持,并有過(guò)流保護(hù)功能;但是WatchCore和SNIPER II CST56I01卻只有通過(guò)一個(gè)功放管來(lái)實(shí)現(xiàn),并且沒(méi)有過(guò)流保護(hù)功能,只有外接保護(hù)電路(如加可復(fù)位保險(xiǎn)絲)。
就其接口方式來(lái)說(shuō),I2C總線的TDA8020和串口的WatchCore雖然與IC卡讀寫器內(nèi)的CPU的連接方便,但是一般CPU沒(méi)有多余的串口和I2C總線接口給這兩個(gè)芯片,一般要用通用I/O口來(lái)模擬串口和I2C總線接口才能進(jìn)行通信。而SNIPER II CST56I01與IFD內(nèi)的CPU的并行通信雖然連接線較多,但其相應(yīng)的軟件就方便多了。
綜上所述,這三個(gè)IC卡讀寫芯片各有不同,在實(shí)現(xiàn)應(yīng)用的過(guò)程中,只有根據(jù)不同的資源情況來(lái)選用不同的讀寫芯片





