ISO14443-3 TypeA防碰撞過程以及命令解析

來源:互聯網
上載者:User

標籤:

一、介紹

本博文介紹了PCD(Proximity Coupling Device)使用ISO14443-3 Type A協議檢測匹配的PICC(Polling For Proximity Cards)命令以及防碰撞過程(Anticollision Proccess)。

二、命令1 REQA和 WUQA1.1 命令概要

REQA命令和WUPA命令是PCD用來檢測Type A類型卡是否在無線射頻場(RF)。區別在於REQA命令是用PCD在剛開始檢測PICC是否在RF中,而WUPA是用在PCD讓PICC由停止態(HALT State)回到類準備態(READY* State)。

1.2 命令格式

REQA命令和WUPA命令只有一個位元組(短框架格式),它們的格式如下(b表示bit;B表示Byte):

A、REQA命令:0x26
b8 b7 b6 b5 b4 b3 b2 b1
RFU 0 1 0 0 1 1 0

註:RFU為Reserved for Future ISO/IEC Use的縮寫,我喜歡稱之為“預留”或者“未使用”。

B、WUPA命令:0x52
b8 b7 b6 b5 b4 b3 b2 b1
RFU 1 0 1 0 0 1 0
2 ANTICOLISION和SELECT2.1 命令概要

這兩個命令用在防碰撞過程,他們共同包含以下三部分:
(1) 選擇代碼(SEL),佔一個位元組。
(2) 有效位元組(NVB),佔一個位元組。
(3) 0~40個Unique Identifier(UID)位元位。
其中,選擇代碼分成三個層次,根據防碰撞的層級使用(根據參與防碰撞的UID長度使用)。層級一選擇代碼為0x93,層級二為0x95,層級三為0x97。
有效位元組是指PCD傳輸了的位元組數和位元位元。NVB的高四個位元位表示已經傳輸的位元數除8得到的結果,它包含SEL和NVB位元組。所以位元組數最小值為2(只有SEL和NVB),最大值為7(含有SEL、NVB和5個位元組的UID);NVB的低四個位元位表示已經傳輸的位元位元模8,它包含SEL和NVB位元組,因此它的最小值為0,最大值為7。

2.2 命令格式
B1 B2 B3~B7
SEL NVB UID

註:UID傳輸的長度根據具體的碰撞請情況而定,傳輸範圍在0~40個位元位之間。它會由NVB指出。

3 HLTA3.1 命令概要

該命令用於PICC不響應PCD的解調命令,它佔兩個位元組。第一個位元組為0x50,第二個位元組為0x00。

3.2 命令格式
               B1                 |                 B2
b16 b15 b14 b13 b12 b11 b10 b9 b8 b7 b6 b5 b4 b3 b2 b1
0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0
4 ATQA4.1 命令概要

ATQA命令是PICC對PCD發出的REQA或WUPA命令的響應命令。當PCD發出REQA命令時,多張PICC都有響應時,該命令可以指出防撞的發生情況。

4.2 命令格式


註:
A、所有的RFU都預設設定為0.
B、專有編碼(Proprietary Coding)根據製造廠商而定,由PICC自己響應。
C、UID類型(UID size bit frame)分成三種。

其中UID為單尺寸時,表示PICC的UID長度為4個位元組;雙尺寸表示PICC的UID長度為7個位元組;三尺寸表示PICC的UID長度為10個位元組。
D、防撞位元位,該地區的值不為0時表示有多張卡響應REQA命令。

三、PCD檢測PICC過程3.1 描述

PCD檢測PICC的UID包含卡檢測、防碰撞和具體PICC類型識別三個部分。
——第一部分是卡檢測。主要是由PCD發出REQA命令,在RF場中的PICC發出ATQA進行響應的部分。如果有PICC響應ATQA,則表示RF場中含有ISO14443 Type A類型的PICC。若ATQA中的碰撞位元位不為零,表示有多張PICC存在RF中,需要進行多次防碰撞。
——第二部分是防碰撞。防碰撞的過程分成三個層級,第一個層級必須要有,第二和第三層級視具體情況而定(ATQA的碰撞位元位和UID的長度)。如果只有一張PICC,那麼只進行第一層級的防碰撞過程;多張相應REQA,才會進行第二第三層級的防碰撞過程。
——第三部分是具體PICC類型識別。該部分主要由PICC發送SAK,由PCD解析SAK從而確定PICC的具體類型。

3.2 流程圖


說明:該流程圖包含三個部分:卡檢測、防碰撞、卡具體類型識別。

四、防碰撞4.1 描述

(1)PCD設定SEL編碼和選擇碰撞層級。(當SEL編碼為0x93時,表示碰撞層級一;當SEL編碼為0x95時,表示碰撞層級二;當SEL編碼為0x97時,表示碰撞層級三)。
(2)PCD設定NVB的初始值為0x20。表示傳輸的位元組(SEL和NVB)數為2*8 / 8 = 2,傳輸的位元位為 2*8 % 8 = 0;
(3)PCD發送SELECT命令,傳輸SEL和NVB。
(4)所有在RF中的PICC發送ATQA進行響應REQA。
(5)假定所有的PICC都有自己獨特的UID序列。如果只有一張PICC進行響應,那麼ATQA中的碰撞位元位為0;否則進行第(6)步到第(10)步。
(6)PCD根據ATQA識別PICC的UID中碰撞的位置。
(7)根據傳輸的位元組數和位元位元重新設定NVB的值,PCD需要設定碰撞響應規則是以位元位1進行,還是以位元位0進行。
(8)PCD發送SELECT命令,傳輸重新設定好的SEL和NVB。
(9)只有PICC的UID等於PCD發送SELECT命令的UID時,表示防碰撞過程成功。
(10)如果還沒選出PICC中的UID,即還有多張卡響應,那麼重複第(6)步到第9步,進行更進階別的碰撞。
(11)如果更進階別的碰撞發生了,PCD應將NVB設定成0x70,表示傳輸了7位元組。7 = 1 + 1 + 5(1個位元組SEL,1個位元組NVB和5個位元組【可能是1個位元組的CT(0x88)加上3個位元組的UID,再加上一個位元組的BCC(前面四個傳輸位元組異或結果);也可能是四個位元組的UID加上一個位元組的BCC(前面四個位元組UID異或的結果)】)。
(12)PCD發送SELECT命令,傳輸1個位元組SEL,1個位元組NVB和5個位元組UID。
(13)PICC響應SAK,PCD匹配5個位元組的UID。
(14)如果UID是完整的,PICC傳輸的SAK清除碰撞層級位元位和從準備態(READY State)切換到啟用態(ACTIVE State)或者從類準備態(READY* State)切換到類啟用態(ACTIVE* State)。
(15)PCD會檢查SAK去決定是否進行更高層次的防碰撞過程,如果需要則會提升碰撞層級。

註:
A、如果PCD一開始就知道PICC的UID是完整的,那麼PCD會跳過步驟(2)到(10),也就是沒有防碰撞過程。
B、如果含有更進階別的防碰撞過程,那麼也就表示PICC的UID長度不止4個位元組。因為4個位元組的UID只能進行層級一的防碰撞過程;7個位元組的UID最多能進行層級二的防碰撞過程;10位元組的UID最多能進行層級三的防碰撞過程。
C、同一碰撞層級裡可能發生多次碰撞。

4.2 流程圖

五、碰撞層級

六、防碰撞過程樣本


註:
A、PICC #1是單尺寸UID,uid0的值是0x10;PICC #2是雙尺寸UID。
B、該執行個體的碰撞響應規則是按位元位1響應。

ISO14443-3 TypeA防碰撞過程以及命令解析

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.