智能卡接口控制器(SIM)ATR應(yīng)答
文章出處:http://56733.cn 作者: 人氣: 發(fā)表時(shí)間:2012年05月06日
ISO7816 標(biāo)準(zhǔn)是個(gè)標(biāo)準(zhǔn)的半雙工接口,本模塊作為主設(shè)備,控制SIM卡的操作,SIM卡作為從設(shè)備只有在兩種情況下產(chǎn)生應(yīng)答信號(hào):收到RST 信號(hào)后發(fā)送ATR、接到命令后應(yīng)答。
因此,SIM 卡驅(qū)動(dòng)模塊作為主設(shè)備,主要完成兩個(gè)操作:發(fā)送RST 等待ATR,發(fā)送命令并等待SIM 卡的應(yīng)答。
TX, XMT, 發(fā)送transmit
RX, RCV, 接收Receive
ATR(answer to reset) 復(fù)位應(yīng)答
SIM模塊和SIM卡建立初始通信需要交換一些協(xié)議數(shù)據(jù),這個(gè)交換通過(guò)ISO7816規(guī)定的ATR協(xié)議來(lái)完成。ATR協(xié)議通過(guò)SIM模塊對(duì)sim_rst信號(hào)的控制來(lái)實(shí)現(xiàn).
SIM卡有可能會(huì)在sim_rst為低期間或sim_rst為高期間返回應(yīng)答信號(hào)。如果sim_rst保持高電平40000個(gè)sim_clk周期后仍然沒(méi)有收到SIM卡的ATR應(yīng)答信號(hào),則表明SIM不存在或者傳輸通道有問(wèn)題。
SIM卡返回的ATR應(yīng)答信號(hào)的第一個(gè)字符表示SIM卡支持傳輸方式是直接模式還是反轉(zhuǎn)模式,這個(gè)字符定義為初始字符。如果SIM返回的是11011100,則表示SIM卡支持直接模式;如果SIM卡返回的是11000000,則表示SIM卡支持的是反轉(zhuǎn)模式。
根據(jù)定義,復(fù)位應(yīng)答是一系列字節(jié)的值,這些字節(jié)是由卡作為對(duì)復(fù)位命令的響應(yīng)發(fā)送給接口設(shè)備的。在I/O電路上,每個(gè)字節(jié)在一個(gè)異步字符中傳輸。
每個(gè)成功的復(fù)位操作都會(huì)導(dǎo)致I/O上的一個(gè)初始字符TS,TS后面按照下面的次序跟有最多32個(gè)字符:
T0…………………………………………格式字符,強(qiáng)制性
TA(i) TB(i) TC(i) TD(i)…………… 接口字符,可選的
T1 T2…Tk…………………………………歷史字符,可選的
Tck……………………………………… 檢測(cè)字符,有條件的
•初始字符定義了所有后繼字符的解碼協(xié)議。。
•格式字符聲明了第一組接口字符和所有歷史字符。
•接口字符由格式字符聲明的位圖技術(shù)來(lái)指明。
•歷史字符由編碼在格式字符中的一個(gè)數(shù)字來(lái)指明。
•校檢字符依賴于某些接口字符中參數(shù)T的值。
為了表示簡(jiǎn)明,以下用[TS] T0 TA(i)…T1…Tck表示字節(jié)及傳送字節(jié)的字符。
例:ATR: 3b | 6c | 0 0 | 4e 54 49 43 32 64 8 1 4a 3 0 0
ATR-ATlength:16
SIM模塊支持自動(dòng)初始字符檢測(cè)。當(dāng)SIM模塊準(zhǔn)備ATR接收時(shí),可以先通過(guò)SIM_CNTL寄存器的ICM比特將接收機(jī)設(shè)置初始字符檢測(cè)模式。然后SIM模塊會(huì)根據(jù)收到的初始字符,自動(dòng)調(diào)整接收方式,并自動(dòng)改變SIM_CNTL寄存器的傳輸模式IC比特。
Reset
3B FA 13 00 00 81 31 FE 45 4A 43 4F 50 34 31 56 32 32 31 96
復(fù)位應(yīng)答 ATR
Reset
3B FA 13 00 00 81 31 FE 45 4A 43 4F 50 34 31 56 32 32 31 96
復(fù)位應(yīng)答 ATR
TS( The Initial character ) = 3B
--表示正向約定,高電平為1,低電平為0,傳輸時(shí)先傳輸LSB,最后傳輸MSB
T0( The Format character ) = FA
--表示接口字符的個(gè)數(shù)和歷史字節(jié)的數(shù)量
----其高4位有幾個(gè)bit為1,則表示后續(xù)有幾個(gè)歷史字符(Historical bytes)
高4位 = f( 1 1 1 1 )表示后續(xù)字符中存在TA1 TB1 TC1 TD1
--------------------( TA1, TB1, TC1, TA2, TB2 是全局接口字符,TC2是專用接口字符 )
TA1 = 13
--表示有增強(qiáng)的波特率,公式 3571200 / ( Fi / Di )
--------其中Fi由TA1的高4位(F)查表得出,Di由TA1的低4位(D)查表得出
----F = 01 ,查下表,則Fi = 372
+-------------+--------+--------+--------+--------+--------+--------+--------+--------+
| F | 0000 | 0001 | 0010 | 0011 | 0100 | 0101 | 0110 | 0111 |
+-------------+--------+--------+--------+--------+--------+--------+--------+--------+
| Fi | 372 | 372 | 558 | 744 | 1116 | 1488 | 1860 | RFU |
+-------------+--------+--------+--------+--------+--------+--------+--------+--------+
| 最高時(shí)鐘MHZ | 4 | 5 | 6 | 8 | 12 | 16 | 20 | -- |
+-------------+--------+--------+--------+--------+--------+--------+--------+--------+
| F | 1000 | 1001 | 1010 | 1011 | 1100 | 1101 | 1110 | 1111 |
+-------------+--------+--------+--------+--------+--------+--------+--------+--------+
| Fi | RFU | 512 | 768 | 1024 | 1536 | 2048 | RFU | RFU |
+-------------+--------+--------+--------+--------+--------+--------+--------+--------+
| 最高時(shí)鐘MHZ | -- | 5 | 7.5 | 10 | 15 | 20 | -- | -- |
+-------------+--------+--------+--------+--------+--------+--------+--------+--------+
----D = 03 ,查下表,則Di = 4
+-------------+--------+--------+--------+--------+--------+--------+--------+--------+
| D | 0000 | 0001 | 0010 | 0011 | 0100 | 0101 | 0110 | 0111 |
+-------------+--------+--------+--------+--------+--------+--------+--------+--------+
| Di | RFU | 1 | 2 | 4 | 8 | 16 | 1860 | RFU |
+-------------+--------+--------+--------+--------+--------+--------+--------+--------+
| D | 1000 | 1001 | 1010 | 1011 | 1100 | 1101 | 1110 | 1111 |
+-------------+--------+--------+--------+--------+--------+--------+--------+--------+
| Di | RFU | 512 | 768 | 1024 | 1536 | 2048 | RFU | RFU |
+-------------+--------+--------+--------+--------+--------+--------+--------+--------+
--------實(shí)際波特率為 38400
TB1 = 00
----表示編程電流 I /電壓 P,高2位表示電流I,低6位表示電壓P
----高2位 = 00 ,則編程電流 I 如下
+-------+--------+--------+--------+--------+
| 高2位 | 00 | 01 | 10 | 11 |
+-------+--------+--------+--------+--------+
| 電流I | 25 | 50 | RFU | RFU |
+-------+--------+--------+--------+--------+
----低6位 = 00 ,則編程 P 電壓為0
TC1 = 00
----額外保護(hù)時(shí)間N = 0
TD1 = 81
----通訊協(xié)議 T = 1
--------------------
沒(méi)有TA2
沒(méi)有TB2
沒(méi)有TC2
TD2 = 31
--------------------
TA3 = FE
TB3 = 45
沒(méi)有TC3
沒(méi)有TD3
4A 43 4F 50 34 31 56 32 32 31
----是歷史字節(jié)
TCK ( XOR T0 - TCK ) = 96 校驗(yàn)成功
ETU(Elementary Time Unit)
一個(gè)ETU的時(shí)間可以由軟件選定,在ISO7816標(biāo)準(zhǔn)中規(guī)定了幾個(gè)ETU傳輸時(shí)間的標(biāo)準(zhǔn)規(guī)格,其中標(biāo)準(zhǔn)時(shí)間為372個(gè)sim_clk時(shí)鐘,另外還有一些增強(qiáng)速率的時(shí)間。SIM模塊支持所有的ISO7816規(guī)定的ETU模式。
每幀數(shù)據(jù)采用Byte字符方式,一個(gè)Byte由8比特組成。每幀的傳輸由起始位、 字符數(shù)據(jù)(8位)、校驗(yàn)位和停止位組成,其中起始位為一個(gè)ETU(Elementary Time Unit)的低電平,數(shù)據(jù)位占用8個(gè)ETU的時(shí)間,校驗(yàn)位占用一個(gè)ETU的時(shí)間,停止位比特為高電平,占用2個(gè)ETU的時(shí)間。
ISO7816協(xié)議中還規(guī)定了一種緊湊的傳輸方式,此時(shí)停止比特只有1位,一個(gè)數(shù)據(jù)幀包含11個(gè)ETU,可以通過(guò)SIM_GUARD寄存器的RCVR11來(lái)配置SIM模塊支持這種傳輸方式。
FIFO不是寄存器,而是通過(guò)寄存器寫(xiě)入的, FIFO是16*8, 但發(fā)送緩沖寄存器(SIM_XMT_BUF)是8位.