前言
上一篇《【NFC專欄】ISO14443A協議》介紹了ISO14443A協議,接下來繼續介紹ISO14443B協議。之前介紹過,A和B的協議區別主要在ISO14443-3,所以接下來的內容也是集中在ISO14443-3。
名詞解析
PUPI:Pseudo-Unique PICC Identifier,可以理解為A卡中的UID
FWI:Frame Waiting time Integer,幀等待時間整數值
FWT:Frame Waiting Time,幀等待時間
ADC:Application Data Coding,應用數據編碼
命令介紹
REQB/WUPB
讀卡器發送REQB或WUPB命令來檢查是否有卡存在。命令碼如下:
(1)APf:防碰撞前綴,固定值為0x05。
(2)AFI: Application Family Identifier,應用族ID,用來指定要檢查的PICC類型。值為0時表示所有PICC都要處理REQB/WUPB命令。定義如下:
注:X和Y的取值范圍都為0x1~0xF。
AFI被分為高4位和低4位兩個部分,通過這兩部分的組合來確定PICC類型,可以簡單理解為過濾設置。
(3)PARAM:用來指定是REQB還是WUPB, 以及slot(槽)數量。
b4為0時表示REQB,為1時表示WUPB。這兩命令和和ISO14443A中的REQA和WUPA類似。WUPB命令是處于IDLE,READY或HALT狀態的卡都會應答,而REQB命令只有處于IDLE或READY狀態的卡會應答。
b1~b3定義如下:
N主要是要配合Slot-MARKER命令一起解決防碰撞。N可以理解為最大隨機值,就比如N=2, PICC會產生隨機值1或2,如果是1會馬上應答(ATQB),如果是2,就需要再發送Slot-MARKER命令,PICC才會應答。
Slot-MARKER
Slot-MARKER命令格式如下:
(1)APn: 槽(slot)序號, 它的值為(nnnn 0101)b ,低4位是固定的。
ATQB
ATQB是REQB/WUPB和Slot-MARKER的應答命令。命令格式如下:
(1)PUPI: 和A卡中的UID類似。
(2)Application Data:應用數據,具體定義如下:
AFI:上面REQB中有提到了
Number of Applications: 應用數量,高4位與AFI一致,‘0’意味著無應用,‘0xF’意味著15種應用或者更多;低4位代表著應用總數,‘0’意味著沒有應用,‘0xF’意味著15種應用或者更多。
(3)Protocol Info:協議信息,具體定義如下:
第一個字節是速率,定義如下:
第二個字節,高4位是最大幀大小,低4位是是否支持ISO14443-4。定義如下:
第三個字節包含: FWI, ADC, FO三個部分,定義如下:
FWI就是幀等待的時間值,意思就是發送完一幀數據之后要等待多久才能繼續發。
ADC意思是應用數據編碼:
FO: Frame Option, 幀選項:
ATTRIB
該命令用于選擇PICC,命令格式如下:
(1)Identifier:就是PUPI
(2)Param1定義如下:
TR0是PICC響應PCD命令的最小延遲時間。定義如下:
TR1是PICC副載波調制開始到數據傳輸的最小延遲時間。定義如下:
EOF/SOF表示是否需要幀結束標識和幀開始標識。0表示需要,1表示不需要。
(3)Param2定義如下:
b7~b8定義PICC到PCD的速率:
b5~b6定義PCD到PICC的速率:
b1~b4定義最大幀大?。?/p>
(4)Param3定義如下:
它的高4位為預留位,值為0;低4位定義了PICC支持的協議類型,就是上面的是否支持ISO14443-4。
(5)Param4定義如下:
它的高4位為預留位,值為0;低4位為CID,它的取值范圍為0~14。PCD定義了每個激活的PICC必須要有唯一的CID,如果PICC不支持CID,那么CID的值為(0000)b。
(6)Higher layer INF:高層信息,這字段不是強制的,只有部分特殊卡有。
ATTRIB應答
ATTRIB命令應答格式如下:
(1)第一個字節包含兩個部分:
高4位MBLI( Maximum Buffer Length Index), 讓PCD知道PICC內部緩沖區對接收鏈式幀的限制。鏈式幀就是將大的數據幀拆成多個數據幀。
低4位為PICC返回給PCD的CID,如果PICC不支持CID,則返回(0000)b。
(2)Higher layer Response:根據標簽卡情況而定,可能有也可能沒有。
HLTB
HLTB命令用來讓卡進入休眠狀態。命令格式如下:
(1)Identifier:即PUPI。
HLTB應答
HLTB的應答格式如下:
*注意:ISO14443A的HALT是沒有應答的,而ISO14443B的HLTB是有應答的。
PCD檢測PICC流程
(1)PCD發送REQB或WUPB, 匹配AFI則繼續下一步。
(2)N=1時則PICC應答ATQB,如果N為其他數值(R), 則PCD發送Slot Marker命令依次進行匹配, 匹配后PICC應答ATQB。
(3)PCD發送ATTRIB來選擇卡,或者發送HLTB讓卡進入休眠。
防碰撞流程
ISO14443B的防碰撞過程的原理是基于時隙的。每次PCD發送的REQB /WUPB命令,PICC會產生一個隨機值(就是時隙),PICC在哪個時隙響應都有可能(發送ATQB)。通過這種隨機概率的方式來進行防碰撞。
防碰撞應答規則
當PICC接收到REQB/WUPB命令后,處于READY-REQUESTED狀態時,PICC的響應應該遵循下面規則:
(1)如果N=1,PICC應該發送ATQB并且進入READY-DECLARED狀態。
(2)如果N>1:
PICC可以采用概率法(PCD檢測PICC流程圖中的Option 1),并且進入空閑態(Idle State)。
PICC采用發送Slot-MARKER命令的方法(PCD檢測PICC流程圖中的Option 2),一直到槽序號等于R,然后PICC發送ATQB并且進入READY-DECLARED 狀態。
總結
ISO14443A和ISO14443B部分命令是很相似的,主要區別在于處理防碰撞機制的差異。
審核編輯:劉清
-
adc
+關注
關注
99文章
6533瀏覽量
545460 -
讀卡器
+關注
關注
2文章
419瀏覽量
39428 -
ISO
+關注
關注
0文章
265瀏覽量
39644 -
PICC
+關注
關注
0文章
23瀏覽量
14016
原文標題:【NFC專欄】ISO14443B協議
文章出處:【微信號:嵌入式軟件開發交流,微信公眾號:嵌入式軟件開發交流】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論