基于ENC28J60+AS3990的網(wǎng)絡(luò)UHF讀寫(xiě)器設(shè)計(jì)
摘要: 為了實(shí)現(xiàn)超高頻(UHF)讀寫(xiě)設(shè)備的遠(yuǎn)程實(shí)時(shí)交互功能,本文基于以太網(wǎng)網(wǎng)卡芯片ENC28J60和超高頻射頻識(shí)別芯片AS3990,利用LPC2138作為主控制器,實(shí)現(xiàn)了超高頻網(wǎng)絡(luò)讀寫(xiě)器的軟硬件方案設(shè)計(jì)。在讀寫(xiě)器上移植實(shí)時(shí)操作系統(tǒng)μC/OSII和輕量級(jí)IP協(xié)議LwIP,使讀寫(xiě)器可以連入互聯(lián)網(wǎng),實(shí)現(xiàn)了讀寫(xiě)參數(shù)遠(yuǎn)程配置和數(shù)據(jù)實(shí)時(shí)交互,滿(mǎn)足了快速發(fā)展的RFID產(chǎn)業(yè)對(duì)UHF讀寫(xiě)器多樣性需求。
引言
物聯(lián)網(wǎng)產(chǎn)業(yè)的興起為RFID技術(shù)的發(fā)展和廣泛應(yīng)用帶來(lái)了契機(jī)。超高頻(UHF)讀寫(xiě)系統(tǒng)憑借其讀取距離遠(yuǎn)、讀寫(xiě)速度快、并發(fā)讀取標(biāo)簽數(shù)多、標(biāo)簽價(jià)格低廉等優(yōu)點(diǎn),將成為RFID領(lǐng)域未來(lái)研究和發(fā)展的熱點(diǎn)。但目前國(guó)內(nèi)市場(chǎng)上UHF讀寫(xiě)器種類(lèi)較少,接口單一,使用時(shí)難以摒棄傳統(tǒng)的讀寫(xiě)器加PC機(jī)操作模式。這些缺點(diǎn)限制了UHF讀寫(xiě)器的大量使用,尤其是在物流這類(lèi)需要遠(yuǎn)程物品識(shí)別和信息獲取的場(chǎng)合。本文以射頻識(shí)別芯片AS3990為基礎(chǔ),描述了基于網(wǎng)卡芯片ENC28J60的網(wǎng)絡(luò)讀寫(xiě)器的硬件和軟件設(shè)計(jì)方案,使得讀寫(xiě)器可以直接連入因特網(wǎng),進(jìn)行遠(yuǎn)程數(shù)據(jù)獲取和參數(shù)配置,增強(qiáng)了UHF讀寫(xiě)器的實(shí)用性。
1 硬件設(shè)計(jì)
讀寫(xiě)器總體設(shè)計(jì)框架如圖1所示。主控制器采用基于ARM7TDMIS內(nèi)核的控制器LPC2138,該芯片具有32 KB的片內(nèi)SRAM和512 KB的片內(nèi)Flash存儲(chǔ)器。外部接口豐富,能夠很好地滿(mǎn)足讀寫(xiě)器設(shè)計(jì)的要求。采用射頻芯片AS3990實(shí)現(xiàn)了ISO18000?6C(即EPC GEN2)協(xié)議中要求的標(biāo)簽交互,并為外部控制器提供兩種接口訪問(wèn)方式??刂破髦恍璋l(fā)送簡(jiǎn)單的控制和配置命令,AS3990即可完成與電子標(biāo)簽的交互過(guò)程。ENC28J60是兼容IEEE802.3的10M以太網(wǎng)網(wǎng)卡芯片,它通過(guò)SPI口與控制芯片實(shí)現(xiàn)數(shù)據(jù)交換。電源模塊采用電源芯片EZ10853.3為各個(gè)模塊提供穩(wěn)定的3.3 V直流供電。
圖1 讀寫(xiě)器總體設(shè)計(jì)框架
1.1 射頻芯片接口電路
AS3990是Microsystems公司研制的一款用于超高頻RFID讀寫(xiě)器的符合ISO180006C標(biāo)準(zhǔn)的專(zhuān)用射頻芯片。其內(nèi)部集成了接收電路、發(fā)送電路、協(xié)議轉(zhuǎn)換單元、控制接口等部分,用戶(hù)只需外接少量的射頻電路即可完成讀寫(xiě)模塊的功能設(shè)計(jì)。
AS3990可以通過(guò)并行接口或串行SPI接口與主控制器LPC2138進(jìn)行交互。射頻芯片接口電路如圖2所示。IO0~IO7用于并行接口,其中IO6和IO7也可用于SPI口的數(shù)據(jù)發(fā)送;引腳CLK作為SPI接口的時(shí)鐘線使用;EN引腳為AS3990的使能引腳;IRQ為AS3990中斷引腳。
圖2 射頻芯片接口電路 為了降低相位噪聲對(duì)讀寫(xiě)性能的影響,電路中使用了外部壓控振蕩器(VCO)。VCO的輸出連接在EXT_IN引腳上。另一方面,AS3990通過(guò)CP腳控制壓控振蕩器。20 MHz的溫度補(bǔ)償型石英晶體諧振器TCXO連接在OSCO引腳上,作為基準(zhǔn)振蕩器,這樣可以進(jìn)一步提高芯片的穩(wěn)定性。 由于AS3990內(nèi)部未集成功率放大器,所以需要外接功率放大器PA.當(dāng)使用外接PA模式時(shí),經(jīng)AS3990調(diào)制后的射頻信號(hào)在RFONX和RFOPX輸出,兩路射頻信號(hào)經(jīng)過(guò)平衡/不平衡變換器轉(zhuǎn)換為單路射頻信號(hào)后進(jìn)入PA進(jìn)行功率放大。AS3990的模擬輸出引腳DAC用于控制PA的增益。環(huán)形器用于將發(fā)送通路和接收通路隔離。同樣,接收到的射頻信號(hào)經(jīng)過(guò)平衡/不平衡變換器轉(zhuǎn)換為兩路差分信號(hào),AS3990內(nèi)部解調(diào)電路對(duì)兩路信號(hào)解調(diào)得到數(shù)據(jù)。 1.2 網(wǎng)卡芯片接口電路 ENC28J60是Microchip公司生產(chǎn)的28引腳獨(dú)立以太網(wǎng)控制器,它內(nèi)置了10 Mbps以太網(wǎng)物理層器件和介質(zhì)訪問(wèn)控制器,符合IEEE 802.3標(biāo)準(zhǔn),特別適合于嵌入式設(shè)備的入網(wǎng)解決方案。ENC28J60通過(guò)SPI接口與控制器LPC2138交互,網(wǎng)卡芯片接口電路如圖3所示。SO、SI、SCK為SPI接口的3條總線,CS為ENC28J60的片選信號(hào),中斷信號(hào)INT和WOL分別連接到主控制器的EINT3和EINT1上。芯片ENC28J60的2條差分接收引腳TPIN和2條差分發(fā)送引腳TPOUT外接在一個(gè)1:1脈沖變壓器上,脈沖變壓器輸出接至網(wǎng)口座上。 圖3 網(wǎng)卡芯片接口電路 2 軟件設(shè)計(jì) 網(wǎng)絡(luò)讀寫(xiě)器軟件設(shè)計(jì)包括μC/OSII移植、LwIP協(xié)議棧移植、網(wǎng)卡驅(qū)動(dòng)程序和上層應(yīng)用程序的編寫(xiě)4個(gè)部分。軟件設(shè)計(jì)整體框架如圖4所示。 2.1 μC/OSII移植 操作系統(tǒng)移植是LwIP協(xié)議棧移植和應(yīng)用程序編寫(xiě)的基礎(chǔ)[3],其在LPC2138上的移植內(nèi)容包括: ① 完成操作系統(tǒng)所需的基本配置和數(shù)據(jù)類(lèi)型定義、開(kāi)關(guān)中斷函數(shù)文件OS_CPU.H的編寫(xiě)。 ② 在文件OS_CPU.C完成堆棧初始化函數(shù)OSTaskStkInit()函數(shù),并根據(jù)自身需求編寫(xiě)相關(guān)Hook函數(shù)。 ③ 利用文件OS_CPU_A.S完成啟動(dòng)最高優(yōu)先級(jí)任務(wù)的函數(shù)OSStartHighRdy、任務(wù)切換函數(shù)OSCtxSw、中斷級(jí)任務(wù)切換函數(shù)OSIntCtxSw、系統(tǒng)時(shí)鐘中斷服務(wù)函數(shù)OSTickISR的編寫(xiě)。 ④ 初始化定時(shí)器0,為系統(tǒng)提供時(shí)鐘。 2.2 LwIP協(xié)議棧移植 ① 完成LwIP協(xié)議內(nèi)部使用的數(shù)據(jù)類(lèi)型的定義,如u8_t、s8_t、u16_t、u32_t等。這樣使得協(xié)議棧內(nèi)部使用的數(shù)據(jù)類(lèi)型不再受移植平臺(tái)處理器和編譯器的影響,增強(qiáng)了協(xié)議棧的可移植性。移植時(shí),根據(jù)編譯器和移植平臺(tái)事先定義好這些數(shù)據(jù)類(lèi)型,定義如下: typedef unsignedcharu8_t;//定義8位無(wú)符號(hào)整數(shù) typedef signedchars8_t;//定義8位帶符號(hào)整數(shù) typedef unsignedshortu16_t;//定義16位無(wú)符號(hào)整數(shù) typedef signedshorts16_t;//定義16位帶符號(hào)整數(shù) typedef unsignedintu32_t;//定義32位無(wú)符號(hào)整數(shù) typedef signedints32_t;//定義32位帶符號(hào)整數(shù) ② 定義臨界區(qū)保護(hù)函數(shù)用于開(kāi)關(guān)中斷,定義結(jié)構(gòu)體封裝宏以避免編譯器地址自動(dòng)對(duì)齊。LwIP的實(shí)現(xiàn)基于這樣一種機(jī)制,即上層協(xié)議已經(jīng)明確知道了下層所傳上來(lái)的數(shù)據(jù)的結(jié)構(gòu)特點(diǎn),上層直接使用地址計(jì)算得到想要的數(shù)據(jù),而避免了數(shù)據(jù)遞交時(shí)的復(fù)制與緩沖。所以需定義結(jié)構(gòu)體封裝宏,禁止編譯器的地址自動(dòng)對(duì)齊以防止數(shù)據(jù)結(jié)構(gòu)被打亂。 ③ 實(shí)現(xiàn)與信號(hào)量和郵箱操作相關(guān)的函數(shù)[5],比如建立、刪除、等待、釋放等。LwIP使用郵箱和信號(hào)量來(lái)實(shí)現(xiàn)上層應(yīng)用程序與協(xié)議棧間、下層硬件驅(qū)動(dòng)與協(xié)議棧間的信息交互。這些函數(shù)可以通過(guò)調(diào)用μC/OSII提供的信號(hào)量、郵箱函數(shù)來(lái)實(shí)現(xiàn)。 ④ 實(shí)現(xiàn)一個(gè)與等待超時(shí)相關(guān)的函數(shù)sys_arch_timeouts.該函數(shù)能夠返回當(dāng)前協(xié)議棧超時(shí)事件鏈表的首地址。在初始化LwIP進(jìn)程時(shí),會(huì)同時(shí)初始化一些超時(shí)事件,如ARP超時(shí)、TCP超時(shí)等,當(dāng)某些事件等待超時(shí)后,協(xié)議棧會(huì)自動(dòng)調(diào)用一些超時(shí)處理函數(shù)作相關(guān)處理,以滿(mǎn)足TCP/IP協(xié)議棧的需求。 ⑤ 實(shí)現(xiàn)創(chuàng)建一個(gè)進(jìn)程的函數(shù),可以通過(guò)操作系統(tǒng)提供的OSTaskCreate函數(shù)完成。 2.3 網(wǎng)卡驅(qū)動(dòng)程序編寫(xiě) 網(wǎng)卡芯片生產(chǎn)廠商一般都提供了豐富的驅(qū)動(dòng)函數(shù),對(duì)這些接口函數(shù)進(jìn)行相應(yīng)的封裝,將接收到的數(shù)據(jù)包封裝為L(zhǎng)wIP協(xié)議棧熟悉的數(shù)據(jù)結(jié)構(gòu),將發(fā)送的數(shù)據(jù)包封裝為芯片熟悉的數(shù)據(jù)結(jié)構(gòu)。發(fā)送數(shù)據(jù)包和接收數(shù)據(jù)包的函數(shù)需要被實(shí)現(xiàn)。芯片與控制器LPC2138接口定義如下: #defineSPI_SCK(0x01﹤﹤4) //P0.4 #defineSPI_MISO(0x01﹤﹤5) //P0.5 #defineSPI_MOSI(0x01﹤﹤6) //P0.6 #defineENC28J60_CS(0x01﹤﹤8) //P0.8 #defineENC28J60_INT(0x01﹤﹤9) //P0.9 2.4 應(yīng)用程序編寫(xiě) 基于多任務(wù)環(huán)境,在讀寫(xiě)器上創(chuàng)建兩個(gè)任務(wù):一個(gè)為HTTP服務(wù)器任務(wù),此時(shí)讀寫(xiě)器可看作是一個(gè)網(wǎng)絡(luò)服務(wù)器,它可以響應(yīng)遠(yuǎn)程的瀏覽器連接請(qǐng)求,并返回Html數(shù)據(jù)至瀏覽器上,這樣就可以遠(yuǎn)程獲取讀寫(xiě)器狀態(tài);另一個(gè)為讀寫(xiě)器的讀寫(xiě)任務(wù),此時(shí)讀寫(xiě)器作為一個(gè)客戶(hù)端使用,它需要連接到遠(yuǎn)程的控制服務(wù)器,接收服務(wù)器的配置或控制命令,以響應(yīng)并進(jìn)行相關(guān)操作,最后返回操作結(jié)果或數(shù)據(jù)給服務(wù)器端。應(yīng)用程序流程如圖5所示。 圖5 應(yīng)用程序流程 結(jié)語(yǔ) 諸如電子商務(wù)、智能物流等需要大量使用電子標(biāo)簽的領(lǐng)域的興起,使得超高頻讀寫(xiě)器在物聯(lián)網(wǎng)及RFID領(lǐng)域發(fā)揮出日趨重要的作用。目前國(guó)內(nèi)市場(chǎng)上出現(xiàn)了部分UHF讀寫(xiě)器,這些讀寫(xiě)器大都采用USB接口或串口實(shí)現(xiàn)與上位機(jī)的通信。由于上位機(jī)與讀寫(xiě)器的距離有限,這就限制了UHF讀寫(xiě)器的自由安裝,在某些遠(yuǎn)程控制讀寫(xiě)場(chǎng)合不再適用。另外,由于上位機(jī)硬件資源的限制,不可能實(shí)現(xiàn)對(duì)大量讀寫(xiě)器的同時(shí)實(shí)時(shí)控制。本文基于射頻芯片AS3990和網(wǎng)卡芯片ENJ28C60提出的網(wǎng)絡(luò)UHF讀寫(xiě)器能夠很好地解決上述問(wèn)題,滿(mǎn)足目前RFID市場(chǎng)的需求。