ISO14443-3

PBOC第八部分和第十一部分關於TYPEA總結(一)

——初始化和防衝突(ISO14443-3)

第八部分 與應用無關的非接觸式規範 ISO14443(1~4)

第十一部分 非接觸式IC卡通訊規範

在第八部分的基礎上,詳細規定了非接觸式設備和非接觸式卡片之間無線通訊協議的有關要求。

PBOC規範,因爲不同單位所寫,規範中各部分會有重疊和衝突,這篇文檔對第八部分和第十一部分進行總結,此部分作用可用於對PCD(讀卡器)和PICC(IC卡)數據通訊的底層編寫(關於TYPEA協議部分)。

一、初始化和防衝突(ISO14443-3)

1、幀格式(8,P22 11,P19)

定義了下列幀類型:

——用於初始化通信的短幀;

——用於普通命令的標準幀;

——面向位的防衝突命令的防衝突幀。

(1)短幀

用於初始化通訊開始 不加奇偶校驗位(TYPEA 奇校驗)

——幀開始(SOF)

——從LSB開始傳輸的7個數據位

——幀結束(EOF)

image

(2)標準幀

用於數據交換

——幀開始(SOF)(從PCD到PICC的通訊,SoF應爲邏輯0;從PICC到PCD的通訊,SoF爲邏輯1; )

——n*(8個數據位+奇校驗位) n>=1;(幀中的每8個數據位應跟一個奇校驗位P,設置P值,使得(b1到b8,P)中1的個數爲奇數。 )

——幀結束(EOF)EoF爲邏輯0(只用於PCD到PICC)

標準幀需發送CRC_A16,除奇校驗位、SOF、EOF、CRC_A16本身外,其他的字節數據進行校驗,校驗結果在數據字節之後,在EOF之前發送

image

(3)面向位的防衝突幀

僅在位幀防衝突環期間使用,並且該幀是帶有7個數據字節的標準幀 ,被分離爲兩部分(數據共7個字節即56位)

——第1部分用於從PCD到PICC的傳輸;

最小長度應爲16數據位;最大長度應爲55數據位。

——第2部分用於從PICC到PCD的傳輸。

最小長度應爲1數據位,最大長度應爲40數據位。

image

 

 

此例中SEL ‘93’是串聯一級的防衝突指令,在指令中會詳細介紹

NVB‘40’的高4位‘4’代表傳輸4個字節(SEL、NVB、UID0、UID1),低4位‘0’代表除整字節外,再發送幾個數據位,此例中爲0,只發送SEL、NVB、UID0、UID1四個字節

此例實際上是在第4個字節發生了衝突位導致再防衝突指令時,將UID0和

UID1帶下去,實際中防衝突指令第一次發的指令是‘93’‘20’

image

分析如下所示

SEL NVB UID0 UID1

93   40

NVB數據的‘4’代表PCD到PICC的4個字節,‘0’代表再加上UID0的0 個位,即發送 SEL NVB UID0 UID1 PICC到PCD返回 UID2 UID3 BCC三個字節

SEL  NVB

93    20

NVB數據的‘2’代表PCD到PICC的2個字節,‘0’代表再加上UID0的0個位 即發送 SEL NVB PICC到PCD返回 UID0 UID1 UID2 UID3

2、PICC狀態(8,P26 11,P42)

PICC狀態圖

(1) IDLE狀態

描述: 在IDLE狀態中,PICC被加電。它聽從命令並能識別REQA和WUPA命令。

狀態跳出條件和轉換: 在接收到有效的REQA或WUPA命令後,PICC進入READY狀態併發送其ATQA。

image

image

(2)READY狀態

描述: 在READY狀態,位幀防衝突和專有的防衝突方法都可以應用。串聯級別在這一狀態內被處理以獲取完整的UID。

狀態跳出條件和轉換: 當根據其完整UID選中它時,PICC進入ACTIVE狀態。

要求:PICC

在接收到有效的ANTICOLLISION CL1命令並且發送了其UID CL1後,PICC應保持READY狀態 ;

在接收到和其UID CL1匹配的有效SELECT CL1命令併發送了其SAK後,1級UID的PICC應進入ACTIVE狀態。PICC應在SAK響應中指明UID是完整的。1級UID的PICC沒有 READY’和READY”狀態 ;

在接收到和其UID CL1匹配的有效SELECT CL1命令併發送了其SAK後.,2級或3級UID的PICC應進入READY’狀態

(3)READY’狀態

本條的要求適用於處於READY’狀態的PICC。READY’狀態是一箇中間狀態,僅2級和3級UID的PICC存在此狀態。在READY’狀態,UID的串聯級別1已被選擇。

在接收到有效的ANTICOLLISION CL2命令併發送其UID CL2後,PICC應保持READY’狀態;

在接收到和其UID CL2匹配的有效SELECT CL2命令併發送其SAK後,2級UID的PICC應進入ACTIVE狀態。PICC應在其SAK響應中指示UID是完整的。2級UID的PICC沒有READY”狀態;

在接收到和其UID CL2匹配的有效SELECT CL2命令併發送其SAK後,3級UID的PICC應進入READY”狀態;

在其它情況下,PICC應返回到IDLE狀態,並不應發送響應至PCD

(4)READY”狀態

本條的要求適用於處於READY”狀態的PICC。READY”狀態是一箇中間狀態,僅3級UID的PICC存在此狀態。在READY”狀態,UID的串聯級別1和2已被選擇。

要求: Type A-READY” 狀態

在接收到有效的ANTICOLLISIOIN CL3命令併發送其UID CL3後,PICC應保持READY”狀態 ;

在接收到和其UID CL3匹配的有效SELECT CL3命令併發送其SAK後,3級UID的PICC應進入ACTIVE狀態。PICC應在SAK響應中指明UID是完整的;

在其它情況下,PICC應返回IDLE狀態,並且不應發送響應至PCD;

3、命令集 (8,P26 11,P42)

(1)REQA和WUPA命令(尋卡指令)

以探測工作場中的Type A PICC。短幀

REQA = 26 對未睡眠卡有效

WUPA = 52 對所有卡有效

WUPA響應(ATQA)

含 CRC_A的標準幀傳輸

當PCD發出WUPA請求時,TYPEA PICC將根據其狀態返回兩個字節的ATQA,

image

現遇到的ATQA(特徵值)0820 可能爲CPU卡或PBOC3.0卡

0428 可能爲CPU卡、M1卡、PBOC3.0卡

0408、0400 爲M1卡

實際這些是根據使用情況判斷,第一字節的08和04只代表UID長度爲1級4個字節(b8 b7 爲0 0); b5~b0表示位幀防衝突,需要進行位幀防衝突環而不是專有防衝突;UID長度爲1級時可能是(M1 S50),UID長度爲2級時可能是(M1 S70)

(2) ANTICOLLISION(防衝突) (含 CRC_A的標準幀傳)

ANTICOLLISION命令用於獲得一張Type A PICC完整的UID,並檢測工作場內是否存在多張Type A PICC。

byte 1    Byte2

SEL         20

SEL 93 防衝突串聯級別1

      95 防衝突串聯級別2

      97 防衝突串聯級別3

ANTICOLLISION響應:

響應信息長度固定5字節。 響應採用無CRC_A的標準幀傳輸

image

(3)SELECT(選卡) 採用帶有CRC_A的標準幀傳輸

SELECT命令通過使用Type A PICC的UID來選擇該PICC。

image

SELECT確認響應(SAK)

SAK的長度爲1個字節,使用帶有CRC_A的標準幀傳輸

image

位b3=1 UID不完整 忽略b6位,b3=0 UID完整判斷 b6,b6=1符合ISO14443A-4 b6=0不符合ISO14443A-4 M1應該不符合14443A-4協議

防衝突是要返回PICC的UID所以 SEL+ NVB(20)(SEL和NVB 兩個字節)

選卡是要根據PICC的UID激活卡片所以 SEL+NVB(70) +UID(4個字節)(SEL、NVB、UIDs 共7個字節)

image

防衝突環

流程

1、發送 93 20 返回5個字節

2、判斷第一個字節是否是CT(0x88)

否 ,說明是1級UID 返回的是 UID0 UID1 UID2 UID3 BCC 防衝突環停止

是,說明大於1級UID進入3 返回的是 CT UID0 UID1 UID2 BCC

3、發送 95 20 返回5個字節

4、判斷第一個字節是否是CT(0x88)

否,說明是2級UID,返回的是 UID3 UID4 UID5 UID6 BCC 防衝突環停止

是,說明是3級UID,進入5 近觀回的是CT UID3 UID4 UID5 BCC

5、發送97 20,返回5個字節

返回的是UID6 UID7 UID8 UID9 BCC

BCC是前4個字節的異或值 UID0是最高有效字節

或檢查SELECT的返回響應SAK的串聯標誌,REQA或RUWA(尋卡)的返回響應ATQA也有串聯級數的定義

防衝突和選擇

每個串聯級別範圍內的防衝突環

下面算法應適用於防衝突環:

——步驟1:PCD爲選擇的防衝突類型和串聯級別分配了帶有編碼的SEL;

——步驟2:PCD分配了帶有值爲‘20’的NVB;

注:該值定義了該PCD將不發送UID CLn的任何部分。因此該命令迫使工作場內的所有PICC以其完整的UID CLn表示響應。

——步驟3:PCD發送SEL和NVB;

——步驟4:工作場內的所有PICC應使用它們的完整的UID CLn響應;

——步驟5:假設場內的PICC擁有唯一序列號,那麼,如果一個以上的PICC響應,則衝突發生。如果沒有衝突發生,則步驟6到步驟10可被跳過;

——步驟6:PCD應識別出第一個衝突的位置;

——步驟7:PCD分配了帶有值的NVB,該值規定了UID CLn有效位數。這些有效位應是PCD所決定的衝突發生之前被接收到的UID CLn的一部分再加上(0)b或(1)b。典型的實現是增加(1)b;

——步驟8:PCD發送SEL和NVB,後隨有效位本身;

——步驟9:只有PICC的UID CLn中的一部分等於PCD所發送的有效位時,PICC才應發送其UID CLn的其餘部分;

——步驟10:如果出現進一步的衝突,則重複步驟6~9。最大的環數目是32;

——步驟11:如果不出現進一步的衝突,則PCD分配帶有值爲‘70’的NVB;

注:該值定義了PCD將發送完整的UID CLn。

——步驟12:PCD發送SEL和NVB,後隨UID CLn的所有40個位,後面又緊跟CRC_A校驗和;

——步驟13:它的UID CLn與40個位匹配,則該PICC以其SAK表示響應;

——步驟14:如果UID完整,則PICC應發送帶有清空的串聯級別位的SAK,並從READY狀態轉換到ACTIVE狀態,或從READY*狀態轉換到ACTIVE*狀態;

——步驟15:PCD應檢驗SAK的串聯位是否被設置,以決定帶有遞增串聯級別的進一步防衝突環是否應繼續進行。

如果PICC的UID是已知的,則PCD可以跳過步驟2~10來選擇該PICC,而無需執行防衝突環。

image

 

image

image

下列算法應適用於PCD以獲得完整UID:

——步驟1:PCD選擇串聯級別1;

——步驟2:應執行防衝突環;

——步驟3:PCD應檢驗SAK的串聯位;

——步驟4:如果設置了串聯位,PCD應增加串聯級別並初始化一個新的防衝突環

(4)HLTA(採用帶有CRC_A的標準幀傳輸)

命令用於使處於輪詢和移出過程中的PICC返回IDLE狀態。

HLTA命令包含兩個字節, 50 00

PICC對HLTA命令不做任何響應,PCD總是假設PICC已經確認收到HLTA命令。

image

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章