[CH02-1.4] Type2 TAG 第一次大發現

一般NFC的TAG會依照控制資料類型碼的先後順序來存放在TAG的記憶體內。我們先以Type2剛出廠的TAG標籤為例,來看看其內的預設值。 雖然TYPE2的標籤記憶體的大小,必須視其採用的晶片而有所不同,但記憶體的結構是一樣的:由每4個位元組構成一個區塊(BLOCK)。 系統記錄會佔掉前面4個區塊,前3個區塊(BLOCK00-BLOCK02)用來存放由7個位元組所組成的唯一的序列碼(Unique ID Code,本例為:04:0F:CE:4D:9A:E3:2E:81)、檢查碼與2個位元組的記憶體讀寫控制碼(Lock Control byte: LOCK0-LOCK1); 而第四個區塊(BLOCK03)是NFC規範的記憶容量設定,標示之後用來存放NFC資料的記憶體空間大小。以本例中採用的NXP NTAG203晶片,其內容是:E1:10:12:00,前兩個位元組是代表採用NFC Forum標準,版本編號為1.0。之後的12h表示記憶體容量為18x8=144個位元組;最後的00h表示記憶體可以自由讀寫。


我們要注意是自第5個區塊(BLOCK04)之後的記憶體,就開始用來存放符合NFC協會規範的控制資料區塊TLV。 首先第一個位元組是的內容[01h],正表示是Lock Control TLV的開始,其後為[03h]表示個TLV含3個位元組的資料,其內容為[A0h, 10h, 44h]標示延伸記憶體的讀寫控制位元組所在位置與大小。 我們先看[44h]表示這個標籤記憶體結構是以每個分頁含有24(=16)個位元組,每個控制位元是控制ㄧ頁24(=16)個位元組;所以這些控制位元組所在記憶體的位址由[A0h]表示,就是在第Ah * 24 + 0h (=160)個的地方,共有[10h](=16)個這樣的控制位元。 看一下(圖.35)這些延伸的記憶體的讀寫控制位元組(LOCK2-LOCK3),是不是在區塊28h(=2*16+8)的開頭第一個位元組,就是第40*4+0=160個位元組的地方;而16個控制位元不是剛剛好2個位元組!

接著<Lock Control TLV>之後是[03h],就是<NDEF訊息TLV>的類型碼,其長度看下一個位元組是[00h],這就表示此TAG的NDEF訊息長度是0;也就是空白沒有任何記錄。 所以,NDEF訊息TLV就到此為止。 接著是[FEh],這就是NFC規範資料的結尾標示;也就是所謂的<Terminator TLV>。 ㄧ般的NFC讀寫裝置在處理NFC訊息就會到此結束,也正意味其訊息的長度是根據內容本身而異,並沒有固定的長度。

如果你對NDEF訊息的編寫開始感到興趣,你可以先跳到第3章繼續閱讀;在《深入NDEF精髓》的章節裡,我們要把焦點專注在<NDEF訊息TLV>,這個以[03]開頭的控制資料區塊,因為不同類型的晶片其<Lock Control TLV>及<Memory Control TLV>這兩個區塊會隨之不同,無法在此一一詳述,有興趣的讀者可前往NFC協會的網站下載詳細的規範與資料。

留言

熱門文章