二、傳輸協議(ISO14443-4)(8,P50 11,P30)
1、選擇應答請求(RATS)
使用RATS命令和PICC協商通訊的最大幀長度(FSD和FSC)、幀等待時間(FWT)和啟動幀保護時間(SFGT)。
RATS命令使用帶有CRC_A的標准幀進行傳輸
格式 開始字節+參數(FSDI和CID)(1個字節) +CRCA16
(1)開始字節 E0
參數高4位 FSDI,它用於編碼FSD。FSD定義了PCD能收到的幀的最大長度。 一般為5,64字節
低4位 CID ,它定義編址了的PICC的邏輯號在0到14范圍內。值15為RFU。
CID由PCD規定,並且對同一時刻處在ACTIVE狀態中的所有PICC,它應是唯一的。
CID在PICC被激活期間是固定的,並且PICC應使用CID作為其邏輯標識符,它包含在接收到的第一個無差錯的RATS。
PCD設置CID為0表示每次僅支持對一張PICC進行定位。一般為1,
所這參數這個字節普通設置為51。
注意:第十一部分 P30 PCD應設置FSDI為FSDIMIN。FSDIMIN的取值見附錄A ,FSDIMIN值為8,即為256字節,PCD的FIFO的長度一般為64字節,此處為什么要設置成8??
一般設置成51。
2、RATS響應(ATS)
ATS使用帶有CRC_A的標准幀進行傳輸
(1)長度字節TL
長度字節TL是必備的,它規定了ATS(包括TL自身)的長度,不包括兩個CRC_A字節。
(2)格式字節T0 當長度大於1時便出現,
b8 為0
b7 為1時代表TC(1)被傳輸
b6 為1時,代表TB(1)被傳輸
b5 為1時,代表TA(1)被傳輸
b4~b1 FSCI編碼,定義了PICC能接收的幀的最大長度。FSCI的缺省值為2 即32字節
(3)TA(1) 接口字節
傳送了PICC支持的位速率能力信息
最高有效位b8編碼了為每個方向處理不同除數的可能性。當該位被置為1時,PICC不能為每個方向處理不同除數;
如果b8=1,則僅支持兩個方向上相同的位速率除數D((DPICC→PCD) = (DPCD→PICC))如果b8=0,則支持每個方向上不同的位速率除數D應為1
—位b7到b5為PICC到PCD方向編碼了PICC的位速率能力,稱為DS。缺省值應為(000)b;
——位b4被置為(0)b,其他值為RFU;
—位b3到b1為PCD到PICC方向編碼了PICC的位速率能力,稱為DR。缺省值應為(000)b。
(4)接口字節TB(1)
傳送了定義幀等待時間(FWT)和啟動幀保護時間(SFGT)的信息。
(5)接口字節TC(1)
指出PICC是否支持NAD和CID
——最高有效位b8到b3為000000b,所有其他值為RFU;
——位b2和b1定義了在PICC支持的開端字段中的可選字段。允許PCD跳過已被指出被PICC支持的字段,但PICC不支持的字段應不被PCD傳輸。缺省值應為(10)b,它指出支持CID和不支持NAD。
(6)歷史字節:
歷史字節T1到Tk是可選的並包含了通用信息。ATS的最大長度給出了歷史字節的最大可能數目15個字節。
3、半雙工塊傳輸協議
半雙工塊傳輸協議符合無觸點卡環境的特殊需要
塊格式,由一個頭域(必備)、一個信息域(可選)和一個尾域(必備)組成
PCD發送的塊的總長度應小於或等於FSC(FSC在協議安裝時由PICC指定)
(1) 頭域
最多由三個字節構成:協議控制字節PCB(必備); 卡標識符CID(可選); 結點地址NAD(可選)。
(2)協議控制字節域PCB
PCB用於傳送控制數據傳輸所需要的信息。
協議定義了塊的三種基本類型:
——用於為應用層的使用傳送信息的信息塊(I-塊);
——用於傳送確認或不確認的接收准備塊(R-塊)。R-塊不包含INF域。確認涉及最后接收到的塊;
——用於在PCD和PICC間交換控制信息的管理塊(S-塊)。兩種不同類型的S-塊定義如下:
● 包含1字節長INF域的等待時間延遲,和
● 不包含INF域的DESELECT
(3)卡標識符CID
CID域用於識別特定的PICC,它由三部分組成:
——最高有效位b8,b7用於從PICC到PCD的功率水平指示。對於PCD到PICC的通信,這兩位應被置為0。、
——位b6和b5用於傳送附加信息,它沒有被定義並應置為(00)b,所有其他值為RFU;
——位b4到b1編碼CID。
(4)結點地址域NAD
在頭域里的NAD被保存用於建立和編址不同的邏輯連接。當位b8和b4被置為0時
下列定義應適用NAD的用途:
——NAD域應僅用於I-塊;
——當PCD使用NAD時,PICC也應使用NAD;
——在鏈接期間,NAD僅在鏈的第一個塊內傳輸;
——PCD應不使用NAD編址不同的PICC(CID應被用於編址不同的PICC);
——當PCD不支持NAD時,應忽略任何包含NAD的塊。
(5)信息域
信息域是可選的。當出現在I塊中時,信息域傳送的是應用數據,當出現在S塊中時,它傳送的是非應用數據和狀態信息。信息域的長度可以通過計算整個塊的長度減去頭域和尾域的長度來得到。
(6)尾域
該域包含傳輸塊的EDC。EDC為第7章中定義的CRC。
每個設置鏈接位的I塊必須用R(ACK)塊確認
當PCD發送一組鏈接的I塊,每個指示了鏈接的塊的大小應等於FSC
(7)幀等待時間(FWT)
FWT給PICC定義了在PCD幀結束后開始其響應幀的最大時間
注:在任何方向上兩個幀之間的最小時間在第7章中定義。 FWT通過下面的公式計算: FWT=(256×16/fc)×2FWI
其中FWI的值在0到14之間,15為RFU。對於Type A,若TB(1)被省略,則FWI的缺省值為4,
給出的FWT值約為4.8ms。
對於FWI=0,FWT= FWTMIN (~302μs)
對於FWI=14,FWT= FWTMAX (~4949μs)
FWT應用於檢測傳輸差錯或無響應的PICC。如果來自PICC的響應的開始沒有在FWT內被接收到,則PCD收回發送的權利。
(8)幀等待時間擴展
當PICC需要比定義的FWT更多的時間用於處理接收到的塊時,應使用S(WTX)請求等待時間擴展。S(WTX)請求包含1字節長INF域,它由兩部分組成(見圖57):
——最高有效位b8,b7編碼功率水平指示(見8.3.4);
——最低有效位b6到b1編碼WTXM。WTXM在1到59范圍內編碼。值0和60到63為RFU。
PCD應通過發送包含1字節長INF域的S(WTX)來確認,該INF域由兩部分組成,並包含了與在請求中接收到的相同的WTXM:
——最高有效位b8,b7為(00)b,所有其他值為RFU;
——最低有效位b6到b1編碼了用於定義臨時FWT的確認的WTXM值。
FWT的響應的臨時值通過下面的公式計算: FWTTEMP= FWT×WTXM PICC需要的時間FWTTEMP在PCD發送了S(WTX)響應之后開始。 當公式得出的結果大於FWTMAX時,應該使用FWTMAX。 臨時FWT僅在下一個塊被PCD接收到時才應用
(9)功率水平指示
功率水平指示通過使用插入在CID(當存在時)中的兩位來編碼,並在S-塊中被PICC發送
(00)b PICC不支持功率水平指示
(01)b 對於完整功能性,功率不充分
(10)b 對於完整功能性,功率充分
(11)b 對於完整功能性,功率超出
4、協議操作
(1)多激活
多激活特征允許PCD保持幾個PICC同時在ACTIVE狀態。對於停活PICC和激活另一張PICC,這允許幾個PICC間直接轉換而無須另外的時間。多激活的舉例見附錄G。
注:對每個已激活的PICC,PCD需要處理分離的塊號。
(2)鏈接
鏈接過程允許PCD或PICC通過把信息划分成若干塊來傳輸不符合分別由FSC或FSD定義的單塊的信息。每一塊的長度應分別小於或等於FSC或FSD。 塊的鏈接通過鏈接I-塊中PCB的位(M)來控制。每一個帶鏈接位集的I-塊應被R-塊確認。
注:本例沒有使用可選字段NAD和CID。
5、塊處理規則
一般規則
規則1:首塊應由PCD來發送。
規則2:當I-塊指示鏈接已被接收到時,塊應由R(ACK)塊來確認。
規則3:S-塊僅成對使用。S(…)請求塊總是跟隨着S(…)響應塊(見8.3.3和8.4)。
6、PCD規則
規則4:當接收到無效塊或FWT超時,則R(NAK)塊被發送(PCD鏈接或S(DESELECT)情況除外)。
規則5:在PICC鏈接的情況下,當接收到無效塊或FWT超時,R(ACK)塊被發送。
規則6:當接收到R(ACK)塊,如果其塊號不等於PICC的當前塊號,則最后的I-塊被重新傳送。
規則7:當接收到R(ACK)塊,如果其塊號等於PCD的當前塊號,則繼續鏈接。
規則8:如果S(DESELECT)請求沒有被無差錯S(DESELECT)響應進行回答,則S(DESELECT)請求可以被重新傳送或PICC可以被忽視。
7、PICC規則
規則9:允許PICC發送S(WTX)塊而不發送I-塊或R(ACK)塊。
規則10:當I-塊沒有指示鏈接已被接收到時,塊應由I-塊來確認。
規則11:當接收到R(ACK)塊或R(NAK)塊,如果其塊號等於PICC的當前塊號,則最后的塊被重新傳送。
規則12:當接收到R(NAK)塊,如果其塊號不等於PICC的當前塊號,則R(ACK)塊被發送。 規則13:當接收到R(ACK)塊,如果其塊號不等於PICC的當前塊號,則繼續鏈接。
8、差錯檢測和恢復
當檢測到差錯時,應試圖使用下列恢復規則。本章中的定義支配塊處理規則(見8.3.5.3)。 下列差錯應被PCD檢測到: a)傳輸差錯(幀差錯或EDC差錯)或FWT超時 PCD應試圖通過以下順序示出的技術進行差錯恢復:
——塊的重新傳輸(可選);
——S(DESELECT)請求的使用;
——忽視PICC。
b)協議差錯(違反了PCB編碼或違反了協議規則) PCD應試圖通過以下順序示出的技術進行差錯恢復:
——S(DESELECT)請求的使用;
——忽視PICC。
當PCD發送了S(DESELECT)請求並接收到了S(DESELECT)響應,則PICC已被成功地置為了HALT狀態並且分配給它的CID也被釋放。 當PCD沒有接收到S(DESELECT)響應,則PCD可以重新進行停活序列。