前言
之前《【NFC專欄】ISO14443A協(xié)議》和《【NFC專欄】ISO14443B協(xié)議》兩篇中我們都有提到ISO14443-4協(xié)議,所以ISO14443-4協(xié)議是適用于二者的。但并不是所有A卡或B卡都支持ISO14443-4協(xié)議。
ISO14443-4簡(jiǎn)介
ISO14443-4定義了半雙工塊傳輸協(xié)議,該協(xié)議適用于Type-A和Type-B兩種卡。該協(xié)議還定義了激活與去激活的流程。
名詞解析
ATS: Answer To Select,選擇應(yīng)答
PPS: Protocol and Parameter Selection,協(xié)議和參數(shù)選擇 RATS:Request for answer to select,選擇應(yīng)答請(qǐng)求 FSD: Frame Size for proximity coupling Device, PCD的接收幀大小 FWI: Frame Waiting time Integer, 幀等待時(shí)間值
SFGI: Start-up Frame Guard time Integer,啟動(dòng)幀保護(hù)時(shí)間值
NAD:Node Address,節(jié)點(diǎn)地址
PCB:Protocol Control Byte,協(xié)議控制字節(jié)
命令介紹
RATS
該命令用于獲取PICC的更詳細(xì)的信息,格式定義如下:
總共4個(gè)字節(jié),我們主要關(guān)注Parameter字段,它由兩部分組成。
(1) FSDI: FSD編碼值,即PCD能接收的最大幀大小。定義如下:
(2)CID:用于PICC的尋址,值為0~14。ISO14443B協(xié)議中有提到過。
ATS
該命令用于應(yīng)答RATS。格式定義如下:
(1) TL:TL到Tk的字節(jié)數(shù)(包含TL本身)。
(2)T0:定義了后面的字段是否存在,以及PICC能接收的幀大小。
b5~b7每個(gè)位表示TA~TC字段是否出現(xiàn),為1則表示出現(xiàn)。
b1~b4為FSCI,表示PICC能接收的幀的大小,定義和上面的FSDI一樣。
(3)TA:跟速率有關(guān)的信息。
bit8定義了不同方向使用不同bit速率處理數(shù)據(jù)的能力,當(dāng)該位設(shè)置成1時(shí),PICC不支持不同方向的速率不一致。
b5~b7定義了PICC到PCD的速率(DS)。
b1~b3定義PCD到PICC的速率(DR)。
(4) TB:幀等待時(shí)間以及啟動(dòng)幀保護(hù)時(shí)間。
FWI:幀等待時(shí)間(即兩個(gè)幀之間的等待時(shí)間),計(jì)算公式如下:
SFGI:啟動(dòng)幀保護(hù)時(shí)間(PICC發(fā)送ATS之后PCD多久才能繼續(xù)發(fā)), 計(jì)算公式如下:
(5) TC: 是否支持CID和NAD。
(6) T1~Tk:可選字段,在ISO7816-4中定義。
PPS
該命令用于協(xié)議和參數(shù)的選擇。格式定義如下:
(1) PPSS: 起始字節(jié),定義如下:
高4位固定為1101,CID就是上面介紹的,沒有則為0000。
(2)PPS0: 用于指示PPS1是否出現(xiàn)。
b5為1則表示PPS1字段有出現(xiàn)。
(3)PPS1:選擇的速率。
DSI: PICC到PCD的速率
DRI:PCD到PICC的速率
具體定義如下:
1對(duì)應(yīng)的就是106kbit/s, 2對(duì)應(yīng)212kbit/s, 以此類推。
PPS應(yīng)答
PPS的應(yīng)答格式如下:
PPSS: 起始字節(jié), 在PPS命令中解釋了。
TypeA激活協(xié)議
(1) 前面幾步就是我們?cè)贗SO14443A協(xié)議中講過的,主要是看是否支持ISO14443-4,判斷是否支持在《【NFC專欄】ISO14443A協(xié)議》中有提到。接下來我們主要看支持ISO14443-4的流程。
(2) PCD發(fā)送RATS命令,PICC則應(yīng)答ATS。
(3) 如果卡支持PPS命令,PCD可以PPS命令來修改參數(shù)。
(4)進(jìn)行半雙工協(xié)議傳輸,如果想結(jié)束傳輸,PCD可以發(fā)送DESELECT命令。
TypeB激活協(xié)議 ISO14443B的激活流程在《【NFC專欄】ISO14443B協(xié)議》中已經(jīng)講過了,在ISO14443-4中沒有新增的內(nèi)容。
半雙工塊傳輸協(xié)議
進(jìn)行半雙工傳輸?shù)膲K格式(幀格式)有兩種:標(biāo)準(zhǔn)塊格式和增強(qiáng)型塊格式。定義如下:
標(biāo)準(zhǔn)塊格式
增強(qiáng)型塊格式
兩者的區(qū)別就在于是否有Length字段,這個(gè)字段是用于糾錯(cuò)的。
(1)Length
表示總長(zhǎng)度,包含Length,Prologue, Information三個(gè)字段。
(2)Prologue
可以包含PCB, CID, NAD,PCB是強(qiáng)制的,CID和NAD是可選的。
PCB:控制傳輸?shù)男畔ⅲx了三種不同的block。
I-Block
R-Block
S-Block
I-Block用于傳輸應(yīng)用層信息,R-Block用于傳輸ACK或NACK,S-Block用于交換控制信息。
CID定義如下:
NAD:定義在ISO7816-3。
(3)Information
傳輸過程中的數(shù)據(jù),比如應(yīng)用數(shù)據(jù)或狀態(tài)碼等。
(4)Epilogue
EDC: 就是CRC校驗(yàn)值
Chaining傳輸
Chaining傳輸可以理解為分段傳輸,當(dāng)單個(gè)數(shù)據(jù)包超過幀的最大大小的時(shí)候,就要拆分成幾個(gè)進(jìn)行傳輸。比如下面的示意圖:
上半部分是發(fā)送端,下半部分是接收端。
(1)發(fā)送端將完整的數(shù)據(jù)包拆分成3個(gè)I-Block。
(2)接收端收到后判斷出是Chaining,則發(fā)送R-Block進(jìn)行應(yīng)答。到最后一個(gè)包正常應(yīng)答I-Block。
總結(jié)
到此,我們就將ISO14443相關(guān)的協(xié)議基本都講完了,當(dāng)然這是標(biāo)準(zhǔn)的協(xié)議,基于該標(biāo)準(zhǔn)的一些卡還有很多特殊的命令和特性,比如Mifare,所以在開發(fā)過程中,還要查看卡的datasheet。
-
編碼
+關(guān)注
關(guān)注
6文章
962瀏覽量
55307 -
PICC
+關(guān)注
關(guān)注
0文章
23瀏覽量
14085 -
ISO14443
+關(guān)注
關(guān)注
0文章
3瀏覽量
6527
原文標(biāo)題:【NFC專欄】ISO14443-4協(xié)議
文章出處:【微信號(hào):嵌入式軟件開發(fā)交流,微信公眾號(hào):嵌入式軟件開發(fā)交流】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
求技術(shù)支持 ISO14443A通信協(xié)議 有大洋奉上
求懂ISO14443A協(xié)議方面的論壇 有大洋奉上
讀卡芯片F(xiàn)M1702SL相關(guān)資料推薦
請(qǐng)問怎樣去設(shè)計(jì)一種空中傳輸協(xié)議系統(tǒng)?
ISO14443介紹
STM32F103驅(qū)動(dòng)THM3060讀取二代身份證的方法
ST25R3911-disco的demo代碼讀取ISO 14443協(xié)議的函數(shù)是什么?
如何使用套件ST25R3911B-disco和lib RFAL讀取協(xié)議ISO14443A的信息?
ISO/IEC14443-4 標(biāo)準(zhǔn)協(xié)議
基于ISO14443A協(xié)議的RFID模擬前端設(shè)計(jì)

評(píng)論