ISO15693類型的命令解析以及防碰撞過程

一、介紹

本博文介紹了符合ISO15693標準的標籤類型的檢測以及防碰撞過程。

二、協議簡介

(2.1)ISO15693介紹了三種模式,它們之間的關係如下所示:
這裏寫圖片描述
(2.2)請求命令格式:

SOF Flags Command Code Parameters Data CRC EOF
幀開始 標識 命令代碼 參數 數據 CRC 幀結束

(A)標識(Flags)總共佔一個字節大小,它的定義如下圖所示:
這裏寫圖片描述
這裏寫圖片描述
這裏寫圖片描述
(B)根據ISO15693的命令代碼分成強制的、可選的、自定義以及私有的四種類型。它們的定義如下:
強制命令

強制命令的命令代碼(command code)取值範圍爲0x01~0x1F,所有標籤(VICC)必須支持在該命令代碼範圍內的命令。
可選命令
可選命令的命令代碼取值範圍爲0x20~0x9F。在該命令代碼範圍的命令,標籤可能支持;如果標籤支持可選命令,它的命令格式在後續會介紹。;如果標籤不支持可選命令,並且尋址標識(Address_flag)或者選擇標識(Select_flag)都設置了,它可能會返回錯誤碼或者不響應,保持沉默;如果標籤不支持可選命令,並且尋址標識(Address_flag)或者選擇標識(Select_flag)未設置,那麼標籤就不會響應,會保持沉默。
自定義命令
自定義的命令代碼取值範圍爲0xA0~0xDF,標籤可以選擇去支持它,自定義命令可以實現製造商的特殊功能。所有的自定義命令必須包含IC製作商編碼。如果標籤不支持自定義命令,那麼給它發送自定義命令時,它應該返回錯誤碼或者保持沉默。
私有命令
私有命令的命令代碼取值範圍是0xE0~0xFF,在該命令代碼的範圍內的命令可以用於製造商測試,系統信息編碼等。私有命令要求必須包含IC製造商代碼以及IC版本號。

ISO15693的命令代碼如下表:

命令代碼 命令類型 命令作用
0x01 強制命令 清查命令(查找所有在RF場中的標籤VICC)
0x02 強制命令 保持安靜命令(指定某個標籤不再響應清查命令)
0x03~0x1F 強制命令 預留給未來使用
0x20 可選命令 讀取標籤指定單塊內容信息
0x21 可選命令 將指定信息寫入標籤指定單塊位置
0x22 可選命令 將標籤指定塊進行鎖定
0x23 可選命令 讀取標籤指定多塊的信息
0x24 可選命令 將信息寫入到標籤多塊位置
0x25 可選命令 選擇某一個標籤(選中被髮送了保持安靜命令的標籤)
0x26 可選命令 重新準備(重置被髮送了保持安靜命令的標籤)
0x27 可選命令 寫入AFI(Application Family Identifier)
0x28 可選命令 鎖定AFI
0x29 可選命令 寫入DSFID(Data Storage Format Identifier)
0x2A 可選命令 鎖定DSFID
0x2B 可選命令 獲取標籤系統信息
0x2C 可選命令 獲取多塊的安全狀態
0x2D~0x9F 可選命令 預留給未來使用
0xA0~0xDF 自定義命令 由IC製造商決定
0xE0~0xFF 私有命令 由IC製造商決定

(2.3)命令響應格式:

SOF Flags Parameters Data CRC EOF
幀開始 標識 參數 數據 CRC 幀結束

(A)標識(Flags)佔一個字節,它的定義如下表所示:
這裏寫圖片描述
(B)如果錯誤碼(Error_flag)的值爲1,則錯誤碼定義如下:
這裏寫圖片描述

三、命令

3.1 清查命令(Inventory)【命令碼:0x01】

當所有的標籤(VICC)接收到了該命令,那麼都應該做出相應的響應。

3.1.1 格式

這裏寫圖片描述
注:標識(Flags)參考前面的請求命令中標識,第二個字節爲Inventory,在此處對應它的命令代碼0x01。AFI的定義如下表:
這裏寫圖片描述
掩碼長度(Mask Length)指示了需要的比較的字節數,範圍爲[0x00,0x40];掩碼值(Mask Value)代表需要比較的比特數。如:發送無AFI命令爲 26 01 01 00,表示第一個字節Flags的值爲0x26;第二個命令代碼爲0x01,代表inventory命令;掩碼長度(Mask Length)值爲0x01,表示需要比較在RF場中的標籤ID(UID)的第一個字節;掩碼值爲0x00。

3.1.2 響應

這裏寫圖片描述
如果RF場中有多張標籤響應,則就會發生碰撞情況,此時響應中的CRC就會計算錯誤,由此我們可以判斷是否要進行防碰撞過程。

3.2 保持安靜命令(Stay quiet)【命令碼:0x02】

當標籤接收到該命令時,它就會進入安靜狀態(quiet state),並且不會有響應返回。
當標籤在安靜狀態時

它將不會響應任何帶有清查標識(inventory_flag)的請求
它將響應帶有尋址標識的請求

如下情況標籤將退出安靜狀態

1)重啓
2)接收到選擇(select)請求,並且進入選擇狀態。如果支持的話,將響應;如果不支持,則返回錯誤碼
3)接收到重置到準備(reset to ready)請求,並且進入準備狀態(ready state)

3.2.1 命令格式

這裏寫圖片描述

注意:(A)保持安靜(Stay Quiet)命令必須執行在尋址模式下,及選擇標識(Select_flag)設置成0並且尋址標誌(Address_flag)設置成1。
(B)該命令沒有響應返回

3.3 讀單塊命令(Read single block)【命令碼:0x20】

當標籤(VICC)接收到讀單塊命令時,它應該響應該命令,並且將指定單塊的值返回在響應裏。
如果在該請求裏設置了可選標識(Option_flag),標籤應該返回該塊的安全狀態,然後是該塊的值;如果沒有設置可選標識,則僅僅返回塊信息。

3.3.1 命令格式

這裏寫圖片描述

3.3.2 命令響應

這裏寫圖片描述

3.4 寫單塊命令(Write single block)【命令碼:0x21】

當標籤接收到寫單塊的命令時,信息應當寫入對應的塊中,並且在返回值應該顯示寫入成功與否。
當可選標誌沒有設置時,從完成信息寫入開始,在規定時間,應當會返回響應。
如果可選標誌已經設置了,標籤應當等待完全調製的幀結束標識(EOF),並且返回響應給VCD。

3.4.1 命令格式

這裏寫圖片描述

3.4.2 命令響應

這裏寫圖片描述

3.5 鎖塊命令(Lock block)【命令碼:0x22】

當標籤接收到鎖塊命令時,標籤應當永久的鎖定所請求的塊。
如果可選標誌沒有被設置,當完成鎖塊操作時,標籤應當在規定時間返回它的響應。
如果可選標誌設置了,標籤應當等到幀結束標識(EOF),並返回它的響應。

3.5.1 命令格式

這裏寫圖片描述

3.5.2 命令響應

這裏寫圖片描述

3.6 讀多塊命令(Read multiple blocks)【命令碼:0x23】

當標籤接收到讀多塊的命令時,標籤應當將塊的信息在返回的響應中表示出來。
如果設置了可選標誌,標籤應當返回塊的安全狀態,隨後跟着一塊接着一塊的值
如果可選標誌沒有被設置,標籤只返回塊的值。
塊的序號從0x00到0xFF。當塊的值爲0x06時,表示的是第7塊。

3.6.1 命令格式

這裏寫圖片描述

3.6.2 命令響應

這裏寫圖片描述

3.7 寫多塊(Write multiple blocks)【命令碼:0x24】

當標籤接收到寫多塊的命令時,標籤應當將數據寫入到對應的塊中,並且將寫入是否成功的的狀態報告給讀卡設備(VCD)
如果可選標誌沒有被設置,當完成寫操作時,在規定時間應當返回它的響應
如果設置了可選標誌,標籤應當等到VCD發送的幀結束標識再返回響應。
塊的序列號範圍是0x00到0xFF。

3.7.1 命令格式

這裏寫圖片描述

3.7.2 命令響應

這裏寫圖片描述

3.8 選擇命令(Select)【命令碼:0x25】

當標籤接收到選擇命令時,如果UID等於標籤的UID,那麼該標籤就如選擇狀態(selected state)併發送一個響應;如果UID不等於標籤UID時,標籤返回準備狀態(ready state)並不予響應。
選擇命令總是執行在尋址模式(尋址標誌爲1,選擇標識爲0)

3.8.1 命令格式

這裏寫圖片描述

3.8.2 命令響應

這裏寫圖片描述

3.9 重置到準備(Reset to ready)【命令碼:0x26】

當標籤VICC接收到重置到準備命令時,標籤應當返回到準備狀態(Ready state)

3.9.1 命令格式

這裏寫圖片描述

3.9.2 命令響應

這裏寫圖片描述

3.10 寫AFI命令(write AFI)【命令碼:0x27】

當接收到寫AFI命令時,標籤應當將AFI的值寫入到標籤的內存中。
如果可選標誌沒有設置,當完成寫AFI操作時,標籤應當在規定的時間內返回響應。
如果設置了可選標誌,標籤應當等待幀結束標識才返回它的響應。

3.10.1 命令格式

這裏寫圖片描述

3.10.1 命令響應

這裏寫圖片描述

3.11 鎖AFI命令(Lock AFI)【命令碼:0x28】

當接收到鎖AFI命令時,標籤應當永久的鎖定AFI值到它的內存。
如果沒有設置可選標誌,當完成鎖AFI操作時,標籤應當在規定的時間返回它的響應。
如果設置了可選標誌,標籤應當等到幀結束標識並且返回它的響應。

3.11.1 命令格式

這裏寫圖片描述

3.11.2 命令響應

這裏寫圖片描述

3.12 寫DSFID命令(Write DSFID command)【命令碼:0x29】

當標籤接收到寫DSFID命令時,標籤應當將DSFID的值寫入到它的內存。
如果沒有設置可選標誌,當完成寫DSFID操作時,標籤應當在規定的時間內返回它的響應。
如果設置了可選標誌,標籤應當等到幀結束標識並隨後返回他的響應。

3.12.1 命令格式

這裏寫圖片描述

3.12.2 命令響應

這裏寫圖片描述

3.13 鎖DSFID命令(Lock DSFID)【命令碼:0x2A】

當標籤接收到鎖DSFID命令時,標籤應當將DSFID的值永久鎖定到內存。
如果可選標誌沒有被設置,當完成鎖DSFID操作時,標籤應當在規定時間返回它的響應。
如果設置了可選標誌,那麼標籤應當等到幀結束標誌後才返回它的響應。

3.13.1 命令格式

這裏寫圖片描述

3.13.2 命令響應

這裏寫圖片描述

這裏寫圖片描述

3.14 獲取標籤系統信息命令(Get system information)【命令碼:0x2B】

該命令用於獲取標籤系統的信息,包含各種屬性。

3.14.1 命令格式

這裏寫圖片描述
Get system info的定義如下表:
這裏寫圖片描述

3.14.2 響應命令

這裏寫圖片描述

3.15 獲取多塊的安全狀態命令(Get multiple block security status)【命令碼:0x2C】

當標籤接收到獲取多塊安全狀態命令時,標籤應當返回塊的安全狀態。
塊的序號從0x00到0xFF。

3.15.1 命令格式

這裏寫圖片描述

3.15.2 命令響應

這裏寫圖片描述

3.16 自定義命令

3.16.1 命令格式

這裏寫圖片描述

3.16.2 命令響應

這裏寫圖片描述

四、防碰撞

ISO15693的防碰撞有兩種方式,一種是單時隙,一種是十六時隙。其中單時隙是一種面向比特位的的算法,它和ISO14443A的防碰撞算法類似,而十六時隙算法則是基於時隙,類似於ISO14443B的防碰撞算法。以後有時間介紹。待續……

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章