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