很多同學在學習NFC 協定的時候,覺得NFC 的規範從底層到上層的應有盡有,有點無處下手的感覺。這裡就和大家分享下我曾經學習NFC 規範的經驗。如果有不對的地方,也請各位同學批評指正。NFC Forum 中有一個所有規範的清單,可以看到目前絕大部分的規範都已經正式釋出了,當然了雖然是正式釋出了,但是NFC FORUM 還在不停的bug fix 。表裡面并沒有列出NFC FORUM 的一些新項目,如NCI NG 和Wireless charging 等。
在對NFC 的某一個規範進行學習之前,首先要對NFC 規範的整體架構有一個大緻的了解,這樣的話,才能從整體上進行把握。這裡引用了NFC FORUM 中一個公開文檔中的三個架構圖。NFC 有三種工作模式,讀卡器(R/W ), 卡模拟(CE )和點對點(P2P ),那麼這三種模式也對應着不同的協定架構,這個其實與藍牙中的profile 很類似,即針對不同的應用,有不同的協定組合。
讀卡器模式或讀寫模式:
Analogue,也就是NFC實體層的協定,主要定義了NFC裝置的射頻特性,如射頻場的波形、強度等。
Digital Protocol,數字協定。實際上這裡就可以把它了解成NFC的MAC層協定,它定義了三種NFC技術,NFC-A/B/F,分别對應着ISO14443 TYPEA TYPEB以及Felica的規範,其中包括了初始化、沖突檢測等。同時它也定義了傳輸協定,如NFC-DEP,ISO-DEP等。這個數字協定實際上就是ISO/IEC14443, ISO18092的一個合體。這裡要說明一下,在這個架構圖中其實還有一個Activity的規範,它可以說是Digital的一個補充。Digital中定義了幀格式,編碼等通信的功能,但是如何使用Digital中的定義的幀來完成通信,則是在Activity規範中定義的。Activity中定義了一大堆的流程圖及狀态轉移圖,用來描述Digital規範中的内容是如何工作的,這樣看來其實Acitivity規範也應該就是Digital中的一部分。
以上這三個協定是NFC 通信的基礎,在NFC 的三種模式下,都要使用這三個底層的協定。可以說這三個協定是整個NFC 通信的基礎,掌握了這三個協定可以說對于NFC 的了解就成了一半。當然這也是NFC 中閱讀起來最難的三個協定,當然了如果你對ISO14443/18092 有了解的話,了解起來就比價輕松了,畢竟這些底層協定與非接觸卡規範是一脈相承的。
TYPE1-4 TAG OPERATION: 定義了如何從TYPE1/2/3/4 中讀寫NDEF 消息。這裡TYPE1/2 對應着ISO14443TYPEA ,而TYPE3 對應着SONY 的Felica ,TYPE4 是一個開放的TAG 标準,即ISO14443 TYPEA TYPEB 和ISO 7816-4 ;
NDEF REFERENCE APPLICATON :是NFC Forum 的RAF 工作組定義的一些應用規範,這些應用規範并不是強制性的,主要是提供一些參考,但實際上很多廠家都會使用RAF 提供的參考規範來開發應用,比如說連接配接切換(Connection handover )用于NFC 為藍牙或WIFI 進行連接配接的建立。
Third Party NDEF Application :是由第三方開發的基于NDEF 消息的應用。NON-NDEF Application :如果不是基于NDEF 的應用,實際上就是直接調用Digital 協定進行應用資料的封裝,即将應用資料直接映射到Digital 中定義的幀格式中。
點對點模式:
LLCP:既然是P2P連接配接,那麼必然就牽涉到邏輯鍊路的管理,是以需要一個LLCP層,用于鍊路的建立、拆除、維護等功能,同時還提供面向連接配接和無連接配接的服務等。
Simple NDEF Exchange protocol (SNEP ):在P2P 模式下定義了如何進行NDEF 消息的互動。SNEP 的通信模式就是請求/ 相應模式,及initator 向Target 發送SNEPrequest ,Target 向Initiator 回應SNEP Response 消息。SNEP 的請求和響應消息中包含了NDEF 格式的資料。這裡對NDEF 做一個簡單的說明,其實NDEF 應該是做上層應用的開發人員直接面對的,如在ANDROID 中,基于Framework 中的NFC API 很多都是與NDEF 格式相關的。NDEF 其實就是NFC Forum 中定義的一種标準的消息格式,不僅用在了P2P 中,也用在了讀卡器模式中。NDEF 是由RECORD(RTD, 記錄) 組成的,真正的使用者資料就是存放在RTD 中的。NFC FORUM 定義了不同的RTD 規範,如TEXT, URI ,Signature 等等。注意一點,在這P2P 的圖和R/W 的圖中,并沒有顯示的描述NDEF 規範。
Protocol Bindings ,這裡NFC FORUM 提了兩個規範一個是OBEX 的映射,另一個是IP 協定的映射,是将這些協定能夠映射到LLCP 協商中。但是在NFC FORUM 中,最終取消這兩個協定,是因為這兩個協定并沒有起到任何作用。這些都會在以後給大家介紹。
卡模拟模式:
從協定架構上來說,這個架構确實是這樣的,貌似是比較簡單的,但是個人感覺卡模拟模式還是蠻複雜的,因為随着SE( 安全單元,之前也稱為NFCEE) 及NCI 規範的引入,不僅SE 可以模拟成卡、DH( 主機) 和NFCC(NFC 控制器) 也都可以模拟成卡。這在以後的介紹中也也會向大家說明。file:///C:/DOCUME~1/QWJ/LOCALS~1/Temp/msohtmlclip1/01/clip_image006.gif
介紹完基本的NFC 協定架構後,這裡簡單的提一下NCI 規範,全稱NFC Controller interface ,主要的作用是将DH (Device host ,主機,在手機中可以看做是手機的AP )和NFCC( 可以看做手機中的NFC 晶片,如PN544 等) 之間的消息标準化,讓我們的手機CPU 不用對每一個廠家的NFC 晶片都做适配,隻要CPU 和NFC 晶片都遵守NCI 規範就可以了,當然了NFC 晶片的驅動還是要适配的,呵呵。了解藍牙的同學應該很容易了解,這就是藍牙規範中的HCI 接口,它們的設計理念是一緻的。據說,Google 正在為Android 開發NCI 。