孫成丹 彭木根
近場(chǎng)通信技術(shù)近年來(lái)逐漸受到人們的關(guān)注,相關(guān)的技術(shù)標(biāo)準(zhǔn)和協(xié)議規(guī)范也日臻完善。講座將分3期對(duì)該技術(shù)進(jìn)行介紹:第1期講述近場(chǎng)通信的背景及概況,概述性介紹近場(chǎng)通信技術(shù)的技術(shù)架構(gòu);第2期對(duì)近場(chǎng)通信的具體技術(shù)規(guī)范做詳細(xì)介紹,包括數(shù)字協(xié)議規(guī)范、相關(guān)動(dòng)作規(guī)范、邏輯鏈路控制協(xié)議、標(biāo)簽類(lèi)型及數(shù)據(jù)交換格式;第3期介紹近場(chǎng)通信的安全技術(shù)、設(shè)備的連接切換規(guī)范和業(yè)務(wù)應(yīng)用。
近場(chǎng)通信技術(shù)的技術(shù)架構(gòu)包含多方面的協(xié)議規(guī)范,完整掌握其技術(shù)架構(gòu)對(duì)于全面認(rèn)識(shí)NFC技術(shù)至關(guān)重要。本期將依照其技術(shù)架構(gòu)介紹近場(chǎng)通信技術(shù)的各協(xié)議規(guī)范內(nèi)容,包括數(shù)字協(xié)議規(guī)范、相關(guān)動(dòng)作規(guī)范、鏈路控制協(xié)議、近場(chǎng)通信的標(biāo)簽和數(shù)據(jù)交換格式。上一期介紹了近場(chǎng)通信的概況,描述了NFC的整體技術(shù)架構(gòu);下一期將介紹近場(chǎng)通信的安全技術(shù)、設(shè)備連接切換規(guī)范,和NFC的業(yè)務(wù)與應(yīng)用情況。
3 近場(chǎng)通信技術(shù)規(guī)范解析
3.1 數(shù)字協(xié)議規(guī)范
數(shù)字協(xié)議規(guī)范主要定義了用于完成通信的構(gòu)件,是實(shí)現(xiàn)ISO/IEC 18092和ISO/IEC 14443標(biāo)準(zhǔn)中數(shù)字技術(shù)的規(guī)范。主要包括調(diào)制機(jī)制、比特級(jí)編碼、比特速率、幀格式、相關(guān)協(xié)議和命令集。在該規(guī)范中也定義了一些可選項(xiàng),實(shí)現(xiàn)時(shí)可自主選擇,如果選擇實(shí)現(xiàn)這些可選項(xiàng)則必須符合規(guī)范中指定的需求[3]。
數(shù)字信號(hào)的比特周期為1 bd = 128/(D×fe )。fe 為載波頻率13.56 MHz,D依賴于所選擇的比特速率,取值范圍為1/2/4/8/16/32/64。
在規(guī)范中定義了專(zhuān)有名詞——技術(shù),分為NFC-A技術(shù)、NFC-B技術(shù)和NFC-F技術(shù)。
NFC-A技術(shù)下的序列格式要求為:輪詢模式向監(jiān)聽(tīng)模式傳輸?shù)哪M信號(hào)需要對(duì)改進(jìn)的密勒碼進(jìn)行100%幅移鍵控(ASK)調(diào)制,改進(jìn)的密勒碼定義了3個(gè)特定的圖案X/Y/Z,這3種圖案按照需求編碼為邏輯0和邏輯1;監(jiān)聽(tīng)模式向輪詢模式傳輸?shù)哪M信號(hào)需要對(duì)曼徹斯特碼進(jìn)行二進(jìn)制啟閉鍵控(OOK)子載波調(diào)制,密勒碼也定義了3種特定圖案D/E/F,圖案D和E按照需求編碼為邏輯0和邏輯1;NFC-A技術(shù)不需要信號(hào)同步,因此沒(méi)有開(kāi)始符(SoS)標(biāo)識(shí),并由終止符(EoS)標(biāo)識(shí)指示序列結(jié)束[4-5]。
在NFC設(shè)備間傳輸?shù)臄?shù)據(jù)被劃分為幀。每種技術(shù)對(duì)應(yīng)的幀格式各不相同。NFC-A技術(shù)通過(guò)在數(shù)據(jù)比特前后加上開(kāi)始幀(SoF)和結(jié)束幀(EoF)來(lái)形成幀,同時(shí)每隔8 bit末尾加一位奇偶校驗(yàn)位P。NFC-A技術(shù)使用3種幀結(jié)構(gòu):短幀、標(biāo)準(zhǔn)幀和比特導(dǎo)向的信號(hào)設(shè)備識(shí)別(SDD)幀。短幀用于初始化通信,作用于喚醒階段;標(biāo)準(zhǔn)幀用于數(shù)據(jù)交換;比特導(dǎo)向SDD幀用于沖突解決。
NFC設(shè)備間交換的凈負(fù)荷由命令及相應(yīng)的響應(yīng)組成。采用NFC-A技術(shù)的設(shè)備常用的命令及含義包括:ALL_REQ用于喚醒全部請(qǐng)求,SENS_REQ用于檢測(cè)請(qǐng)求,SDD_REQ用于單設(shè)備檢測(cè)請(qǐng)求,SEL_REQ用于選擇請(qǐng)求,SLP_REQ用于睡眠請(qǐng)求。
NFC-B技術(shù)下的序列格式要求為:輪詢模式向監(jiān)聽(tīng)模式傳輸?shù)哪M信號(hào)需要對(duì)非歸零電平編碼(NRZ-L)進(jìn)行10%ASK調(diào)制;監(jiān)聽(tīng)模式向輪詢模式傳輸?shù)哪M信號(hào)需要對(duì)NRZ-L碼進(jìn)行二相相移鍵控(BPSK)調(diào)制;NFC-B技術(shù)支持信號(hào)同步,因此信號(hào)以SoS標(biāo)識(shí)開(kāi)始,由EoS標(biāo)識(shí)指示序列結(jié)束。
采用NFC-B技術(shù)的設(shè)備用于傳輸數(shù)據(jù)的幀由字符構(gòu)成。一個(gè)字符由邏輯0開(kāi)始,邏輯1作為結(jié)束,中間包含8位數(shù)據(jù)比特。
NFC-B設(shè)備間交換的凈負(fù)荷由命令及相應(yīng)的響應(yīng)組成。采用NFC-B技術(shù)的設(shè)備常用的命令及其含義為:ALLB_REQ和SENSB_REQ用于輪詢模式下的設(shè)備偵測(cè)操作域,SLOT_MARKER用于輪訓(xùn)模式下的設(shè)備在沖突解決期間定義響應(yīng)時(shí)隙的開(kāi)始,SLPB_REQ用于睡眠請(qǐng)求。
NFC-F技術(shù)下的序列格式要求為:在兩個(gè)傳輸方向上傳輸?shù)哪M信號(hào)均采用對(duì)曼徹斯特碼進(jìn)行ASK調(diào)制的方式傳輸。NFC-F技術(shù)的幀的字符有8位數(shù)據(jù)bit組成,不包含起始位、結(jié)束位和奇偶校驗(yàn)位。字符之間沒(méi)有分隔符,被當(dāng)做連續(xù)的字符串來(lái)傳輸。
采用NFC-F技術(shù)的設(shè)備使用SENSF_REQ命令探測(cè)操作域。SENSF_RES為相應(yīng)的響應(yīng)。
3.2 相關(guān)動(dòng)作規(guī)范
本節(jié)描述了NFC設(shè)備如何利用數(shù)字協(xié)議規(guī)范與其他設(shè)備建立通信,介紹了這個(gè)過(guò)程中的一系列動(dòng)作。我們分監(jiān)聽(tīng)模式和輪訓(xùn)模式兩種情況進(jìn)行介紹。
在監(jiān)聽(tīng)模式下,運(yùn)行監(jiān)聽(tīng)模式狀態(tài)機(jī)之前需要設(shè)置相應(yīng)的配置參數(shù)。我們將給出一些常用的相關(guān)參數(shù)信息。
·CON_LISTEN_DEP_A參數(shù),大小為1 bit二進(jìn)制位,用于控制是否監(jiān)聽(tīng)支持NFC的數(shù)據(jù)交換協(xié)議(NFC-DEP)的NFC-A技術(shù),1表示監(jiān)聽(tīng)相應(yīng)的NFC-A技術(shù),0表示不監(jiān)聽(tīng)相應(yīng)技術(shù)。
·CON_LISTEN_DEP_F參數(shù),大小為1 bit二進(jìn)制位,用于控制是否監(jiān)聽(tīng)支持NFC-DEP的NFC-F技術(shù),1表示監(jiān)聽(tīng)相應(yīng)的NFC-F技術(shù),0表示不監(jiān)聽(tīng)相應(yīng)技術(shù)。
·CON_LISTEN_T3TP參數(shù),大小為1 bit二進(jìn)制位,用于控制是否監(jiān)聽(tīng)支持第三類(lèi)標(biāo)簽平臺(tái)的NFC-F技術(shù),1表示使能監(jiān)聽(tīng),0表示禁止監(jiān)聽(tīng)。
·CON_LISTEN_T4ATP參數(shù),大小為1 bit二進(jìn)制位,該位為1表示監(jiān)聽(tīng)支持第四類(lèi)標(biāo)簽平臺(tái)的NFC-A技術(shù),該位為0表示禁止相應(yīng)功能。
其他常見(jiàn)的參數(shù)還包括CON_LISTEN_T4BTP 、CON_BITR_F、CON_ADV_FEAT、CON_SYS_CODE、CON_SENSF_RES、CON_ATR_RES、CON_SENSB_RES、CON_ATTRIB_RES和CON_ATS,除CON_BITR_F之外的參數(shù)均為字節(jié)矩陣變量,CON_BITR_F為以字節(jié)的整型參數(shù),當(dāng)設(shè)備選擇212 kbit/s速率時(shí),該字節(jié)的第2位必須設(shè)置為1,當(dāng)設(shè)備選擇424 kbit/s速率時(shí),字節(jié)的第3位必須設(shè)置為1。需要說(shuō)明的是,在NFC-B和NFC-F技術(shù)下,當(dāng)需要發(fā)送多個(gè)響應(yīng)時(shí),處于監(jiān)聽(tīng)模式的NFC設(shè)備在單個(gè)時(shí)隙中應(yīng)該只發(fā)送一個(gè)響應(yīng),通過(guò)多個(gè)時(shí)隙來(lái)完成多響應(yīng)的發(fā)送工作。如果處于監(jiān)聽(tīng)模式下的NFC設(shè)備對(duì)單個(gè)輪詢命令做出多個(gè)響應(yīng),那么該設(shè)備必須為每個(gè)響應(yīng)預(yù)知配置參數(shù),或者當(dāng)所有響應(yīng)均不能發(fā)送時(shí),設(shè)備需要預(yù)知對(duì)應(yīng)的標(biāo)準(zhǔn)以決定發(fā)送哪個(gè)響應(yīng)子集。在監(jiān)聽(tīng)模式下,NFC設(shè)備支持CON_LISTEN_DEP_F和CON_LISTEN_T3TP參數(shù),則依據(jù)需求該設(shè)備實(shí)現(xiàn)兩個(gè)獨(dú)立的狀態(tài)機(jī)[6]。
在輪詢模式下,設(shè)備必須進(jìn)行射頻域沖突規(guī)避功能。首先,設(shè)備需要在TID + n ×T RFW時(shí)間內(nèi)感知是否存在遠(yuǎn)場(chǎng)磁場(chǎng)。如果在上述時(shí)間內(nèi)未檢測(cè)到遠(yuǎn)場(chǎng)磁場(chǎng),則設(shè)備進(jìn)入下一步,若檢測(cè)到磁場(chǎng)則NFC設(shè)備判定射頻域沖突,需要進(jìn)行沖突規(guī)避。其中,TID必須大于4 096/fc,T RFW等于512/f c,整數(shù)n在0~3間隨機(jī)產(chǎn)生。沖突規(guī)避流程如圖5 所示。
常用的動(dòng)作包括:技術(shù)偵測(cè)、沖突辨析、設(shè)備激活、數(shù)據(jù)交換和設(shè)備去激活。技術(shù)偵測(cè)用于當(dāng)前設(shè)備偵測(cè)其范圍內(nèi)的設(shè)備及所采用的技術(shù)。在偵測(cè)設(shè)備所使用的技術(shù)時(shí),固定按照NFC-A、NFC-B、NFC-F的順序輪詢。沖突辨析動(dòng)作用于設(shè)備識(shí)別當(dāng)前范圍內(nèi)與其支持相同技術(shù)(及NFC-A/NFC-B/NFC-F)的設(shè)備。設(shè)備激活用于從技術(shù)偵測(cè)階段和沖突辨析階段識(shí)別的設(shè)備集中激活某個(gè)設(shè)備。這個(gè)過(guò)程也與設(shè)備所使用的具體技術(shù)相關(guān)。數(shù)據(jù)交換動(dòng)作,使得當(dāng)前設(shè)備基于NFC協(xié)議規(guī)范可以與范圍內(nèi)的設(shè)備進(jìn)行數(shù)據(jù)交換并完成通信。這個(gè)過(guò)程需要考慮到設(shè)備所采用的標(biāo)簽類(lèi)型平臺(tái)。設(shè)備去激活的作用是:通過(guò)基于NFC規(guī)范的通信過(guò)程,對(duì)當(dāng)前設(shè)備范圍內(nèi)的某個(gè)NFC設(shè)備進(jìn)行去激活操作。
3.3 邏輯鏈路控制協(xié)議
這一章中我們將介紹NFC協(xié)議中邏輯鏈路控制層(LLC)的部分功能、特征及相關(guān)協(xié)議。LLC層構(gòu)成了開(kāi)放式系統(tǒng)互聯(lián)(OSI)模型中數(shù)據(jù)鏈路層的上半層,下半層由媒體介入控制層(MAC)構(gòu)成。MAC層和LLC層通過(guò)一系列映射實(shí)現(xiàn)兩者之間協(xié)議的綁定。
邏輯鏈路控制協(xié)議的主要特點(diǎn)包括以下幾點(diǎn):
·鏈路激活、管理與去激活。邏輯鏈路控制協(xié)議(LLCP)說(shuō)明了處于通信范圍內(nèi)的兩個(gè)NFC設(shè)備如何識(shí)別協(xié)議的兼容性,如何建立LLCP鏈路,協(xié)議也包括如何管理與遠(yuǎn)端對(duì)等設(shè)備的連接,在需要的情況下可以對(duì)鏈路實(shí)行去激活操作。
·異步均衡通信。傳統(tǒng)上,在MAC層只有發(fā)起者能開(kāi)始發(fā)送數(shù)據(jù)和請(qǐng)求數(shù)據(jù),而LLCP協(xié)議通過(guò)使用對(duì)稱機(jī)制可以實(shí)現(xiàn)對(duì)等設(shè)備間的異步平衡模式(ABM)。通過(guò)ABM,服務(wù)端點(diǎn)可以在認(rèn)識(shí)時(shí)刻進(jìn)行初始化、管理、回復(fù)、發(fā)送信息等操作。
·協(xié)議復(fù)用。LLCP可以同時(shí)容納多個(gè)高層協(xié)議。
·無(wú)連接傳輸。該模式允許用戶進(jìn)行無(wú)連接的數(shù)據(jù)傳輸服務(wù)。當(dāng)上層協(xié)議使用自身的流控制協(xié)議而不需要依靠鏈路的流控制機(jī)制時(shí)可以使用這種傳輸模式。
·面向連接傳輸。這種模式可以使得用戶間進(jìn)行可靠的數(shù)據(jù)傳輸。業(yè)務(wù)流量通過(guò)滑窗協(xié)議的編號(hào)機(jī)制得以控制。面向連接的傳輸模式需要在進(jìn)行數(shù)據(jù)傳輸前先行建立鏈路連接并且在連接持續(xù)期間始終保持資源分配。
邏輯鏈路控制協(xié)議可以劃分為以下幾個(gè)邏輯組件:
·MAC層映射。該層映射將現(xiàn)有的射頻(RF)協(xié)議集成到LLCP架構(gòu)中。
·鏈路管理組件。該組件負(fù)責(zé)所有面向連接和無(wú)連接的邏輯鏈路協(xié)議數(shù)據(jù)單元(PDU)交換的有序進(jìn)行,以及完成小PDU的聚合與解聚操作。該組件也確保異步平衡模式通信的完成,并且可以實(shí)現(xiàn)對(duì)鏈路狀態(tài)的監(jiān)測(cè)。
·面向連接傳輸組件。該組件完成面向連接的數(shù)據(jù)交換,也包括連接的建立和結(jié)束。
·無(wú)連接傳輸組件。該組件完成無(wú)連接的數(shù)據(jù)交換。
各組件的結(jié)構(gòu)如圖6所示。
根據(jù)LLC層的數(shù)據(jù)傳輸形式,NFC設(shè)備可以分為3類(lèi):僅提供無(wú)連接傳輸服務(wù)的設(shè)備為第1類(lèi)鏈路服務(wù);僅提供面向連接傳輸服務(wù)的設(shè)備為第2類(lèi)鏈路服務(wù);同時(shí)提供無(wú)連接和面向連接傳輸服務(wù)的設(shè)備為第3類(lèi)鏈路服務(wù)。
邏輯鏈路控制層的PDU格式中包括目的地址域、PDU類(lèi)別域、源地址域、序號(hào)域和信息域5部分。
地址域(目的地址和源地址)長(zhǎng)度為6 bit位,用于表征數(shù)據(jù)傳輸?shù)慕K點(diǎn)和起點(diǎn)。其中,0號(hào)地址用于指定LLC鏈路管理組件,不應(yīng)用于指定任何特定的服務(wù)接入點(diǎn);1號(hào)地址用于為服務(wù)發(fā)現(xiàn)協(xié)議(SDP)指定知名的服務(wù)接入點(diǎn);2—15號(hào)地址為NFC論壇號(hào)碼分配寄存器中指定的知名服務(wù)接入點(diǎn)留用;16—31號(hào)地址由局部LLC分配給在局部服務(wù)環(huán)境下注冊(cè)的服務(wù);32—63號(hào)地址由本地LLC按照上層服務(wù)請(qǐng)求進(jìn)行分配,不應(yīng)用于SDP協(xié)議的發(fā)現(xiàn)功能。
PDU類(lèi)別域長(zhǎng)度為4 bit位,用于為PDU其他域指明語(yǔ)法和語(yǔ)義,每一個(gè)值對(duì)應(yīng)一種PDU類(lèi)別。其中值1111b預(yù)留用于未來(lái)LLCP頭格式的擴(kuò)展。
序號(hào)域在包含序號(hào)的PDU中長(zhǎng)8 bit位,不包含序號(hào)的PDU中沒(méi)有該域。該8 bit經(jīng)常分為兩個(gè)4 bit子域,分別指明發(fā)送序列號(hào)和接受序列號(hào)。
信息域大小為M × 8 bit,M變化范圍為0至最大信息單元(MIU)。信息域可以為空,即不傳輸任何有用的信息。
LLC層過(guò)程主要包括鏈路激活過(guò)程、常規(guī)操作過(guò)程、鏈路去激活過(guò)程、無(wú)連接傳輸過(guò)程、面向連接傳輸過(guò)程、聚合過(guò)程、對(duì)稱過(guò)程和服務(wù)發(fā)現(xiàn)過(guò)程[7]。
3.4 標(biāo)簽類(lèi)型
近場(chǎng)通信技術(shù)的關(guān)鍵要素之一,在于NFC裝置與無(wú)源NFC標(biāo)簽溝通的能力。NFC技術(shù)的這一特征,是未來(lái)許多應(yīng)用得以實(shí)現(xiàn)的關(guān)鍵。NFC標(biāo)簽正在被大量生產(chǎn)并應(yīng)用在全球若干個(gè)領(lǐng)域。為了支持未來(lái)標(biāo)簽的大規(guī)模應(yīng)用,標(biāo)簽的定義必須清晰,以確保不同制造商的標(biāo)簽與設(shè)備達(dá)到兼容。
NFC標(biāo)簽是無(wú)源裝置,可以實(shí)現(xiàn)與有源NFC設(shè)備(有源NFC讀寫(xiě)器)通信,NFC標(biāo)簽可以在以下領(lǐng)域中獲得應(yīng)用,如智能海報(bào)以及其他儲(chǔ)存小量數(shù)據(jù)并傳輸?shù)街鲃?dòng)式NFC裝置的場(chǎng)合。在智能海報(bào)應(yīng)用中,起作用的部分可用來(lái)作為與主動(dòng)設(shè)備的接觸點(diǎn)。NFC標(biāo)簽所儲(chǔ)存的數(shù)據(jù)可以是任何形式的數(shù)據(jù),但通常情況下是用來(lái)貯存網(wǎng)址(URL)以供NFC裝置找到進(jìn)一步的信息。因?yàn)樗璐鎯?chǔ)交換的數(shù)據(jù)量很少,故可使用NFC標(biāo)簽來(lái)實(shí)現(xiàn)。
為了規(guī)范化有源NFC讀寫(xiě)器與無(wú)源標(biāo)簽之間的通信,NFC論壇在2006年6月推出了其第一個(gè)標(biāo)準(zhǔn)技術(shù)架構(gòu)和NFC設(shè)備需滿足的技術(shù)標(biāo)準(zhǔn),包括:NFC數(shù)據(jù)交換格式(NDEF)、3種記錄類(lèi)型定義(RTD)。這些技術(shù)可以用于智能海報(bào)、文本、互聯(lián)網(wǎng)資源讀取應(yīng)用。
NFC論壇定義了4種基本的標(biāo)簽類(lèi)型,用1—4來(lái)標(biāo)識(shí),每種標(biāo)簽類(lèi)型對(duì)應(yīng)不同的格式和容量。這些標(biāo)簽類(lèi)型格式的基礎(chǔ)是:ISO 14443的A類(lèi)型與B類(lèi)型、Sony FeliCa,前者是非接觸式智能卡的國(guó)際標(biāo)準(zhǔn),而后者符合ISO 18092無(wú)源通信模式標(biāo)準(zhǔn)。
在標(biāo)簽類(lèi)型的設(shè)計(jì)中需要最大限度保持NFC標(biāo)簽簡(jiǎn)單性,其優(yōu)勢(shì)在于:這些標(biāo)簽在很多應(yīng)用中僅作一次性使用,通常嵌入在海報(bào)中,而這些海報(bào)的生存周期及其所包含的信息的有效性很短。
各種類(lèi)型的標(biāo)簽的定義如下。
(1) 第1類(lèi)標(biāo)簽:此類(lèi)標(biāo)簽基于ISO14443A標(biāo)準(zhǔn)。此類(lèi)標(biāo)簽具有可讀功能和重新寫(xiě)入功能,用戶也可根據(jù)需要將其配置為只讀模式。該類(lèi)標(biāo)簽存儲(chǔ)能力為96字節(jié),足以用來(lái)存網(wǎng)址URL或其他少量數(shù)據(jù)。然而,如果用戶需要,內(nèi)存大小也可被擴(kuò)充到2 k字節(jié)。此類(lèi)NFC標(biāo)簽的通信速度為106 kbit/s。因?yàn)榇祟?lèi)標(biāo)簽的簡(jiǎn)潔性,故其成本低廉,適用于許多NFC應(yīng)用場(chǎng)合。
(2) 第2類(lèi)標(biāo)簽:除基本內(nèi)存大小改為48字節(jié),與第1類(lèi)標(biāo)簽無(wú)異。
(3) 第3類(lèi)標(biāo)簽:NFC第3類(lèi)標(biāo)簽基于Sony FeliCa體系。目前另3類(lèi)標(biāo)簽具有2 k字節(jié)的內(nèi)存容量,數(shù)據(jù)通信速度為212 kbit/s。盡管標(biāo)簽成本較高,但是此類(lèi)標(biāo)簽更適合較復(fù)雜的應(yīng)用場(chǎng)景。
(4) 第4類(lèi)標(biāo)簽:依據(jù)定義,此類(lèi)標(biāo)簽與ISO14443A、B標(biāo)準(zhǔn)兼容。在生產(chǎn)過(guò)程中此類(lèi)標(biāo)簽已經(jīng)被預(yù)配置為可讀/可重寫(xiě)模式或者只讀模式。該標(biāo)簽的內(nèi)存容量可以達(dá)到32 k字節(jié),并且其通信速度介于106 kbit/s和424 kbit/s之間。
從上述不同標(biāo)簽類(lèi)型的定義可以看出,標(biāo)簽類(lèi)型1和2與標(biāo)簽類(lèi)型3和4在內(nèi)存容量、構(gòu)成方面大不相同。因此它們的應(yīng)用場(chǎng)合不大可能有很多重疊。此外,第1與第2類(lèi)標(biāo)簽是雙態(tài)的,可根據(jù)需要配置為讀/寫(xiě)模式或者只讀模式。而第3與第4類(lèi)僅具有只讀功能,數(shù)據(jù)在生產(chǎn)時(shí)已經(jīng)寫(xiě)入或者可通過(guò)特殊的標(biāo)簽寫(xiě)入器來(lái)寫(xiě)入。
NFC標(biāo)簽是無(wú)源裝置,不需要獨(dú)立供電。標(biāo)簽從讀寫(xiě)器獲得很小的電源即可驅(qū)動(dòng)標(biāo)簽的電路,通過(guò)負(fù)載調(diào)制等技術(shù)將少量的信息傳輸?shù)阶x寫(xiě)器,完成交互。這些數(shù)據(jù)可能是少量的文本或其他數(shù)據(jù),雖然數(shù)據(jù)量很小,卻可能通過(guò)僅有的數(shù)據(jù)把設(shè)備導(dǎo)向到某個(gè)URL以獲得更多的信息。
NFC標(biāo)簽設(shè)計(jì)與制造需要考慮很多方面。需要在保持性能的前提下,實(shí)現(xiàn)低成本大規(guī)模的批量制造。因此在設(shè)計(jì)標(biāo)簽時(shí),需要考慮下面幾個(gè)關(guān)鍵的性能參數(shù)與要素。
(1)讀取速度:因?yàn)樾枰趦蓚€(gè)NFC裝置接近時(shí)傳輸標(biāo)簽所含的所有數(shù)據(jù),故速度因素很重要。如果標(biāo)簽傳輸速度較慢,數(shù)據(jù)就不能及時(shí)傳輸,導(dǎo)致可靠性降低。第一類(lèi)NFC標(biāo)簽允許將所有數(shù)據(jù)整塊傳輸,這大大保持了標(biāo)簽的讀取性能。
(2)芯片尺寸:在NFC標(biāo)簽的設(shè)計(jì)中芯片尺寸非常重要。尺寸較小,則成本較低、標(biāo)簽也不會(huì)顯得很突兀(這對(duì)標(biāo)簽在智能海報(bào)中的應(yīng)用尤為重要)。很明顯,較小的內(nèi)存自然會(huì)降低晶片尺寸。
(3)單位價(jià)格:鑒于NFC標(biāo)簽的目標(biāo)應(yīng)用是成本低廉的場(chǎng)景(例如用于智能海報(bào)),單位價(jià)格是標(biāo)簽設(shè)計(jì)極其重要的一個(gè)因素。標(biāo)簽成本受一系列因素影響,諸如內(nèi)存大小和因包含附加特征帶來(lái)的集成電路的復(fù)雜性。把內(nèi)存和包含的特征盡可能簡(jiǎn)化,就可以有效降低成本。
3.5 數(shù)據(jù)交換格式
NFC數(shù)據(jù)交換格式(NDEF)定義了NFC設(shè)備之間以及設(shè)備與標(biāo)簽之間傳輸數(shù)據(jù)的一種消息封裝格式。NDEF是輕量級(jí)的緊湊的二進(jìn)制格式,其協(xié)議規(guī)范認(rèn)為設(shè)備之間傳輸?shù)男畔⒖梢苑庋b成一個(gè)NDEF消息,而一個(gè)消息可以由多個(gè)NDEF記錄構(gòu)成,每條記錄包含一個(gè)有效載荷,記錄中通過(guò)3個(gè)參數(shù)來(lái)描述該負(fù)荷,分別是類(lèi)別標(biāo)識(shí)、長(zhǎng)度標(biāo)識(shí)、其他可選標(biāo)識(shí)構(gòu)成。類(lèi)別標(biāo)識(shí)可以是通用資源標(biāo)識(shí)符(URI)、多用途互聯(lián)網(wǎng)郵件擴(kuò)展(MIME)媒質(zhì)或者NFC自定義的數(shù)據(jù)類(lèi)型。使用NFC定義的數(shù)據(jù)類(lèi)型,載荷內(nèi)容必須被定義在一個(gè)NFC記錄類(lèi)型定義(RTD)文檔中。負(fù)荷長(zhǎng)度是一個(gè)八進(jìn)制整數(shù)用來(lái)表征負(fù)荷中八位字節(jié)的數(shù)量,且對(duì)非常小的有效負(fù)荷需要采用緊湊的短型布局。而可選標(biāo)識(shí)可以實(shí)現(xiàn)凈負(fù)荷間的復(fù)用和交叉引用。
NDEF消息由一個(gè)或多個(gè)NDEF記錄構(gòu)成。消息中的第一個(gè)記錄由開(kāi)始信息(MB)標(biāo)記表示,最后一個(gè)記錄由結(jié)束信息(ME)標(biāo)記表示。最小的消息只包含一個(gè)記錄,此時(shí)MB標(biāo)記和ME標(biāo)記被設(shè)置為相同的值。如果對(duì)凈負(fù)荷進(jìn)行分塊操作,則為了對(duì)凈負(fù)荷塊進(jìn)行編碼,至少需要兩個(gè)記錄塊。需要說(shuō)明的是,規(guī)范對(duì)于NDEF消息中支持的最大NDEF記錄數(shù)未作規(guī)定。多個(gè)NDEF消息間不能重疊,即MB標(biāo)記和ME標(biāo)記不能用于對(duì)NDEF消息嵌套,MB標(biāo)記放置在第一個(gè)記錄中,ME標(biāo)記放置在最后一個(gè)記錄中。實(shí)際中,NDEF記錄中并不包含序號(hào),響應(yīng)的順序是由記錄的序列化順序隱性表示。
一個(gè)記錄塊承載一塊凈負(fù)荷,通常需要對(duì)凈負(fù)荷分塊,這樣可以將動(dòng)態(tài)生成的內(nèi)容或者非常大的實(shí)體分割成同一NDEF消息中序列化表示的多個(gè)記錄塊。分塊并不是將復(fù)用機(jī)制和數(shù)據(jù)流機(jī)制引入到NDEF中,它是一種減少數(shù)據(jù)生成端帶外緩沖需求的機(jī)制。一個(gè)NDEF消息包含0個(gè)或多個(gè)分塊的凈負(fù)荷,每一個(gè)分塊后的凈負(fù)荷按順序編碼成初始記錄塊、中間記錄塊和截止記錄塊。并且,分塊后的凈負(fù)荷一定要封裝在同一個(gè)NDEF消息中,即一個(gè)凈負(fù)荷不能同時(shí)存在于多個(gè)NDEF消息中。
NDEF記錄的傳輸次序由8位字節(jié)的位置決定。如果將一組8位字節(jié)放在網(wǎng)格中,則這些8位字節(jié)的傳輸順序?yàn)椋菏紫茸宰笙蛴遥S后自頂端至底端。如果一個(gè)8位字節(jié)表示一個(gè)數(shù)字量,則該字節(jié)最左端的bit位作為最高有效位(MSB),如果用多個(gè)8位字節(jié)組成的域來(lái)表示數(shù)字量,則該域的最左端bit為最高有效位。NFC規(guī)范中規(guī)定使用大端法傳輸這些數(shù)字量,先傳送最高有效位。
NDEF記錄長(zhǎng)度可變,且每個(gè)記錄包含多個(gè)頭部域和有效負(fù)荷,圖7展示了NDEF記錄布局。各頭部域標(biāo)記的功能如下。
·MB:長(zhǎng)度為1 bit位,置為1表示NDEF消息開(kāi)始。
·ME:長(zhǎng)度為1 bit位,置為1表示NDEF消息結(jié)束。如果對(duì)凈負(fù)荷分塊,則僅在該凈負(fù)荷的最后一個(gè)記錄中將ME置為1。在中間記錄位置上的MB和ME均為0。
·下一數(shù)據(jù)塊標(biāo)識(shí)(CF):長(zhǎng)度為1 bit位,置為1則表示存在著下一個(gè)記錄。
·短記錄(SR):長(zhǎng)度為1 bit位,置為1表示有效荷載長(zhǎng)度域只有一個(gè)8位字節(jié)。該標(biāo)記用于少量?jī)糌?fù)荷情況下的緊湊封裝。
·身份識(shí)別長(zhǎng)度(IL):長(zhǎng)度為1 bit位,置為1表示頭部身份識(shí)別長(zhǎng)度(ID_LENGTH)有效且為1個(gè)字節(jié)長(zhǎng),置為0表示記錄的頭部中不包含ID_LENGTH域和ID域。
·類(lèi)型名稱格式(TNF):長(zhǎng)度為3 bit位,表示8種類(lèi)型格式。0x00表示記錄中ID和負(fù)載域?yàn)榭眨?x01表示NFC論壇已定義的記錄類(lèi)型;0x02表示RFC2046中定義的媒體類(lèi)型;0x03表示RFC3986中定義的URI類(lèi)型;0x04表示NFC論壇外部類(lèi)型;0x05表示未知類(lèi)型;0x06為不可隨意改變的類(lèi)型;0x07作為保留值,有待研究。
·TYPE_LENGTH:長(zhǎng)度為8 bit位的無(wú)符號(hào)整數(shù),以字節(jié)為單位指定TYPE域的長(zhǎng)度。對(duì)于TNF域中的值,TYPE_LENGTH總是置為0。
·ID_LENGTH:長(zhǎng)度為8 bit位的無(wú)符號(hào)整數(shù),以字節(jié)為單位ID域的長(zhǎng)度。只有記錄頭部中的IL標(biāo)記為1時(shí)該域才有效。允許ID_LENGTH為0,此時(shí)表示NDEF記錄中不包含ID域。
·PAYLOAD_LENGTH:使用無(wú)符號(hào)整數(shù)表示PAYLOAD域字節(jié)長(zhǎng)度。該域大小由SR標(biāo)記決定。SR = 1,PAYLOAD_LENGTH是一個(gè)單個(gè)字節(jié),表示無(wú)符號(hào)8位整數(shù);SR = 0,該域大小為4字節(jié),表示一個(gè)32位無(wú)符號(hào)整數(shù)。
·TYPE:該域的值用來(lái)指示凈負(fù)荷的類(lèi)型。其值要遵循TNF域所指定的結(jié)構(gòu)、編碼方式和格式。
·PAYLOAD:該域承載NDEF用戶應(yīng)用的數(shù)據(jù),其外部結(jié)構(gòu)對(duì)于NDEF是非透明的。
最后,需要強(qiáng)調(diào)的是,在NDEF標(biāo)識(shí)符的設(shè)計(jì)中需要考慮國(guó)際慣例,以增加標(biāo)準(zhǔn)的實(shí)用性和統(tǒng)一性。比如,在URI與MIME媒體類(lèi)型標(biāo)識(shí)符的實(shí)現(xiàn)中,就需要參考RFC2718、RFC2046/RFC2047都能夠標(biāo)準(zhǔn)。 (待續(xù))
參考文獻(xiàn)
[3] NFC Forum. Connection handover technical specification 1.2[S]. 2010.
[4] NFC Forum. NFC activity specification technical specification 1.0[S]. 2010.
[5] NFC Forum. Logical link control protocol technical specification 1.1[S]. 2011.
[6] NFC Forum. Type 1 tag operation specification technical specification 1.1[S].2011.
[7] NFC Forum. Type 2 tag operation specification technical specification 1.1[S]. 2011.