前言
之前《【NFC專欄】ISO14443A協議》和《【NFC專欄】ISO14443B協議》兩篇中我們都有提到ISO14443-4協議,所以ISO14443-4協議是適用于二者的。但并不是所有A卡或B卡都支持ISO14443-4協議。
ISO14443-4簡介
ISO14443-4定義了半雙工塊傳輸協議,該協議適用于Type-A和Type-B兩種卡。該協議還定義了激活與去激活的流程。
名詞解析
ATS: Answer To Select,選擇應答
PPS: Protocol and Parameter Selection,協議和參數選擇 RATS:Request for answer to select,選擇應答請求 FSD: Frame Size for proximity coupling Device, PCD的接收幀大小 FWI: Frame Waiting time Integer, 幀等待時間值
SFGI: Start-up Frame Guard time Integer,啟動幀保護時間值
NAD:Node Address,節點地址
PCB:Protocol Control Byte,協議控制字節
命令介紹
RATS
總共4個字節,我們主要關注Parameter字段,它由兩部分組成。
(1) FSDI: FSD編碼值,即PCD能接收的最大幀大小。定義如下:
(2)CID:用于PICC的尋址,值為0~14。ISO14443B協議中有提到過。
ATS
該命令用于應答RATS。格式定義如下:
(1) TL:TL到Tk的字節數(包含TL本身)。
(2)T0:定義了后面的字段是否存在,以及PICC能接收的幀大小。
b5~b7每個位表示TA~TC字段是否出現,為1則表示出現。
b1~b4為FSCI,表示PICC能接收的幀的大小,定義和上面的FSDI一樣。
(3)TA:跟速率有關的信息。
bit8定義了不同方向使用不同bit速率處理數據的能力,當該位設置成1時,PICC不支持不同方向的速率不一致。
b5~b7定義了PICC到PCD的速率(DS)。
b1~b3定義PCD到PICC的速率(DR)。
(4) TB:幀等待時間以及啟動幀保護時間。
FWI:幀等待時間(即兩個幀之間的等待時間),計算公式如下:
SFGI:啟動幀保護時間(PICC發送ATS之后PCD多久才能繼續發), 計算公式如下:
(5) TC: 是否支持CID和NAD。
(6) T1~Tk:可選字段,在ISO7816-4中定義。
PPS
該命令用于協議和參數的選擇。格式定義如下:
(1) PPSS: 起始字節,定義如下:
高4位固定為1101,CID就是上面介紹的,沒有則為0000。
(2)PPS0: 用于指示PPS1是否出現。
b5為1則表示PPS1字段有出現。
(3)PPS1:選擇的速率。
DSI: PICC到PCD的速率
DRI:PCD到PICC的速率
具體定義如下:
1對應的就是106kbit/s, 2對應212kbit/s, 以此類推。
PPS應答
PPS的應答格式如下:
PPSS: 起始字節, 在PPS命令中解釋了。
TypeA激活協議
(1) 前面幾步就是我們在ISO14443A協議中講過的,主要是看是否支持ISO14443-4,判斷是否支持在《【NFC專欄】ISO14443A協議》中有提到。接下來我們主要看支持ISO14443-4的流程。
(2) PCD發送RATS命令,PICC則應答ATS。
(3) 如果卡支持PPS命令,PCD可以PPS命令來修改參數。
(4)進行半雙工協議傳輸,如果想結束傳輸,PCD可以發送DESELECT命令。
TypeB激活協議 ISO14443B的激活流程在《【NFC專欄】ISO14443B協議》中已經講過了,在ISO14443-4中沒有新增的內容。
半雙工塊傳輸協議
進行半雙工傳輸的塊格式(幀格式)有兩種:標準塊格式和增強型塊格式。定義如下:
標準塊格式
增強型塊格式
兩者的區別就在于是否有Length字段,這個字段是用于糾錯的。
(1)Length
表示總長度,包含Length,Prologue, Information三個字段。
(2)Prologue
可以包含PCB, CID, NAD,PCB是強制的,CID和NAD是可選的。
PCB:控制傳輸的信息,它定義了三種不同的block。
I-Block
R-Block
S-Block
I-Block用于傳輸應用層信息,R-Block用于傳輸ACK或NACK,S-Block用于交換控制信息。
CID定義如下:
NAD:定義在ISO7816-3。
(3)Information
傳輸過程中的數據,比如應用數據或狀態碼等。
(4)Epilogue
EDC: 就是CRC校驗值
Chaining傳輸
Chaining傳輸可以理解為分段傳輸,當單個數據包超過幀的最大大小的時候,就要拆分成幾個進行傳輸。比如下面的示意圖:
上半部分是發送端,下半部分是接收端。
(1)發送端將完整的數據包拆分成3個I-Block。
(2)接收端收到后判斷出是Chaining,則發送R-Block進行應答。到最后一個包正常應答I-Block。
總結
到此,我們就將ISO14443相關的協議基本都講完了,當然這是標準的協議,基于該標準的一些卡還有很多特殊的命令和特性,比如Mifare,所以在開發過程中,還要查看卡的datasheet。
-
編碼
+關注
關注
6文章
940瀏覽量
54814 -
PICC
+關注
關注
0文章
23瀏覽量
14008 -
ISO14443
+關注
關注
0文章
3瀏覽量
6462
原文標題:【NFC專欄】ISO14443-4協議
文章出處:【微信號:嵌入式軟件開發交流,微信公眾號:嵌入式軟件開發交流】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論