基于BCM20793的NFC模塊設(shè)計(jì)
摘要:采用博通BCM20793芯片設(shè)計(jì)了NFC模塊,進(jìn)行硬件設(shè)計(jì),并進(jìn)行設(shè)備驅(qū)動(dòng)分析。多方面對(duì)該模塊進(jìn)行驗(yàn)證,結(jié)果表明該模塊穩(wěn)定、可靠、識(shí)別率高,可集成到支付、票務(wù)、門(mén)禁、防偽等系統(tǒng)中。
本文引用地址:http://2s4d.com/article/201610/306157.htm引言
NFC(Near Field Communication,近場(chǎng)通信)是由Philips和Sony聯(lián)合推出的一種全新的近距離無(wú)線通信技術(shù)。NFC是由無(wú)線射頻識(shí)別(RFID)及移動(dòng)終端技術(shù)綜合發(fā)展起來(lái)的,在單一芯片上結(jié)合感應(yīng)式讀卡器、感應(yīng)式卡片和點(diǎn)對(duì)點(diǎn)的功能,能在短距離內(nèi)與兼容設(shè)備進(jìn)行識(shí)別和數(shù)據(jù)交換。NFC工作頻率為 13.56 MHz,使用電磁感應(yīng)耦合進(jìn)行數(shù)據(jù)傳輸,具有雙向連接和識(shí)別特點(diǎn),兼容不同標(biāo)準(zhǔn)的識(shí)別技術(shù),通信距離小于4 cm,支持多種通信速率。由于受限于傳輸速率以及通信距離,NFC不適合大數(shù)據(jù)的傳輸,而且通信雙方必須有某種程度的相互信任。
NFC技術(shù)的出現(xiàn)改變了人們使用某些電子設(shè)備的方式,甚至改變了信用卡、現(xiàn)金和鑰匙的使用方式,它可以應(yīng)用在手機(jī)等便攜型設(shè)備上,實(shí)現(xiàn)安全的移動(dòng)支付和交易、簡(jiǎn)便的端到端通信、在移動(dòng)中輕松接入等功能。隨著智能手機(jī)的快速興起,NFC與智能手機(jī)的結(jié)合將很大程度上促進(jìn)NFC的發(fā)展,蘋(píng)果公司推出的 iPhone6也具備NFC功能,相信在不久的將來(lái)NFC必定被廣泛應(yīng)用。
本文采用博通BCM20793 NFC芯片并結(jié)合S3C6410主控制器,設(shè)計(jì)了具有主動(dòng)模式和被動(dòng)模式的NFC閱讀器,主要針對(duì)硬件和驅(qū)動(dòng)進(jìn)行了設(shè)計(jì)。
1 NFC技術(shù)原理
NFC有三種工作狀態(tài):Reader/Writer與NFC Tag/NFC Reader相關(guān);Peer—to—Peer支持兩個(gè)。NFC設(shè)備交互;Card Emulation能把攜帶NFC功能的設(shè)備模擬成SmartCard。這三種工作狀態(tài)又可歸結(jié)為被動(dòng)模式和主動(dòng)模式,在Reader/Writer和Card Emulation狀態(tài)下處于被動(dòng)模式,在Peer—to—Peer狀態(tài)下處于主動(dòng)模式。
在被動(dòng)模式下,主設(shè)備負(fù)責(zé)啟動(dòng)通信,同時(shí)通過(guò)RF線圈產(chǎn)生電磁感應(yīng),為從設(shè)備提供電能。在這種模式下傳輸速率可以選擇106 kbps、212 kbps或424 kbps,使用負(fù)載調(diào)制(load modulation)方式,將數(shù)據(jù)發(fā)送給從設(shè)備,從設(shè)備可以不含電源組件,采用相同的速率以負(fù)載調(diào)制方式將數(shù)據(jù)返回給主設(shè)備,整個(gè)通信過(guò)程如圖1所示。
此通信機(jī)制與基于ISO14443A、MIFARE和FeliCa的非接觸式智能卡兼容,其主要區(qū)別在于RF層信號(hào)調(diào)制解調(diào)的方法、傳輸速率及編碼方式。因此,NFC發(fā)起設(shè)備在被動(dòng)模式下,可以用相同的連接和初始化過(guò)程檢測(cè)非接觸式智能卡或NFC目標(biāo)設(shè)備,并與之建立聯(lián)系。
主動(dòng)模式下,設(shè)備之間進(jìn)行通信時(shí),發(fā)起設(shè)備和目標(biāo)設(shè)備都必須產(chǎn)生自己的射頻場(chǎng)來(lái)進(jìn)行通信。此種模式下NFC采用雙向識(shí)別和鏈接,通信各方不存在固定的主從關(guān)系,通信可以由任意一個(gè)NFC設(shè)備發(fā)起。這是對(duì)等網(wǎng)絡(luò)通信的標(biāo)準(zhǔn)模式,可以獲得非??焖俚捻憫?yīng)。其通信流程如圖2所示。
此外,快捷輕型的NFC協(xié)議還可以引導(dǎo)兩臺(tái)設(shè)備之間的藍(lán)牙配對(duì)過(guò)程。與其他無(wú)線通信技術(shù)相比,NFC是一種近距離私密通信方式,提供各種設(shè)備間輕松、安全、快速而自動(dòng)的通信。對(duì)RFID來(lái)說(shuō),其具有距離近、帶寬高、功耗低等特點(diǎn);比紅外更快、更穩(wěn)定而且簡(jiǎn)單;與藍(lán)牙相比,NFC通信距離近,適合交換重要數(shù)據(jù)。
2 硬件設(shè)計(jì)
NFC模塊主要由NFC(控制器,可與Device Host或Secure Element安全單元交互)、Antenna(天線)和Contactless Front-End(非接觸前段,負(fù)責(zé)射頻信號(hào)的調(diào)制解調(diào)工作)三部分組成。本設(shè)計(jì)采用BCM20793芯片,該芯片支持212或424 kbps的數(shù)據(jù)傳輸速率,是專為低功耗、低價(jià)格的設(shè)備設(shè)計(jì)的。該模塊提供PCI、I2C總線、UART串行接口,安全單元可以連接SD卡、SIM卡、SAM卡或是其他芯片,兼容多種通信標(biāo)準(zhǔn)。該芯片還支持低功耗模式、正常工作模式、輪詢模式等多種工作模式。
主控制器采用S3C6410芯片,該芯片高性能、低功耗、高性價(jià)比,可以運(yùn)行Android系統(tǒng)。BCM20793與S3C6410采用I2C總線的連接方式。TX1和TX2引腳接RC匹配電路,RC匹配電路的P_JS_IT_18和天線相連接。NFC芯片由1.8 V電壓供電,其與主控制器有6根引腳相連,分別是NFC_I2C_SD數(shù)據(jù)線、NFC_I2C_SCL時(shí)鐘線、NFC_I2C_REQ中斷、 NFC_REQ_PU使能、HOST_WAKE喚醒,NFC_CLK_REQ時(shí)鐘使能,I2C物理通信地址是0x77,時(shí)鐘信號(hào)由19.2 MHz外接晶振提供、NFC電路原理圖如圖3所示。
3 NFC驅(qū)動(dòng)分析
3. 1 設(shè)備樹(shù)分析
本設(shè)計(jì)內(nèi)核采用了Linux 3.4版本,與以往內(nèi)核版本不同的是,內(nèi)核3.4版本采用設(shè)備樹(shù)來(lái)對(duì)驅(qū)動(dòng)設(shè)備進(jìn)行統(tǒng)一管理,以方便設(shè)備的管理。NFC采用I2C總線的連接方式與CPU相連接,驅(qū)動(dòng)只負(fù)責(zé)數(shù)據(jù)的發(fā)送接收,上層負(fù)責(zé)數(shù)據(jù)的解析工作。
下面是BCM2079x的設(shè)備樹(shù)節(jié)點(diǎn)配置信息,包括:I2C總線的通信地址為0x77,中斷為34號(hào),GPIO34為中斷引腳,GPIO65為使能引腳,GPIO20為喚醒引腳。其中最為關(guān)鍵的是compatible=“broadcom,bcm2079x_i2c”鍵值對(duì),在加載驅(qū)動(dòng)程序時(shí),首先會(huì)匹配該字段,如果相等則調(diào)用probe函數(shù)進(jìn)行相關(guān)的初始化工作。
以下為I2C總線配置信息,GPIO31作為I2C總線的時(shí)鐘信號(hào)線,GPIO32作為I2C總線的數(shù)據(jù)信號(hào)線,I2C總線的時(shí)鐘頻率為19.2MHz。
驅(qū)動(dòng)程序中的bcm2079x_matcn_table結(jié)構(gòu)體負(fù)責(zé)和設(shè)備樹(shù)進(jìn)行匹配,在系統(tǒng)初始化階段,就會(huì)匹配設(shè)備樹(shù)里的.compatible屬性是否在驅(qū)動(dòng)中有相同的名字,本驅(qū)動(dòng)中是broadcom,bcm2079x_i2c,若匹配成功就會(huì)調(diào)用驅(qū)動(dòng)程序的probe函數(shù)進(jìn)行初始化工作。
在驅(qū)動(dòng)程序中,bcm2079x_parse_dt負(fù)責(zé)解析設(shè)備樹(shù)的代碼,以下為設(shè)備樹(shù)解析關(guān)鍵代碼,分別獲取中斷、使能、喚醒引腳。
3.2 驅(qū)動(dòng)初始化分析
內(nèi)核加載驅(qū)動(dòng)模塊的時(shí)候,系統(tǒng)會(huì)調(diào)用bcm2079x_dev_init()函數(shù),該函數(shù)內(nèi)部嵌套了i2c_add_driver(),用來(lái)完成 bcm2079x_driver結(jié)構(gòu)體的注冊(cè),系統(tǒng)就會(huì)自動(dòng)探測(cè)驅(qū)動(dòng)設(shè)備,通過(guò)比較設(shè)備樹(shù)中是否有 compatible=“broadcom,bcm2079x_i2c”鍵值對(duì)來(lái)判斷設(shè)備是否存在。如果存在,則會(huì)注冊(cè)I2C設(shè)備相關(guān)信息,創(chuàng)建i2c- client,執(zhí)行probe函數(shù),在probe函數(shù)里去解析設(shè)備樹(shù)里面配置的引腳,初始化中斷、分配內(nèi)存空間以及初始化互斥鎖、等待隊(duì)列等,并向系統(tǒng)將驅(qū)動(dòng)注冊(cè)為misc驅(qū)動(dòng),然后向系統(tǒng)注冊(cè)中斷。流程圖如圖4所示。
3.3 驅(qū)動(dòng)運(yùn)行機(jī)制
當(dāng)用戶空間調(diào)用open打開(kāi)/dev/bcm2079x設(shè)備節(jié)點(diǎn)時(shí),通過(guò)ioctl機(jī)制調(diào)用驅(qū)動(dòng)程序的ioctl,實(shí)現(xiàn)設(shè)備的使能與喚醒;然后調(diào)用Poll函數(shù)實(shí)現(xiàn)周期性的檢測(cè),以降低設(shè)備的功耗,當(dāng)有設(shè)備或卡片接近NFC設(shè)備時(shí),NFC就會(huì)產(chǎn)生中斷,從而喚醒設(shè)備,用戶空間就可以通過(guò)調(diào)用read函數(shù)實(shí)現(xiàn)I2C數(shù)據(jù)的讀取。運(yùn)行機(jī)制如圖5所示。
4 測(cè)試結(jié)果
NFC設(shè)備平時(shí)處于休眠狀態(tài),設(shè)備也會(huì)發(fā)出探測(cè)脈沖,此時(shí)處于低功耗狀態(tài),當(dāng)有卡片或NFC設(shè)備接近NFC設(shè)備時(shí),就會(huì)產(chǎn)生中斷喚醒設(shè)備,NFC設(shè)備就會(huì)連續(xù)地發(fā)出探測(cè)脈沖,此時(shí)NFC工作在正常工作模式。
圖6是用頻譜分析儀觀測(cè)到的探測(cè)脈沖信號(hào),載波頻率為13.559 375 000 MHz,占用帶寬OBW為2.259615 385 kHz,滿足CE和FCC認(rèn)證中針對(duì)NFC頻段的射頻測(cè)試要求的13 553~13 567 MHz的調(diào)制帶寬限值。
當(dāng)將Tag1小卡貼近NFC天線時(shí),可以讀出卡內(nèi)的二進(jìn)制信息,圖7為卡內(nèi)信息。
用設(shè)備分別測(cè)試Tag1、Tag2、Tag3、Tag4,其可識(shí)別距離最遠(yuǎn)為49 mm、45 mm、29 mm、21 mm,識(shí)別成功率在96%以上,測(cè)量結(jié)果如表1所列。
以上測(cè)試表明,NFC模塊可以識(shí)別多種類型的卡片,可識(shí)別距離最大為49 mm,滿足NFC設(shè)計(jì)要求。該模塊穩(wěn)定、可靠、識(shí)別率高,可集成到移動(dòng)支付、票務(wù)、門(mén)禁、防偽等不同系統(tǒng)中。
評(píng)論