P.9 [下部練劍] 丹究自如篇
『所謂劍法,無招為上,然須有招。招若如雷,以簡為勝,繁則無速。』
ISO 15693 是NFC協會最新加入第5型的標籤;雖然如此,此類的標籤,早在工業上的用途大放異彩,例如:洗衣標籤、CD唱片貼標、貨櫃封條、馬拉松鞋標等。其特長之處在於:可以讀取的距離、一次讀取多個標籤等方面,均優於 ISO 14443 的標籤。市面上,比較容易買到此類型晶片的品牌有:NXP 的 I-CODE、ST 的 ST25TV,以及 SIC 的 SIC5601 等系列。
如今,拿到NFC的領域來用,必須先經過 NDEF 的格式化,才能正常在 NFC手機間使用。不過要注意,目前在AppStore上架的 App 大多只支援此類型格式化過的標籤。在 [煉丹利器篇] 介紹的 App 當中,也只有 ST 的 [NFC Tap] 這個 App 在 iOS 上有比較完整的支援;在使用上,雖然以支援自家的晶片為主,但也可以用在其他家晶片的 NDEF的格式化,算是相當便利。
在 [先訣] 篇中, 有略為提到第 2 型的標籤晶片架構,而第 5 型的標籤(以下稱T5標籤)一樣含有唯一的UID碼,但為以0xE0開頭的8個位元組;其記憶體也以每4個位元組為一區塊(Block)的定址方式,其中的第一個區塊(Block0),是所謂的記憶容量設定區塊-CC(Capability Container) File ,NFC的手機在解析標籤時,都會以此為據。而後連續的區塊可作為紀錄 NDEF 訊息之用。所以,在對 T5標籤做格式化時,就必須先知道你使用的標籤,可作為NDEF使用的記憶體容量有多少。要特別提醒的是,每一種類型的標籤其CC File的定義會有不同,先必須查詢NFC協會所定義的規範。
T5的標籤,其CC File格式仍是連續的4個位元組 (Byte0 ~ Byte3):
- 首先 Byte0 被稱作“Magic Number”,為NFC協會鑑別碼(0xE1);
- 再來 Byte1 是採用規範的版本編號與記憶體存取狀況,前4個位元來表示X.Y版(例如1.0版=0100b;而後4個位元的前兩個位元表示讀取記憶體時的狀況,後兩個位元為寫入狀況:設定方法均是 00b為無限制,10b為限制保護;
- 其次 Byte2 是可作為NDEF的容量,為記憶體總數除以8來記載。例如:某標籤有128個位元組,如果扣除 CC File,剩下124個位元組;如果全拿來用並取整數,則為 124 % 8 = 15 (0x0F)。
- 最後 Byte3 是各晶片的附加設定項目,依其資料表定義。通常如無附加,則為0x00。
以上的例子,CC File = [ E1 40 0F 00 ]。除了,在 Block0 寫入 CC File,還需要對NDEF訊息初值化,意即在 Block1 寫入 [ 03 00 FE 00 ] ,代表 NDEF TLV 為一空白訊息。
接下來,會使用 [NFC Tap] 來進行設定:
- 啟動後在主畫面按 [Read Tag],然後置入空白的T5標籤,會出現該標籤的基本訊息;因為沒有CC File設定,所以出現編輯CC File的選擇視窗。除非你已經知道可作為NDEF的容量,否則請在選擇編輯後下滑來忽略。此時你可以看到基本資訊裡的記憶體大小,請計算要作為NDEF的數量,確認CC File內容。
- 再次按主畫面底端的 [SACN] 或 [Tag Memory] 來寫入CC File。前者,回到上一步驟直接進入 [Edit CC File],或後者選 [Write]-> 選 [writeSingle Block] -> 填入 Block Address: [0] -> 填入 Block Data: [E1400F00] -> 按 [Start] 開始寫入。
- 在步驟2的寫入NDEF初值:選 [writeSingle Block] -> 填入 Block Address: [1] -> 填入 Block Data: [0300FE00] -> 按 [Start] 開始寫入。
完成上述格式化後,你已經擁有一個可以紀錄NDEF的NFC T5標籤。但,如果只是要作為捷徑的自動化觸發器之用,那就可以不必大費周章了,因為NFC的觸發僅使用UID就可以了。
留言
張貼留言