趙娟,曾強,李改利,楊薇
(中北大學信息探測與處理技術(shù)研究所,太原 030051)
趙娟、曾強、楊薇(碩士研究生),研究方向為通信與信息系統(tǒng);李改利(碩士研究生),研究方向為信號與信息處理。
隨著測試系統(tǒng)的不斷發(fā)展,對數(shù)據(jù)傳輸系統(tǒng)有了更高的要求,傳統(tǒng)的數(shù)據(jù)傳輸系統(tǒng)大多采用有線方式,數(shù)據(jù)的接收終端使用PC機。隨著無線通信技術(shù)的發(fā)展,人們開始用無線來取代有線。但目前的無線領(lǐng)域還存在一些問題,如網(wǎng)絡(luò)頻段受到限制,通信極易受到外界干擾,通信中可能出現(xiàn)丟包或誤碼,天線高度不能太低等。
本設(shè)計實現(xiàn)了一種基于ARM的便攜式無線傳輸系統(tǒng),相比于筆記本,該系統(tǒng)體積小、重量輕,可便攜,當通信受到限制時,可調(diào)整通信距離,從而使無線傳輸系統(tǒng)性能達到最佳。
ARM系統(tǒng)[1]主要由ARM 處理器、SRAM、SDRAM、Flash、LCD以及一些外圍接口組成,主要的外圍接口有USB接口、串口 、GPIO 口、SD 卡接口、SPI接口 、camera接口等。ARM系統(tǒng)的硬件結(jié)構(gòu)如圖1所示,它們是通過AHB系統(tǒng)總線和APB外圍總線來進行通信[2-4]。
測試系統(tǒng)里已經(jīng)集成了無線模塊,只要在ARM系統(tǒng)中加入無線模塊便可實現(xiàn)ARM終端與測試系統(tǒng)的無線數(shù)據(jù)傳輸。為了數(shù)據(jù)接收終端具有便攜、靈活、抗干擾強以及方便替換無線模塊等優(yōu)點,無線模塊與ARM終端采用USB接口來對接。系統(tǒng)基本結(jié)構(gòu)如圖2所示。
圖1 ARM系統(tǒng)的硬件結(jié)構(gòu)
圖2 系統(tǒng)基本結(jié)構(gòu)
USB是一種快速、雙向的串行接口,它采用總線拓撲結(jié)構(gòu),其主控制器通過 USB集線器可擴展主機的 sub端口[5-6]。USB具有4種傳輸方式:控制傳輸、中斷傳輸、批量傳輸、等時傳輸[5,7]。其數(shù)據(jù)的通信是雙向的,數(shù)據(jù)從主機傳向USB設(shè)備稱下行通信,數(shù)據(jù)從USB設(shè)備傳向主機稱上行通信??刂茩?quán)是在host方,不支持設(shè)備間的直接通信。
USB設(shè)備是由接口和端點構(gòu)成的,端點是 USB通信最基本的形式,它只能往一個方向傳送數(shù)據(jù)[7]。接口是用來綁定到設(shè)備上的,一個接口只處理一種USB邏輯連接。一個USB設(shè)備可以有多個接口,不同的接口可以代表不同的功能。USB驅(qū)動程序是綁定到接口上的。此外,一個USB設(shè)備通常又有多個配置的,而且可以在配置之間切換以改變設(shè)備的狀態(tài);但是一個時刻只能激活一個配置,一個配置通常具有一個或者更多的接口,如圖3所示[8]。
圖3 USB系統(tǒng)結(jié)構(gòu)框圖
由于數(shù)據(jù)記錄的USB接口采用FTDI公司開發(fā)的FT245 USB芯片,能單芯片實現(xiàn)并行FIFO緩存區(qū)的雙向數(shù)據(jù)傳輸,且支持VCP(虛擬串口)功能。本文以實際應(yīng)用出發(fā),針對FT245芯片介紹 Linux環(huán)境下的 USB驅(qū)動程序。
在Linux的內(nèi)核源碼中有一個USB驅(qū)動的框架程序,文件名為 usb-skeleton.c,目錄在/drivers/usb下,大多數(shù)的USB驅(qū)動都是在這個框架的基礎(chǔ)上修改的。這里針對FT245芯片修改這個USB驅(qū)動的框架程序。
USB驅(qū)動程序中有兩個宏:
#define FT245_VENDOR_ID 0x0403 //VID
#define FT245_PRODUCT_ID 0x6001//PID
這兩個宏的值是USB芯片制造商所提供的,VID是芯片制造商ID,PID是芯片的識別碼,不同廠商不同型號的USB芯片的VID和PID是不同的,FT245芯片的VID=0x0403,PID=0x6001。
file_operation是驅(qū)動程序中一個很重要的類,它定義了一組常見文件I/O函數(shù),而這些函數(shù)的使用類似于普通文件的I/O操作[8-9]。程序如下:
這里定義的函數(shù)是USB驅(qū)動程序的入口點,要打開USB設(shè)備時,使用系統(tǒng)函數(shù)Open(),系統(tǒng)就會自動調(diào)用驅(qū)動中的ft245_open()函數(shù)。其他函數(shù)類似,如write()對應(yīng)ft245_write(),read()對應(yīng)ft245_read(),close()對應(yīng)ft245_release()。
短距離無線傳輸技術(shù)廣泛地應(yīng)用于各個領(lǐng)域,并成為人們工作和生活中不可或缺的一部分,由于它與有線相比有很多優(yōu)點:方便使用、低功耗、便于攜帶、無需線纜的束縛等[10-11]。表1是幾種傳輸技術(shù)的優(yōu)缺點。根據(jù)具體應(yīng)用環(huán)境選用特定的無線傳輸方式。
表1 短距離無線傳輸技術(shù)的對比
由于低功率遠距離無線通信技術(shù)具有傳輸距離遠、速度快等優(yōu)點,符合遠距離快速傳輸?shù)男枰?所以采用低功率遠距離無線模式。該無線模塊采用標準低功率遠距離射頻芯片nRF24L01,通信接口使用FTDI公司研發(fā)的USB2.0芯片F(xiàn)T245,微控制器是采用精簡指令集的PIC單片機。無線模塊系統(tǒng)框圖如圖4所示。
圖4 無線模塊系統(tǒng)框圖
壓力測試記錄儀頭部接高精度壓力傳感器,內(nèi)部集成無線模塊,天線使用微帶天線。ARM開發(fā)板使用 Linux作為操作系統(tǒng),使用QT作為開發(fā)軟件,制作數(shù)據(jù)讀取及顯示程序,完成數(shù)據(jù)的無線傳輸及顯示任務(wù)。該系統(tǒng)可取代筆記本完成野外的無線數(shù)據(jù)傳輸任務(wù)。USB接口的無線模塊與天線,在空曠環(huán)境下傳輸距離最遠可達800 m。
在不同的溫度、濕度、以及不同的空曠環(huán)境下經(jīng)過多次實驗,使用無線傳輸系統(tǒng)讀取的數(shù)據(jù)與PC機下使用USB數(shù)據(jù)線讀取的數(shù)據(jù)完全相同,所以實驗表明該系統(tǒng)設(shè)計是正確、可行的。
由于嵌入式設(shè)備在測試系統(tǒng)中有著種種優(yōu)點,越來越受到人們的青睞。此外,隨著短距離無線傳輸?shù)陌l(fā)展,給便攜式無線傳輸設(shè)備帶來了新的生機。本文介紹的基于ARM的無線傳輸系統(tǒng)根據(jù)實際應(yīng)用出發(fā),克服了傳統(tǒng)的數(shù)據(jù)傳輸系統(tǒng)笨重、費時、費力的缺點,且接收到的數(shù)據(jù)可進行波形顯示、數(shù)據(jù)存儲、數(shù)據(jù)處理等。此外,由于ARM系統(tǒng)強大的網(wǎng)絡(luò)功能,可通過以太網(wǎng)把數(shù)據(jù)傳輸?shù)饺魏斡幸蕴W(wǎng)的地方,具有一定的創(chuàng)新性。
[1]沈建華.ARM處理器與嵌入式系統(tǒng)[J].單片機與嵌入式系統(tǒng)應(yīng)用,2010(11):5-7.
[2]潘洋.基于A RM 的無線測控系統(tǒng)[J].微計算機信息,2009,25(4):156-157.
[3]范本正.基于ARM的多路溫度測控系統(tǒng)設(shè)計[J].電子測試,2008,10(10):28-32.
[4]蔡震,蔣輝柏,周利華.Linux系統(tǒng)下USB設(shè)備驅(qū)動程序的開發(fā)[J].計算機測量與控制,2003,11(2):135-137.
[5]艾妮,曾成斌.Linux系統(tǒng)下USB2.0設(shè)備驅(qū)動程序的開發(fā)[J].現(xiàn)代機械,2005(2):16-17.
[6]Linux USB developer and support information[EB/OL].[2010-10-20].http://www.linux-usb.org.
[7]楊建華,黃宇東,陳安.基于嵌入式Linux的USB驅(qū)動設(shè)計[J].福建電腦,2009(4):11-14.
[8]趙昌明穆煜.嵌入式Linux應(yīng)用開發(fā)教程[M].北京:人民郵電出版社,2009:253-264.
[9]梁孔科,楊林楠,張麗蓮.基于S3C2410與Linux的USB驅(qū)動的設(shè)計[J].福建電腦,2008(4):2-4.
[10]閻連龍.基于ARM的無線數(shù)據(jù)采集系統(tǒng)[J].廣東技術(shù)師范學院學報,2009(3):25-28.
[11]張永強.基于ARM的移動無線傳輸系統(tǒng)設(shè)計[J].國外電子元器件,2008(1):70-72.