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