智能卡接口控制器(SIM)ATR應(yīng)答
文章出處:http://m.overnightmodel.com 作者: 人氣: 發(fā)表時間:2012年05月06日
ISO7816 標(biāo)準(zhǔn)是個標(biāo)準(zhǔn)的半雙工接口,本模塊作為主設(shè)備,控制SIM卡的操作,SIM卡作為從設(shè)備只有在兩種情況下產(chǎn)生應(yīng)答信號:收到RST 信號后發(fā)送ATR、接到命令后應(yīng)答。
因此,SIM 卡驅(qū)動模塊作為主設(shè)備,主要完成兩個操作:發(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ù),這個交換通過ISO7816規(guī)定的ATR協(xié)議來完成。ATR協(xié)議通過SIM模塊對sim_rst信號的控制來實現(xiàn).
SIM卡有可能會在sim_rst為低期間或sim_rst為高期間返回應(yīng)答信號。如果sim_rst保持高電平40000個sim_clk周期后仍然沒有收到SIM卡的ATR應(yīng)答信號,則表明SIM不存在或者傳輸通道有問題。
SIM卡返回的ATR應(yīng)答信號的第一個字符表示SIM卡支持傳輸方式是直接模式還是反轉(zhuǎn)模式,這個字符定義為初始字符。如果SIM返回的是11011100,則表示SIM卡支持直接模式;如果SIM卡返回的是11000000,則表示SIM卡支持的是反轉(zhuǎn)模式。
根據(jù)定義,復(fù)位應(yīng)答是一系列字節(jié)的值,這些字節(jié)是由卡作為對復(fù)位命令的響應(yīng)發(fā)送給接口設(shè)備的。在I/O電路上,每個字節(jié)在一個異步字符中傳輸。
每個成功的復(fù)位操作都會導(dǎo)致I/O上的一個初始字符TS,TS后面按照下面的次序跟有最多32個字符:
T0…………………………………………格式字符,強制性
TA(i) TB(i) TC(i) TD(i)…………… 接口字符,可選的
T1 T2…Tk…………………………………歷史字符,可選的
Tck……………………………………… 檢測字符,有條件的
•初始字符定義了所有后繼字符的解碼協(xié)議。。
•格式字符聲明了第一組接口字符和所有歷史字符。
•接口字符由格式字符聲明的位圖技術(shù)來指明。
•歷史字符由編碼在格式字符中的一個數(shù)字來指明。
•校檢字符依賴于某些接口字符中參數(shù)T的值。
為了表示簡明,以下用[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)SIM模塊準(zhǔn)備ATR接收時,可以先通過SIM_CNTL寄存器的ICM比特將接收機設(shè)置初始字符檢測模式。然后SIM模塊會根據(jù)收到的初始字符,自動調(diào)整接收方式,并自動改變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,傳輸時先傳輸LSB,最后傳輸MSB
T0( The Format character ) = FA
--表示接口字符的個數(shù)和歷史字節(jié)的數(shù)量
----其高4位有幾個bit為1,則表示后續(xù)有幾個歷史字符(Historical bytes)
高4位 = f( 1 1 1 1 )表示后續(xù)字符中存在TA1 TB1 TC1 TD1
--------------------( TA1, TB1, TC1, TA2, TB2 是全局接口字符,TC2是專用接口字符 )
TA1 = 13
--表示有增強的波特率,公式 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 |
+-------------+--------+--------+--------+--------+--------+--------+--------+--------+
| 最高時鐘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 |
+-------------+--------+--------+--------+--------+--------+--------+--------+--------+
| 最高時鐘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 |
+-------------+--------+--------+--------+--------+--------+--------+--------+--------+
--------實際波特率為 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
----額外保護時間N = 0
TD1 = 81
----通訊協(xié)議 T = 1
--------------------
沒有TA2
沒有TB2
沒有TC2
TD2 = 31
--------------------
TA3 = FE
TB3 = 45
沒有TC3
沒有TD3
4A 43 4F 50 34 31 56 32 32 31
----是歷史字節(jié)
TCK ( XOR T0 - TCK ) = 96 校驗成功
ETU(Elementary Time Unit)
一個ETU的時間可以由軟件選定,在ISO7816標(biāo)準(zhǔn)中規(guī)定了幾個ETU傳輸時間的標(biāo)準(zhǔn)規(guī)格,其中標(biāo)準(zhǔn)時間為372個sim_clk時鐘,另外還有一些增強速率的時間。SIM模塊支持所有的ISO7816規(guī)定的ETU模式。
每幀數(shù)據(jù)采用Byte字符方式,一個Byte由8比特組成。每幀的傳輸由起始位、 字符數(shù)據(jù)(8位)、校驗位和停止位組成,其中起始位為一個ETU(Elementary Time Unit)的低電平,數(shù)據(jù)位占用8個ETU的時間,校驗位占用一個ETU的時間,停止位比特為高電平,占用2個ETU的時間。
ISO7816協(xié)議中還規(guī)定了一種緊湊的傳輸方式,此時停止比特只有1位,一個數(shù)據(jù)幀包含11個ETU,可以通過SIM_GUARD寄存器的RCVR11來配置SIM模塊支持這種傳輸方式。
FIFO不是寄存器,而是通過寄存器寫入的, FIFO是16*8, 但發(fā)送緩沖寄存器(SIM_XMT_BUF)是8位.