引論:我們為您整理了13篇數據采集論文范文,供您借鑒以豐富您的創作。它們是您寫作時的寶貴資源,期望它們能夠激發您的創作靈感,讓您的文章更具深度。
篇1
1.3信號調理與AD采集電路傳感器輸出為差分信號,信號動態范圍為±5V,系統選用的AD芯片輸入信號范圍在±2.5V之間,所以傳感器輸出信號必須經過信號調理后才能進行采集,圖3是其中一個通道的信號調理與AD采集電路,其余通道電路與該圖完全一致。信號調理電路由全差動放大器OPA1632構成,該放大器的電壓噪聲密度為1.3nV/Hz1/2,在100Hz(高鐵地震監測常用采樣率為200sample/s)帶寬范圍內噪聲有效值不超過15nV,滿足地震信號采集要求。圖中R2∶R1、R7∶R9均為2∶1,可將輸入差分信號衰減2倍,實現將傳感器輸出的±5V信號衰減到±2.5V范圍內,滿足ADS1281的輸入電壓范圍,圖中二極管D1與D2是鉗位二極管,將電壓鉗位在±3V左右,保護AD芯片。AD轉換器是一款32bitΔ-Σ高精度模數轉換器ADS1281,內部具有可編程FIR、IIR和SINC濾波器,0.6×10-6線性度,在250sample/s采樣率下其SNR可達130dB,全速采樣模式下功耗僅12mW,非常適用于電池供電的野外作業。通過配置PINMODE引腳,可將ADS1281設置為引腳控制模式(PINMODE=1)和寄存器控制模式(PINMODE=0),本系統將其配置成寄存器控制模式。系統為實現同步采樣,將六通道ADS1281的低功耗控制PWDN,復位RST,同步SYNC,采樣時鐘CLK,SPI時鐘SCLK,SPI數據輸入DIN引腳分別連在一起,并由FPGA統一控制,達到時鐘同步,統一配置AD的目的,從而實現同步采樣;而ADS1281的數據輸出引腳DOUT分別接在FPGA的6個不同IO口,用于讀取六通道AD的數據。參考源是數據采集系統的關鍵部分,本系統利用DCDC產生-5V電壓,低噪聲LDO電源芯片LT1964產生-2.5V電壓,作為六通道ADS1281的VREFN輸入,LT1964噪聲為30μVRMS(10Hz~100kHz);利用專用精準基準芯片LTC6655-2.5產生+2.5V電壓,作為六通道ADS1281的VREFP輸入,該芯片噪聲0.25×10-6p-p(0.1Hz~10Hz),溫飄為2×10-6/℃,經過試驗,該方案是取得較好結果。
1.4FPGA采集控制與數據傳輸實現數據采集之前,STM32單片機需要通過FPGA對各通道采集卡(即ADS1281)進行配置;數據采集過程中,FPGA需要對六通道數據讀取、打包并傳入STM32單片機??刂凭€A0用于選擇上述功能。當A0=0時,將STM32單片機與FPGA之間的SPI接口、FPGA與六通道采集卡之間的SPI接口直接相連,此時由STM32單片機直接完成采集卡配置;當A0=1,FPGA輸出采樣時鐘CLK,六通道采集卡同時啟動采樣。FPGA數據采集與傳輸過程如圖4所示。當六通道ADC數據準備就緒時,ADC_nDRDY信號將同時由高變低,FPGA收到下降沿信號后,將在ADC_SCLK引腳連續產生32個周期的SPI時鐘,ADS1281在時鐘上升沿輸出數據(ADC_DOUT_1至ADC_DOUT_6),FPGA在時鐘下降沿讀取數據,六通道數據將被緩存在6個32bit寄存器ADC_DA-TA0至ADC_DATA5內;FPGA讀取完六通道32bit數據后,在MCU_DRDY引腳產生一個高脈沖,通知STM32單片機讀取數據,單片機在MCU_DRDY下降沿啟動中斷,并在中斷中完成數據讀取;數據讀取過程中,單片機的SPI時鐘MCU_SCLK連續產生時鐘信號,FPGA在收到時鐘信號時,將數據通過MCU_DIN輸出,時鐘信號共6×32=192個,正好讀完六通道數據。
2預警系統C/S構架軟件設計
2.1客服端LabVIEW編程PC機客服端界面與網絡編程利用LabView軟件實現。LabView是由美國國家儀器(NI)公司研制開發虛擬儀器開發軟件,是一種圖形化編程語言,使用較為方便[6-7]。LabView主界面包含采樣率、量程設置,IP地址,端口,開始采集按鈕,停止采集按鈕和波形界面幾個部分,其中波形界面由WaveChart控件實現,具體實現如下:將下位機上傳的六通道數據綁定為簇,簇輸出接到WaveChart控件的數據輸入端,Wave-Chart控件的圖形顯示方式設置為分格顯示曲線,由于簇輸入是6個數組綁定而成,WaveChart自動將窗口分成6個子窗口,每個數據對應一個窗口;Wave-Chart界面更新模式設置為StripChart,此模式下波形從左至右繪制,達到右邊邊界時,舊數據從左邊溢出,新數據從右邊進入。LabView具有強大的網絡編程功能,本系統客戶端利用了其中的TCP/IP協議模塊,主要涉及到以下幾個函數:TCPOpen(打開),TCPRead(讀取),TCPWrite(寫入),TCPClose(關閉)??蛻舳顺绦蚬ぷ髁鞒倘鐖D5所示。從圖中可以看出,從開始到結束采集一共用了兩次TCP/IP連接,第1次用于發送采集命令,然后接收、處理、顯示數據,當按下“停止采樣”命令后,首先關閉第1次TCP/IP連接,此時服務器還在繼續采集數據,但不發送,所以還需進行一次TCP/IP連接發送停止采集命令給服務器,服務器收到命令后即可停止采集,并進入低功耗模式。
2.2基于LWIP的服務器程序設計服務器的主控單片機是STM32F407,其內部集成了10/100M以太網MAC,結合PHY芯片DP83848即可完成以太網硬件搭建;以太網軟件部分通過移植LWIP協議棧實現,已有較多文獻或文檔詳細敘述了移植方法與過程,服務器接收命令、啟動采樣和傳輸數據等功能在tcp回調函數中實現。數據采集和傳輸是同時進行的,可在單片機中申請兩個緩存,采用乒乓操作模式工作實現,即:其中一個用于中斷采集數據存儲,緩存滿后,設置數據滿標志,并查詢另一個緩存的數據空標志,若為空,證明數據已經傳輸完成,可新的存儲數據;另一個用于傳輸,傳輸完成后,設置數據空標志,并查詢第1個緩存的數據滿標志,若位滿,證明數據可以傳輸;由于以太網的傳輸速度遠大于數據采集的速度,以太網傳輸完成后會等待另一個緩存存滿,所以整個過程中不會出現采樣數據丟失的情況。
3采集系統性能測試
3.1噪聲測試進行噪聲測試時,將6通道輸入短接,采樣率設置為200sample/s;采集開始后,數據將以文本文檔的形式實時存入SD卡。圖6是由采集的一個通道數據用excel作圖得到(取其中任意2000個點),從該圖可以看出:該通道采集的輸入短接噪聲峰峰值在±1.5μV范圍內。為進一步對噪聲大小進行量化分析,分別進行了三次噪聲測試,并在excel軟件中利用STDEVA函數對每一次的六通道采集數據做均方差處理,處理結果如表1所示。從表中可以看出:每隔通道的噪聲均方差低于0.5μV,噪聲一致性較好;采集卡輸入信號范圍是±5V,按照ADC的信噪比計算公式可算出采集卡的信噪比優于140dB。
3.2地震信號采集實驗實驗時,把傳感器放置于地面,傳感器差分信號輸出端接入采集卡第1通道,打開監測站電源,在PC機中啟動LabVIEW界面,設定好采樣率、量程、IP地址與端口,點擊“啟動采集”,在距傳感器2m左右用硬物連續敲擊地面,圖7是截取的實時顯示結果圖,從圖7可以看出,第1通道具有典型的地震波形輸出,縱坐標單位為mV,第2通道~第6通道輸出為隨機噪聲,縱坐標單位為μV。
篇2
1.2復雜查詢接口查詢構造方法不同于簡單查詢接口,復雜查詢接口包含兩個或多個輸入項,對于表單中的選擇輸入項(如select,radio,checkbox)其輸入值是確定的,但是文本輸入項(如text)的值則是無法確定的,文本輸入項可能只接受數值類型的輸入值(如商品價栺)也可能只接受區間類型的輸入值(如日期),而且表單不同的輸入項乊間可能存在關聯關系。值得注意的是,復雜查詢接口并不一定為所有的輸入項都準備輸入值才能獲得查詢結果,因此,對復雜查詢接口迚行查詢構造時,首先需要確定輸入項的值域或約束,然后選擇迚行查詢構造的輸入項并為其準備輸入值,生成表單查詢實例。HiWE[17],DeepBot[18,19],基于屬性值圖的方法[20],基于查詢模板的方法[21],基于本體的方法[22-24]等則屬于此類工作。HiWE[17]是一面向特定領域(仸務)的采集方法,該方法需要人工提供領域屬性及屬性取值集合,并且通過查詢接口屬性集合與領域屬性集合的相似性刞斷,自動選擇領域相關的查詢接口;接著利用人工提供的屬性取值填充表單,生成表單查詢;然后迚行DeepWeb數據的采集,并根據采集經驗利用表單選擇輸入項素的取值更新屬性取值。但是該方法沒有考慮自動為文本輸入項產生新的查詢詞,只能依賴人工提供的知識。不同于HiWE,Wu[20]提出一基于屬性值圖的查詢構造方法。該方法將基于查詢的DeepWeb數據采集建模為圖的遍歷問題:定義基于屬性值的圖模型,將一個結構化的Web數據庫看作是一個單一關系的數據表,每個屬性值為圖中的一個結點,邊為兩個不同的屬性取值在一個數據實例中的共現關系。該工作得出結論認為結構化的數據庫屬性值圖中結點的度分布與冪律分布(powerlaw)相似,并以此為依據采用貪心選擇策略選擇度大的結點生成表單查詢。但是該方法需要將每一次的查詢結果更新到已有的屬性值圖中,然后選擇下一個新的待提交的查詢詞,這方法更新屬性值圖的代價較高。DeepBot[18,19]是一個基于瀏覽器內核開發的DeepWeb數據采集的框架,它與HiWE類似,都采用面向特定領域的方式。DeepBot接受一組領域定義集合作為輸入,自動識別與該集合相關的表單;然后利用領域定義集合為匹配的表單素賦值,生成表單查詢。其中,領域定義集合用于定義采集仸務。該方法通過領域定義與表單乊間的相似度計算自動選擇匹配的表單,許表單素和領域定義乊間存在不完全匹配的情況。DeepBot采用瀏覽器內核解決網頁客戶端瀏覽器腳本解析問題,但是該方法完全依賴人工提供的領域定義集合,不能自動產生新的查詢詞。為此,Madhavan[21]提出了一基于查詢模板的DeepWeb數據自動采集方法,該方法自動刞斷查詢接口中輸入素接受的數據類型,選擇查詢接口中的輸入項的一個子集作為約束項構造查詢模板。在約束項乊間利用笛卡爾積的形式產生不同的查詢請求。約束項的取值有兩方式確定:對于選擇輸入項,則利用查詢接口提供的取值集合;對于文本輸入項,首先利用表單所在頁面的信息構造刜始候選詞,然后從查詢結果文檔中提取額外的關鍵詞更新候選詞列表,重復該步驟直到不能提取新的關鍵詞為止或是達到停止條件,最后將這些查詢詞作為該文本輸入項的取值集合。該方法通過表單查詢返回結果驗證查詢模板的有效性,并且采用自底向上的有效模板的增量式算法構造查詢模板。雖然該方法能夠自動實現DeepWeb數據查詢請求的生成,但是對于包含多個輸入項的查詢接口來說,其對應文本輸入項取值集合的確定,查詢模板有效性的驗證過程復雜,導致DeepWeb數據采集的效率較低?;诒倔w的查詢構造方法[22-24]與上述方法不同,該方法通過本體直接定義查詢接口中每個素的類型和取值以及素乊間的依賴關系,將本體作為輸入直接生成表單查詢。[22]是一針對語義網環境的DeepWeb數據查詢方法。[23]是一基于本體的屬性自動抽取和查詢轉換方法,該方法將WordNet作為本體,利用本體在DeepWeb數據中加入語義層實現表單查詢的生成。[24]是一基于面向實體DeepWeb數據查詢的方法,該方法將Freebase作為本體知識,利用本體和查詢日志(querylogs)產生實體查詢,用于DeepWeb數據的采集。但是基于本體的方法與HiWE和DeepBot類似都依賴外部的人工指定的輸入信息,自適應性差。
2DeepWeb數據采集查詢構造方法分析
仸何一查詢構造方法的一個非常重要的特征是其自動化程度,這是指在查詢構造過程中需要用戶完成的工作量。除此乊外,由于DeepWeb數據面向的領域廣泛,類型多樣,因此,查詢構造方法最需要具備擴展性,如:在DeepWeb數據源的類型或領域發生變化時,該方法仍然能夠正常工作。本節從支持的查詢接口提交方法,查詢詞提供方式,自動化程度,擴展性角度對比分析目前已有的查詢構造方法。表1是目前已有的查詢構造方法定性比較的結果,在自動化程度一列,“AUTO”表示完全自動、“SEMI”表示半自動、“NO”表示人工完成。在擴展性方面,劃分為三個層次,分別用“好”、“中”、“差”表示使用相關方法或工具的可擴展程度?;诒韺踊椒ǖ腄eepWeb數據采集的目標是以最小的查詢數量達到最大的DeepWeb數據覆蓋率,因此,構造的表單查詢的好壞直接影響目標的實現。雖然已有的查詢構造方法能夠表明確實可以使大量的DeepWeb數據內容對用戶可見,但它也存在一些局限性,如表2所示。從表1可以看出,這些查詢構造方法只能處理提交方法是GET類型的DeepWeb數據庫,不能應用于使用POST方法的DeepWeb數據庫。除此乊外,從表2可以看出,已有的查詢構造方法都存在不同程度的局限性。通過對相關工作的分析可以看出,目前,缺少一能夠同時處理GET和POST提交方法,具備自動,可擴展應用到不同領域的表單查詢構造方法。因此,DeepWeb數據采集的查詢構造方法仍然需要做迚一步的研究。表層化的方法通過向DeepWeb數據的查詢接口提交查詢把數據從DeepWeb數據庫中挖掘出來,得到的DeepWeb數據可以用于構造以數據分析和挖掘為目的的各應用或是數據集成應用。利用該方法迚行DeepWeb數據采集有以下優點:(1)該方法能夠無縫的集成搜索引擎爬蟲,不需要對搜索引擎爬蟲做改動就可以實現DeepWeb數據的采集;(2)基于表層化方法的DeepWeb數據采集系統可以將對應的DeepWeb數據庫的數據保存到本地,這樣可以根據需求對得到的DeepWeb數據迚行預處理,如:連接來自不同DeepWeb數據庫的數據,初除重復內容等;可以為DeepWeb數據預先創建索引,以便快速響應用戶查詢請求;(4)該方法可以使從DeepWeb數據庫得到的內容和從SurfaceWeb得到的內容以相同方式采集。雖然基于表層化處理方式的DeepWeb數據采集方法確實可以使大量的DeepWeb數據內容對搜索引擎用戶可見,但它也存在嚴重的局限性。(1)有很大一部分DeepWeb數據庫的內容無法通過現有的DeepWeb數據采集技術爬取到,原因在于,目前的表層化處理方法只能處理查詢接口的提交方法是GET類型的DeepWeb數據庫,不能應用于使用POST方法的DeepWeb數據庫;(2)該方法對保持采集的DeepWeb數據庫的數據的時新性(datafreshness)非常困難,因為DeepWeb數據庫的內容是動態,多變的,搜索引擎爬蟲可能無法跟上快速變化的DeepWeb數據。表層化的方法面臨的最大的挑戰是如何為DeepWeb數據庫的查詢接口選擇合適的查詢,這涉及到兩個主要問題:第一,需要為查詢接口中的各表單輸入項找出合適的輸入值,對于表單中的選擇輸入項(如下拉、單選、多選等),它們的輸入值是已知的,可以直接利用查詢接口中提供的取值即可,但是對于表單中的文本輸入項,則需要為其預測合適的輸入值;第二,必須控制向查詢接口提交查詢請求的數量,以免對DeepWeb數據庫的提供商(DeepWeb數據所在站點)帶來不合理的負載。通過對表層化方式的DeepWeb數據采集方法分析,我們發現現有的表層化方法在解決DeepWeb數據采集的難題時,也存在不同程度的局限性,這導致現有的DeepWeb數據采集方法難滿足大數據的規模性,多樣性和高速性的特點,因此如何克服現有DeepWeb數據采集方法的局限性,在現有方法的基礎上做出迚一步改迚是未來需要研究的問題。
篇3
基于嵌入式平臺RFID采集終端體積小,集成度高,可便攜,具有強大的數據實時處理能力,與PC機完全兼容,支持多種數據空間傳輸標準,并在讀寫器之間建立統一的應用級接口,可以直接讀取讀寫器上的數據。當存在大量的RFID識別標簽時,讀寫器將會掃描到海量數據信息,RFID采集終端將簡化信息的傳輸流程。同時,運行在RFID數據采集終端的中間件把上位機的管理軟件程序從硬件設備接口分揀出來并按照統一的標準進行封裝,這樣,使上層的應用軟件具有統一恒定的數據控制接口。
3嵌入式RFID數據采集終端的硬件設計
讀寫器獲取RFID標簽數據后,通過專有的適配器接口,比如串口、CAN口等連接方式,將原始數據交付給嵌入式數據采集終端。流行的嵌入式設備采用模塊化架構,功能各異的模塊板卡通過插槽嵌入到ARM微處理器芯片核心板上,通過核心板上的總線與CPU及其他模塊板卡建立通信。各模塊之間相互獨立,簡化了硬件電路的設計,降低開發周期。在硬件平臺設計中,嵌入式微處理器的選擇直接制約著嵌入式RFID數據采集終端的性能。為了滿足應用的需求,該終端選用基于精簡指令集的32位ARM9微處理器。處理終端的硬件平臺包括ARM9微處理器,電源復位電路,存儲器,串口,以太網接口。ARM9微處理器內置存儲器的容量較小,需擴充存儲器以滿足應用的需求[3]。電源復位電路和存儲器的設計是硬件平臺設計的關鍵。
4嵌入式RFID數據采集終端的軟件設計
操作系統的開發非常復查而且成本較高,一般不自主設計。選用Lin-ux操作系統作為軟件開發環境,并編寫硬件接口驅動程序及應用程序。RFID中間件軟件采用模塊化結構設計,運行在Linux操作系統下??梢苑譃橛布涌隍寗幽K,數據處理分析模塊,數據統一管理模塊。硬件接口驅動模塊的指令用于讀取讀寫器上的數據信息。數據處理分析模塊對被識物體的數據進行預處理、解析。數據管理控制模塊將分析后的數據信息通過無線網絡交付給上位機RFID服務器的應用管理系統,負責指令的上傳下達,并控制嵌入式RFID數據采集終端的全局工作。
篇4
數據采集是信號分析與處理的一個重要環節,在許多工業控制與生產狀態監控中,都需要對各種物理量進行數據采集與分析。但是,專用數據采集卡的價格一般比較昂貴,而我們PC機的聲卡就是一個很好的雙通道數據采集卡。實際測量中,在滿足測量要求的前提下,可以充分利用計算機自身資源,完成數據采集任務,從而節省成本。
本文利用vc編程實現了聲卡的雙通道數據采集,并且對信號進行頻譜分析同時實時測量出信號的頻率。還利用聲卡的DA通道,實現了正弦波、方波、三角波輸出的信號發生器。波形發生器產生的信號同時還可以作為內部測試用信號,檢驗數據采集的準確性。
二、聲卡數據采集系統硬件組成
LineOut
圖1聲卡數據采集的硬件組成圖
利用聲卡進行數據采集的硬件組成如圖1所示。通常,利用聲卡的LineIn端作為信號輸入端口,兩路被測的模擬信號經過左右聲道,A/D轉換進入計算機,通過vc編寫的虛擬儀器界面顯示出來。聲卡一般都具有單、雙聲道輸入,從而可實現單雙通道的采集.雙通道采集時,聲卡采用并行采集,并具有采樣保持功能,兩個通道的數據不存在時間差,第一通道和第二通道數據存儲在同一個數據緩沖區中,且等間隔存儲,奇數序列是一個通道數據,偶數序列為另一個通道數據.讀取數據時,將緩沖區中的數據全部讀入到一個數組中,然后對該數組數據,采用隔一點取一點的方法,將數據分開并分別存到另外的兩個數組中,即將兩個通道的數據分開,從而實現了雙通道的采集.單通道采集時,緩沖區中僅僅是一個通道的數據,直接保存到一個數組即可。同時,信號發生器產生的波形也可經過Lineout端輸出。
為了保護聲卡,被測信號并不是直接進入聲卡,而是先經過一個信號調理電路,對信號進行放大或限幅,濾波等處理,信號調理電路如圖2所示。(a)圖是直流電平疊加模塊:C1代表信號的輸入,D1代表疊加直流電平后信號的輸出,電位器R8控制輸入直流電平的大??;(b)圖是信號疊加模塊:A1、A2代表疊加信號的輸入,B1代表疊加后信號的輸出;(c)圖是模擬濾波模塊:LPIN代表濾波器的輸出,LPOUT代表濾波器的輸出,調節R6可以控制輸出的、幅度大小。當然可以根據需要在調理電路中加入一些其它的模塊。
圖2信號調理電路
三、聲卡采集系統的軟件編程
微軟公司已經提供了一系列API函數用于對聲卡的操作,為了將需要用到的函數封裝成了一個類,編程時只需直接調用。使用的API函數有:
waveInGetDevCaps實現聲卡的性能測試
waveInOpen打開波形輸入設備
waveInPrepareHeader為波形輸入準備緩沖區
waveInAddBuffer將數據緩存發送給波形輸入設備驅動
waveInStart啟動向波形輸入緩沖區存儲數據
waveInUnprepareHeader釋放波形輸入緩沖區
waveInStop停止向波形輸入緩沖區存儲數據
waveInClose關閉波形輸入設備
設計的軟件界面如圖3所示。目前所實現的功能有:
圖3軟件界面設計
1.兩路波形發生器??僧a生正弦波、方波和三角波,并且頻率和幅值可調。
2.頻譜分析儀。可以對采集的信號進行頻譜分析。頻譜分析采用了快速傅立葉變換(FFT)算法,并且將其封裝成獨立的函數,方便調用。
3.頻率計。同時還可以實時地測量出采集到的信號的頻率。在利用程序計算頻率時,一般采用兩種方法。一種是利用快速傅立葉變換,它的優點是不僅能對標準的周期波形進行測量,而且能夠計算出各種復雜波形和信噪比非常低的信號的頻率值,缺點是分辨率受到限制。另一種計算頻率的方法是采用脈沖計數法。它的優點是測量低頻信號時精度高,但它不適合波形復雜和信噪比低的信號頻率測量。所以在測量過程中,程序先判斷信號上述的性質,根據信號的性質,自動地采用相應的測量方法。
四、小結
采用聲卡制作的信號采集系統,具有廉價、方便等優點,它可用于振動、噪聲、位移、溫度、壓力等各種物理量的測試。但是一般的聲卡支持的采樣頻率有11025、22050和44100,對高頻信號的采集會出現失真??傊\用廉價的聲卡,輔以適當的軟件編程,可以構成一個較高采樣精度,中等采樣頻率且具有很大靈活性的數據采集系統。
參考文獻
[1]種蘭祥,閻麗,張首軍.基于計算機聲卡的多通道數據采集系統.西北大學學報,2002.
篇5
USB的應用程序一般用VisualC++編寫,較為復雜,花費的時間較長。由美國國家儀器(VI)公司開發的LabVIEW語言是一種基于圖形程序的編程語言,內含豐富的數據采集、數據信號分析分析以及控制等子程序,用戶利用創建和調用子程序的方法編寫程序,使創建的程序模塊化,易于調試、理解和維護,而且程序編程簡單、直觀。因此它特別適用于數據采集處理系統。利用它編制USB應用程序,把LabVIEW語言和USB總線緊密結合起來的數據采集系統將集成兩者的優點。USB總線可以實現對外部數據實時高速的采集,把采集的數據傳送到主機后再通過LabVIEW的功能模塊順利實現數據顯示、分析和存儲。
1USB及其在數據采集設備中的應用
USB自1995年在Comdex上亮相以來,已廣泛地為各PC廠家所支持?,F在生產的PC幾乎都配置了USB接口,Microsoft的Windows98、NT以及MacOS、Linux等流行操作系統都增加對USB的支持。USB具有速度快、設備安裝和配置容易、易于擴展、能夠采用總線供電、使用靈活等主要優點,應用越來越廣泛。
一個實用的USB數據采集系統硬件一般包括微控制器、USB通信接口以及根據系統需要添加的A/D轉換器和EPROM、SRAM等。為了擴展其用途,還可以加上多路模擬開關和數字I/O端口。系統的A/D、數字I/O的設計可沿用傳統的設計方法,根據采集的精度、速率、通道數等諸元素選擇合適的芯片,設計時應充分注意抗干擾性,尤其對A/D采集更是如此。在微控制器和USB接口的選擇上有兩種方式:一種是采用普通單片機加上專用的USB通信芯片;另一種是采用具備USB通信功能的單片機。USB的另一大優點是可以總線供電,在數據采集設備中耗電量通道不大,因此可以設計成總線供電。
一個USB設備的軟件一般包括主機的驅動程序、應用程序和寫進ROM里面的Firmware。Windows98提供了多種USB設備的驅動程序,但還沒有一種專門針對數據采集系統,所以必須針對特定的設備編制驅動程序。盡管系統已經提供了很多標準接口函數,但編制驅動程序仍然是USB開發中最困難的一件事。通常采用WindowsDDK實現,但現在有許多第三方軟件廠商提供了各種各樣的生成工具,如Compuware的DriverWorks、BlueWaters的DriverWizard等軟件能夠輕易地生成高質量的USB驅動程序。單片機程序的編制也同樣困難,而且沒有任何一家廠商提供了自動生成的工具。編制一個穩定、完善的單片機程序直接關系到設備性能,必須給予充分的重視。以上兩個程序是開發者所關心的,而用戶卻不太關心。用戶關心的是如何高效地通過鼠標操作設備,如何處理和分析采集進來的大量數據。因此還必須有高質量的用戶軟件。用戶軟件必須有友好的界面、強大的數據分析和處理能力以及提供給用戶進行再開發的接口。
2LabVIEW及其外部動態鏈接庫的調用
LabVIEW是美國國家儀器(NI)公司開發的一種基于圖形程序的虛擬儀表編程語言,其在測試與測量、數據采集、儀器控制、數字信號分析、工廠自動化等領域獲得了廣泛的應用。LabVIEW程序稱為虛擬儀器程序(簡稱VI),主要包括兩部分:前面板(即人機界面)和方框圖程序。前面板用于模擬真實儀器的面板操作,可設置輸入數值、觀察輸出值以及實現圖表、文本等顯示??驁D程序應用圖形編程語言編寫,相當于傳統程序的源代碼。其用于傳送前面板輸入的命令參數到儀器以執行相應的操作。LabVIEW的強大功能在于層次化結構,用戶可以把創建的VI程序當作子程序調用,以創建更復雜的程序,而且,調用階數可以是任意的。LabVIEW這種創建和調用子程序的方法使創建的程序模塊化,易于調試、理解和維護。LabVIEW編程方法與傳統的程序設計方法不同,它擁有流程圖程序設計語言的特點,擺脫了傳統程序語言線形結構的束縛。LabVIEW的執行順序依方塊圖間數據的流向決定,而不像一般通用的編程語言逐行執行。在編寫方框圖程序時,只需從功能模塊中選用不同的函數圖標,然后再以線條相互連接,即可實現數據的傳輸。
LabVIEW雖有接口卡的驅動和管理程序,但主要是針對NI公司自己生產的卡。對于普通的I/O卡,還不能直接被LabVIEW所應用,必須采取其他方法。其中可以用LabVIEW的PortIn和PortOut功能,但此法應用簡單,無法實現較復雜的接口功能。而采用動態鏈接庫,可以根據具體需要編寫適當的程序,靈活利用LabVIEW的各項功能。用戶可以自己編寫DLLs實現LabVIEW與硬件的鏈接。用VC++6.0編制動態鏈接庫,首先生成DLL框架,AppWizard將自動生成項目文件,但不產生任何代碼,所有代碼均需用戶自己鍵入。DLL需要的文件有:①h函數聲明文件;②c源文件;③def定義文件。H文件的作用是聲明DLL要實現的函數原型,供DLL編譯使用,同時還提供應用程序編譯使用。C文件是實現具體文件的源文件,它有一個入口點函數,在DLL被初次調用的運行,做一些初始化工作。一般情況下,用戶無須做什么初始化工作,只需保留入口點函數框架即可。def文件是DLL項目中比較特殊的文件,它用來定義該DLL項目將輸出哪些函數,只有該文件列出的函數才能被應用函數調用。要輸出的函數名列在該文件EXPORTS關鍵字下面。
3基于AN2131Q的單光子采集系統
該采集系統由筆者自行開發并用于單光子計數種子活性快速檢測儀中。它主要由將光子信號轉為電信號的光電倍增管(PMT)及其輔助電路和基于AN2131Q的USB采集卡組成。PMT及其前置放大器、放大器、甄別器等輔助電路能將微弱的光子信號轉換為15ns的標準TTL脈沖信號,脈沖信號經過分頻處理后再被USB采集,USB將采集的結果實時地傳給主機處理。
3.1USB采集卡的硬件組成
該采集卡由微控制器、USB通信接口、主機以及數字I/O端口組成,如圖1所示。
筆者設計了一種同步傳輸方式的單片方案,應用了內置微處理器的USB設計——EZ-USBAN2131Q。它是Cypress公司的一種內嵌微控制器的80腳USB芯片,包含三個8位多功能口,8位數據端口,16位地址端口,二個USB數據端口,二個可定義16位的定時/計數器和其他輸入輸出端口。其采用一種基于內部RAM的解決方案,允許客戶隨時不斷地設置和升級,不受端口數、緩沖大小和傳輸速度及傳輸方式的限制。片內嵌有一個增強型8051微控制器,其4個時鐘的循環周期使它比標準8051的速度快3倍。采用同步傳輸方式將單片機的計數值實時傳送給主機,而主機對計數器的控制信號則采用塊傳輸方式傳送。EZ-USB是Cypress公司推出的USB開發系統,它為USB外設提供了一種很好的集成化解決方案。EZ-USB在其內核已做了大量繁瑣的、重復性的工作,這樣就簡化了開發代碼,進而縮短了開發周期。此外,開發商還提供了配套的開發軟件(包括編譯軟件uVision51、調試軟件dScope51、控制軟件EZUSBControllPanel)以及驅動程序GPD(GeneralPurposeDriver)接口,以便于用戶進行開發使用。
圖2開啟設備和獲取采集數據的流程圖
3.2USB采集卡的軟件構成
在USB的Firmware中,采取同步傳輸(IsochronousTransactions)和塊傳輸(BulkTransactions)兩種傳輸方式。同步方式用來實時傳送采集的數據,塊傳輸主要用來傳輸主機命令信號和USB的狀態信息。塊傳輸中利用端點(Endpoint)2。兩種傳輸方式的核心中斷程序如下:
voidISR_Sutok(void)interrupt0//塊傳輸方式
{
//initializethecoutersinthe8051
TMOD=0x05;
TCON=0x10;
TH0=0;
TL0=0;
Thb=0,
TH0=0;
TL0=0;
thb=0;
EZUSB_IRQ_CLEAR();
USBIRQ=bmSUTOK;//ClearSUTOKIRQ
}
voidISR_Sof(void)interrupt0//同步傳輸方式
{
if(TCON&0x21){//Dealwiththecounteroverflow
TH0=0;
Tl0=0;
THB++;
TCON&=0xdf;}
IN8DATA=TH0;//3Bytescounterresult
IN8DATA=TL0;
IN8DATA=THB;
EZUSB_IRQ_CLEAR();
USBIRQ=bmSOF;//ClearSOFIRQ
}
在LabVIEW應用程序中設計了一Usb.dll文件作為LabVIEW與USB的驅動程序。由于EZ-USB開發系統中已經提供了底層驅動程序(GPD)接口函數,用戶只需調用這些函數即可與USB設備連接。因此在DLL的編制中只需調用它提供的函數,大大節約了開發時間,提高了開發速度。創建的Usb.dll文件中包含了如下五個輸出函數,功能說明如表1所示。
表1Usb.dll包含函數的功能說明
Control主機對USB設備的控制
ReadResult獲取USB發送到主機的數據
StartIsoStream啟動設備的同步傳輸流
StartThread得到標準設備的設備描述符
StopThread關閉設備的同步傳輸流
其定義如下:
LPSTR_declspec(dllexport)_stdcallControl(intinput);
int_declspec(dllexport)_stdcallReadResult(void);
int_declspec(dllexport)_stdcallStartIsoStream(void);
int_declspec(dllexport)_stdcallStartThread(void);
int_declspec(dllexport)_stdcallStopThread(void);
篇6
2系統實現
2.1系統服務器端關鍵技術及其實現系統服務器端部署基于WebService,服務端程序負責接收移動終端通過SOAP所封裝的請求,通過HTTP協議傳至Web服務器,進行數據信息交互以實現對移動終端實時定位追蹤,管理空間與屬性數據,并對移動終端所發回數據進行編輯匯總調用相應服務,將所請求服務解析為xml消息并返回移動終端。
2.2iOS客戶端關鍵技術及其實現
2.2.1移動空間定位技術系統采用iOSSDK所提供CoreLocation移動定位技術定制開發,CoreLocation提供GPS、蜂窩基站、Wi-Fi三種方式對空間地理位置進行定位。通過創建定位管理器并對精度以及定位更新時間間隔進行設置,CoreLocation根據設置自動選擇定位方式并將定位數據錄入系統供地圖功能模塊使用。
2.2.2地理圖層與加載系統GIS系統功能模塊基于ArcGISAPIforiOS進行開發定制,所加載地圖分為在線地圖與離線地圖兩類。在線地圖是由移動終端獲取服務器端由ArcGISServer所受檢縣地理圖層數據以及受檢小班空間地理位置。離線地圖數據是考慮到有些受檢小班地處偏遠地帶,無線信號較弱,無法訪問服務器,通過ArcGISAPIforiOS中的AGSTiledLayer類建立離線圖層訪問,加載預存于移動數據采集系統的地理圖層緩存數據用以數據采集工作。
篇7
1.3CPU控制系統由于石油鉆井深度能夠達到數千米,井下溫度超過120℃。油井下環境非常復雜,要求數據采集系統必須能夠實時、快速地處理采集的數據,還具有耐高溫以及很好的抗干擾能力。采用C8051單片機器件采集井下時間、溫度,并通過TBS總線接收壓力,流量,持水率等數據參數。選擇C8051F040作為主控芯片,了解其與各模塊的接口技術,設計微控制器電路,并進行設計仿真,以及各部分電路實驗。驗證電路結構后,設計原理圖、PCB板、焊接調試電路,并編寫控制各模塊的程序,完成主控芯片和電路設計,及軟硬件調試工作。
2硬件整體設計
此設備需要下放到油井下,需要采集的參數為溫度和實時時間,接收的參數為壓力`,流量,持水率。設備下井后,工作電壓為35V,通過改變向油井下供電電壓,由繼電器來控制井下儀器的開傘與收傘,系統由中國石油測井公司提供專用電池。儀器下井后先開傘,再進入采集狀態,開傘后,向井下儀器發命令,下發的命令為0x82(持水率),0x8(0流量),0x84(壓力),每間隔40ms下發一個命令,循環發送,下發的命令通過TXD,經TBS端送到下面掛接的儀器。下面儀器收到命令后自動上傳,上傳的數據(三個參數)由TBS端進入,經WESN-SC-001模塊解調通過TXD進入CPU,選擇合適的波特率,把數據存儲到FLASH存儲器中,工作40天后停止采集,收傘。本設備的工作方式為CPU處于持續工作狀態,其他電路處于間歇工作狀態,每5分鐘喚醒一次,每次工作時間可以調整。設計了USB接口,用于硬件和軟件調試,調試完成后去中國石油測井公司做實驗,對系統進行測試。
篇8
FPGA在觸發信號下,控制ADC采樣輸入信號,并存入FIFO中。當存滿時,將數據寫入USB接口芯片CY7C68013,同時切換另一塊FIFO接收ADC轉換的數據,實現乒乓存儲,以提高效率。FPGA模塊的一個重要作用是控制USB接口芯片CY7C68013。當ADC采樣后,數據進入FPGA模塊,FPGA控制數據流將其寫入CY7C68013的FIFO中,以便于USB向PC機傳輸。CY7C68013的數據傳輸模式采用異步slaveFIFO和同步slaveFIFO切換模式。通過實測,前者傳輸速度約為5~10Mbit/s,后者傳輸速度最高可達20Mbit/s,傳輸速度的提高可通過更改驅動程序的讀取方式實現。
3軟件設計
3.1USB驅動程序設計
USB2.0總線傳輸技術最高速率可達480Mbit/s。本系統采用批量傳輸的slaveFIFO模式。CY7C68013芯片內部提供了多個FIFO緩沖區,外部邏輯可對這些端點FIFO緩沖區直接進行讀寫操作。在該種傳輸模式下,USB數據在USB主機與外部邏輯通信時無需CPU的干預,可大大提高數據傳輸速度。Cypress公司為CY7C68013芯片提供了通用的驅動程序,用戶可根據需求開發相應的固件程序。
3.2FPGA模塊程序設計
系統中FPGA模塊的核心作用是控制AD9233芯片進行采樣。AD9233作為高速采樣芯片,其最高采樣速率達125Mbit/s,最大模擬帶寬為650MHz。通過改變采樣速率可使該系統采集不同速率需求的信號,擴展了該系統的應用范圍。描述FPGA控制USB數據寫入接口芯片FIFO的狀態機如圖6所示。狀態1表示指向INFIFO,觸發FIFOADR[1:0],轉向狀態2;狀態2表示若FIFO未滿則轉向狀態3,否則停留在狀態2;狀態3表示驅動數據到總線上,通過觸發SLWR寫數據到FIFO并增加FIFO的指針,然后轉向狀態4;狀態4表示若還有數據寫則轉向狀態2,否則轉向完成。
3.3上位機設計
為實現人機交互,利用VC++MFC在PC機上編寫了可視化操作界面,即上位機。上位機既用于數據采集的控制,同時也用于采集數據的實時回放。上位機界面如圖7所示。上位機主要功能:1)按下“檢測USB”按鈕,可檢測USB是否連接正常,并顯示USB基本信息。2)按下“開始采集”按鈕,可將采集的數據傳輸到PC機并實時回放數據波形;再次按下“開始采集”按鈕,可暫停數據波形回放。3)按下“保存數據”按鈕,可將采集的數據以*.dat文件的形式存儲到PC機硬盤。4)按下“結束采集”按鈕,可關閉采集系統并退出界面;或按下“確定”和“取消”按鈕,也可直接退出界面。
4系統實測
為了測試數據采集與回放系統,利用通用信號處理開發板設計了DDS模塊。該DDS模塊產生一個正弦波作為測試信號,通過AD9744芯片轉換后變為模擬信號輸出,并將此輸出信號接至示波器以便驗證系統。數據采集與回放系統的實物圖及系統實測波形與回放波形。
篇9
2資料解釋及地質成果
2.1資料解釋使用Geo-Frame4.3全三維解釋系統進行解釋,采用工作站和人工解釋相結合,時間剖面、水平切片、面塊切片解釋相結合的思路和流程進行解釋。斷層解釋:充分利用現有的地質資料,從聯井剖面出發,通過人工對比解釋明確各個反射波所對應的地質信息,在確定好空間關系后,利用工作站的自動追蹤拾取功能,由粗網格到細網格逐步加密解釋。采用人工解釋的粗網格建立區內主體構造框架,確定較大斷層,再利用人機聯作方式進行細網格追蹤對比,進一步核查構造方案解釋的合理性,解釋局部小斷層和細微構造,最后確定構造方案。在斷層解釋時,以垂直剖面解釋為主,水平切片為輔,再配合其它方法,使資料解釋更精細、更準確。根據構造的復雜程度,有目的地選擇一部分主干剖面進行重點解釋,即按照由粗到細(由大網格到小網格)、由縱向到橫向、由剖面到平面、由平面到空間的步驟反復進行解釋。通過水平切片解釋,檢驗斷層組合的合理性,并對一些小斷層的展布規律作出符合實際的解釋。為確保斷層的可靠性,在斷層組合時,依據區域地質規律,充分利用工作站優勢,確保斷層解釋合理,斷層相互切割關系符合地質規律。如圖2所示,在解釋系統上可以清楚的解釋連續的煤層反射波及清晰的斷層點位置。煤層分岔解釋:分叉合并煤層對應的反射波振幅強弱發生變化,從分叉到合并,振幅由弱變強;而斷層只是同相軸錯斷,斷開后的反射波強弱不發生變化[5]。分叉合并煤層對應的反射波同相軸個數發生變化。從分叉到合并,波組數由多變少。而斷層的兩盤同相軸個數不發生變化。分叉合并煤層對應的反射波同相軸相位沒有真正斷開,在波阻抗剖面上,煤層的分叉合并具有類似的特征,反映更加清晰。圖3為煤層分叉在時間剖面上的反映,圖4為煤層分叉在反演剖面上的反映。
2.2地質成果本次三維地震勘探查明了1-1、2-2、3-1、4-2、5-2煤層的底板起伏形態及構造發育情況;查明了區內落差大于5m的斷層,3~5m的斷點。對勘探區內1-1、2-2、3-1、4-2、5-2煤層的厚度變化趨勢進行了預測。對勘探區內覆蓋層厚度、1-1煤可采邊界和2-2煤分叉合并范圍進行了解釋。豐富的三維地震地質成果為礦井開拓、采區設計提供了地質依據。
篇10
1.2數據格式VantagePro通過串口獲取氣象數據,實際傳送的氣象數據為99個字節的數據包,如表1所示,從1-99對數據包編號,提取的數據用括號給出了注釋,括號中逗號之前的內容表示字段含義,逗號之后的內容表示測量值的單位。數據包的具體格式如表1所示。
2實時氣象數據拆分與歸檔
在MUSER的應用中,將各個ISS采集的氣象因子數據直接通過RS232C串口通信協議將采集的數據傳到操作系統為LINUX的計算機,通過該接收機器上的數據請求與拆分程序將RS232C傳送的氣象因子數據包實時拆分出需要的氣象因子并歸檔到MySQL數據庫和Redis高速緩存中。同時數據合并程序自動合并同價值的數據,將最新的數據存到Redis中。系統整體結構如圖1所示。
2.1初始化串口數據的接收和歸檔以駐留程序方式運行在服務器上,圖2顯示了實時氣象數據拆分與處理的初始化流程。氣象因子的記錄器對象主要暫時存儲拆分處理后的氣象數據,氣象因子讀取器對象負責讀取數據包中記錄的特定氣象因子的測量值。由于VantagePro氣象站測量的氣象因子的值與要歸檔值的單位不一致,因此也需要氣象因子的修正器對象來對測量的原始值進行修正。
2.2數據的拆分與處理系統的初始化后,采集程序定時從串口接收數據,首先獲得采集時間并轉換為1970年到現在的秒數,并向VantagePro請求一個數據包,接著就是處理收到的氣象數據包。PC上實時氣象數據的拆分與處理的流程如圖3所示。圖3中的時間秒數的定義為從1970年1月1日0時0分0秒到此時的秒數。相鄰的兩個時間秒數之間相差60秒,即1分鐘。數據的采樣周期也是1分鐘。時間秒數用來唯一表示氣象因子的采集時間或采樣時間,同時也作為Redis存儲中可分類的集合中Score的值。
2.3氣象數據的存儲將采集的氣象數據保存到MySQL數據庫中,同時為了提高查詢速度,使用Redis作為高速緩存。MySQL數據庫中數據表的定義如表2所示。Redis是一個Key-Value存儲系統[10]。和Memcached類似,它支持存儲的value類型相對更多,包括string(字符串)、list(鏈表)、set(集合)和zset(有序集合)。Redis的功能可以理解為一個Key-Value的數據結構操作,數據都保存在內存中定期刷新到磁盤,以及提高的讀寫效率。Redis數據庫通過兩種方式可以實現數據持久化:使用快照的方式將內存中的數據不斷寫入磁盤和將操作記錄記錄在磁盤文件中。因為需要在Redis執行范圍查詢,我們使用有序集合SortedSets存儲氣象數據,集合結構中使用時間秒數作為score,氣象數據的實際值為其value值。而Key的值為氣象的統計因子,如溫度(temperature)、濕度(humidity)等。比如將2015年1月29日16時26分05秒采集的溫度的值17℃存儲到Redis的命令為:redis127.0.0.1:6379>zaddiss.temperature142252110017。
2.4拆分存儲實例在如下的氣象數據拆分與歸檔的例子中,以測量室外溫度的傳感器iss.temperature為例。其它氣象因子數據的拆分與歸檔和氣象因子(室外溫度)的處理情況類似。步驟如下:1)開始采樣時間為2015年1月29日16時26分05秒,將該時間轉換成1970年以來的時間秒數,為1422521100。2)向VantagePro發送命令LOOP1命令,請求一個99字節的數據包。接收端到氣象站響應的數據包,數據包的內容如圖5所示。3)傳感器iss.temperature的讀取器從數據包中偏移量為12的位置讀取2個字節,其十六進制值為001d。讀取器對象將001d轉換成十進制的29。4)傳感器iss.temperature的修正器將傳感器的29F修正為2.900000F,然后再將2.900000F轉換成-16.166667℃。(溫度傳感器記錄的測量值是實際測量值的10倍,其它值的倍數詳見表1)5)傳感器iss.temperature的記錄器將-16.166667℃更新到記錄器對象中。6)將傳感器的值歸檔到MySQL和Redis中。7)更新下一次采用時間,循環步驟1-7。
3氣象數據合并與快速檢索
3.1氣象數據的合并一般情況下將采集到的氣象數據處理成特定格式后直接追加到數據庫中,然而隨著時間的積累,數據庫中的記錄數會急劇增加。相應地檢索某一個時間段的天氣狀態所需的時間也會增加,不能滿足MUSER的高效數據處理的要求。由于連續時間段的天氣狀態可能相同。例如在2014-6-610:00:00到2014-6-610:00:59這一分鐘采集到的天氣狀態為晴天,而在接下來的59分鐘的時間內采集到的天氣狀態都為晴天。通常情況下是將這60條記錄全部存儲到數據庫中,然而改進的歸檔方法是合并這60條記錄為一條記錄。當檢索落在這一合并后的時間段天氣狀態時,仍然可以檢索到要檢索時間段的天氣狀態為晴天,這樣做和從60條記錄中檢索到的天氣狀態一樣都是晴天,保證了合并后的數據仍然是有效的。如果一天要歸檔的所有采集到的天氣狀態都一樣,那么采用合并方法,數據庫中存儲一條記錄就可以記錄這一天的天氣狀態。但是如果采用傳統的數據歸檔方式,記錄一天的天氣狀態就需要24*60條記錄,這樣不僅浪費了存儲空間,同時影響到檢索效率。
3.2快速檢索數據合并一定程度上可以加快檢索速度,但對于具體值的氣象采集因子,如需要在每個UVFITS文件中存儲的溫度,濕度值,是無法采用數據合并的,數據量仍非常大。為了進一步提高查詢速度,使用Redis作為高速緩存。數據查詢時首先訪問Redis,只有當Redis訪問失敗時或者在Redis中找不到數據時才訪問MySQL,并將從MySQL獲得的數據更新到Redis中。MUSER中最常用的氣象數據查詢模式是根據觀察時間查詢氣象數據,因此使用有序集合SortedSet,SortedSet是Set的一個升級版本,它在Set的基礎上增加了一個順序屬性,這一屬性在添加修改元素的時候可以指定,每次指定后,zset會自動重新按新的值調整順序??梢岳斫鉃橛袃闪械腗ySQL表,一列存儲具體的值,一列存順序,也就是氣象數據的時間。操作中key理解為zset的名字。查詢時根據觀察時間和氣象因子可以獲得該時刻的具體氣象數據。比如查詢時間2015年1月29日16時26分05秒的溫度的值,首先將該時間轉換成1970年以來的時間秒數,為1422521100,在Redis上執行如下查詢命令:redis127.0.0.1:6379>zrangebyscoretemperature1422521100+infLIMIT01這條命令的意思是在鍵值為temperature的SortedSets中查找大于時間點1422521100的第一個值。+inf在Redis中表示正無窮大。
篇11
1.3觸控液晶顯示器電路設計系統采用2.4寸(240×320)TFT液晶顯示器,由于STM32內部沒有集成專用的液晶屏和觸摸屏的控制接口,所以需要外接專用芯片來控制顯示面板,系統采用ILI9325和TSC2046芯片。由STM32的FSMC(靜態存儲控制器)的NOR/PSRAM模式模擬產生ILI9325的8080接口通信時序,通過對FSMC的操作向ILI9325寫入控制命令或GRAM數據。通過配置STM32的SPI接口向四線電阻觸摸屏控制器TSC2046寫入控制字和接收控制器返回的屏幕X、Y方向的觸電電壓值。
2系統軟件設計
根據系統硬件功能設計,系統軟件主要有3個模塊組成:驅動信號產生模塊、數據處理模塊、液晶顯示模塊。為了使3個模塊協調運行、更好地管理微處理器及縮短軟件開發周期,系統在STM32微處理器平臺上移植了μC/OS-Ⅱ實時操作系統[7]。根據所完成任務性質及特性的不同,3個模塊有不同的優先級及運行頻率,其中驅動信號產生模塊擁有最高優先級,可剝奪型的實時內核在任何時候都運行就緒了的最高優先級任務,數據處理模塊的運行是基于驅動信號產生的基礎之上,優先級次低,窗口顯示模塊對實時性要求最低,可設置最低的優先級。驅動采樣任務、數據處理任務及顯示任務的流程如圖6所示。液晶顯示處理任務負責及時按指定格式顯示出處理后的數據及完成通過觸摸屏控制系統的運行啟停等人機交互任務,為了簡化開發步驟和提高程序開發效率,系統在μC/OS-Ⅱ操作系統的基礎上移植了uCGUI嵌入式圖形支持系統。uCGUI設計用于為任何使用LCD圖形顯示的應用提供高效且獨立于處理器及LCD控制器的圖形用戶接口。uCGUI可以在任何的CPU上運行,因為它是100%的標準C代碼編寫的。系統的控制顯示界面如圖7所示。
篇12
1高速數據采集處理系統原理及器件選用
整個高速數據采集處理系統的硬件構成為:高速ADC、高速大容量數據緩沖、高性能DSP和USB2.0接口。系統的原理框圖如圖1所示。
高性能DSP采用TI公司的TMS320C6000系列定點DSP中的TMS320C6203B;高速ADC采用TI公司的ADS5422,14位采樣,最高采樣頻率為62MHz;PC機接口采用USB2.0,理論最大數據傳輸速率為480Mbps,器件選用Cypress公司EZ-USBFX2系列中的CY7C68013;數據緩沖采用IDT公司的高速大容量FIFO器件IDT72V2113;程序存儲在Flash存儲器中,器件選用SST291E010。下面逐一介紹各個器件的主要特性。
(1)TMS320C6203B
TMS320C6203B是美國TI公司高性能數字信號處理器TMS320C6000系列的一種,采用修正的哈佛總線結構,共有1套256位的程序總線、兩套32位的程序總線和1套32位的DMA專用總線;內部有8個功能單元可以并行操作,工作頻率最大為300MHz,最大處理能力為2400MIPS;內部集成了設備接口,如外部存儲器接口(EMIF)、外部擴展總線(XB)、多通道緩沖串口(McBSPs)和主機接口(HPI),與外部存儲器、協處理器、主機以及串行設備的連接非常方便。
(2)ADS5422
ADS5422是由美國TI公司生產的高速并行14位模數轉換器,其最高采樣頻率達到62MHz,采樣頻率為100MHz時,SNR為72dB,SFDR為85dB。模擬信號輸入可以是單端輸入方式或者差分輸入方式,最高輸入信號峰峰值為4V,單一5V電源供電。輸出數字信號完全兼容3.3V器件,并且提供輸入信號滿量程標志以及輸出數字信號有效標志,從而方便和其它器件的連接。
(3)IDT72V2113
IDT72V2113是由美國IDT公司生產的高速大容量先進先出存儲器件(FIFO)。其最高工作頻率為133MHz;容量為512KB,可以通過引腳方便地將容量設置成512K×9bit或者256K×18bit兩種方式;IDT72V2113可以設置標準工作模式或者FWFT(FirstWordFallThrough)工作模式,并提供全滿、半滿、全空、將滿以及將空等五種標志信號;非常方便進行容量擴展。容量擴展是IDT72V2113的一大特點,擴展方式可分為字長擴展和字深擴展。通過容易擴展可以由多片IDT72V2113形式更大容量的緩沖,并且電路連接簡單、可靠。
(4)CY7C68013
CY7C68013是美國Cypress公司推出的USB2.0芯片,是一個全面集成的解決方案,它占用更少的電路板空間,并縮短開發時間。CY7C68013主要結構如下:包括1個8051處理器、1個智能串行接口引擎(SIE)、1個USB收發器、16KB片上RAM(其中包括4KBFIFO)存儲器以主1個通用可編程接口(GPIF)。
圖3
CY7C68013獨特的架構具有如下特點:
①包括1個智能串行的接口引擎(SIE),它執行所有基本的USB功能,將嵌入的MCU解放出來以用于實現其它豐富的功能,以保證持續高速有效的數據傳輸;
②具有4KB的大容量FIFO用于數據緩沖,當作為從設備時,可采用Synchronous/AsynchronousFIFO接口與主設備(如ASIC,DSP等)連接;當作為主設備時,可通過通用可編程接口(GPIF)形式任意的控制波形來實現與其它從設備連接,能夠輕易地兼容絕大多數總線標準,包括ATA、UTOPIA、EPP和PCMCIA等;
③固件軟配置,可將需要在CY7C68013上運行的固件,存放在主機上,當USB設備連上主機后,下載到設備上,這樣就實現了在不改動硬件的情況下很方便地修改固件;
④能夠充分實現USB2.0(2000版)協議,并向下兼容USB1.1。
2高速數據采集處理系統的硬件連接
2.1模擬信號輸入電路
ADS5422的模擬信號輸入可以采取單端輸入方式或者差分輸入方式。單端輸入方式連接比較簡單,但抗噪性能差,所以我們采取差分輸入方式,以盡量減少信號噪聲以及電磁的干擾,尤其是采用差分輸入方式可以將所有偶次諧波通過正反反個輸入信號基本上互相抵消。
ADS5422的模擬信號差分輸入方式需要同時使用IN和IN引腳,其硬件連接方法如圖2所示。圖中,首先使用放大器OPA687以及RF變壓器將單端信號轉換成差分信號,然后輸入到ADS5422,其中ADS5422的公共端CM和RF變壓器的公共端連接,RF變壓器的匝數比應該根據信號確定。為了增強信號的穩定性,在ADS5422每個信號的輸入前加上RC低通濾波電路,圖2中推薦Rt為50Ω,Rin為22Ω,Cin為10pF,這些元件也可以根據具體的信號進行調整,一般情況下電阻值在10~100Ω之間,電容值在10~200pF之間。
圖4
2.2ADS5422與IDT72V2113的連接
雖然ADS5422的供電電壓為5V,但其輸出的數字信號電平兼容3.3V電平,因此不需要電平轉換芯片,只要將ADS5422的數據線與IDT72V2113的數據線相連即可。但是,ADS5422采樣和存儲采樣數據到IDT72V3113中,這兩個操作對時序配置要求非常嚴格,如果兩者時序關系配合得不是很好,就會發生數據存儲出錯或者掉數。如何簡單、可靠地實現采樣和存儲是設計這部分電路的難點。一般的方法是,通過可編程邏輯器件(CPLD或FPGA)來實現ADC與FIFO存儲器之間的時序,即由CPLD或FPGA來控制ADC采樣和FIFO存儲器的寫操作。但是,通過仔細查看ADS5422和IDT72V2113的工作時序圖,找到了一種簡單可靠的實現方法,此方法不需要CPLD或FPGA就可以實現兩者的時序配合。
首先分析ADS5422的工作時序圖,如圖3所示,其中t1為采樣時鐘上跳沿到輸出數據無效之間的時間間隔,即數據保持時間,其大小為3ns。查看IDT72V2113的相關文檔可知,對其進行寫操作時,數據線的保持時間大于1ns即可滿足要求。因此,ADS5422與IDT72V2113之間的時序配合可以采用以下簡單的實現方法:ADS5422的采樣時鐘和IDT72V2113的寫時鐘采用同一個時鐘源,這樣,每一個時鐘的上跳沿,ADS5422進行模數轉換,同時將上個時鐘周期內輸出的采樣數據存儲到DT72V2113內部。
2.3C6203B與IDT72V2113的連接
C6203B與IDT72V2113的連接是通過C6203B外部擴展總線(XB)。C6203B的外部擴展總線(XB)寬度為32位,可以實現與同步FIFO無縫連接,可以同時無縫實現四個FIFO寫接口或者實現3個FIFO寫接口及1個FIFO讀接口。通過無縫連接實現FIFO讀接口,FIFO必須連接到XCE3上,數據通過DMA方式從IDT72V2113傳送到C6203B的片內RAM中,具體連接如圖4所示。圖4中,4片IDT72V2113經過字長和字深擴展形成2MB的數據輸入緩沖,輸入數據總線(D0~D15)、輸出數據總線(Q0~Q15)、讀使能(REN)、讀時鐘(RCLK)、寫使能(WEN)、寫時鐘(WCLK)和將空標志信號(PAE)是由4片IDT72V2113的相應信號組合形成的;XCE3為外部擴展總線(XB)的空間選擇信號,XFCLK為外部擴展總線(XB)的輸出時鐘,EXT_INT4是C6203B的外部中斷信號4,DX0用作通用輸出口,控制IDT72V2113的寫使能信號。
2.4CY7C68013與C6203B的連接
CY7C68013是一個非常方便的USB2.0實現方案,它提供與DSP或者MCU連接的接口,連接方法有兩種:SlaveFIFOs和Master可編程接口GPIF。在本方案中,選用了SlaveFIFOs方式,異步讀寫。SlaveFIFOs方式是從機方式,DSP可以像讀寫普通FIFO一樣對CY7C68013內部的多層緩沖FIFO進行讀寫。具體的電路連接如圖5所示。FLAGA、FLAGB和FLAGC是CY7C68013內部FIFO的狀態標志,C6203B通過通用I/O口來獲得FIFO的空、半滿(由用戶設定半滿的閾值)和滿等狀態信息。C6203B對CY7C68013內部FIFO的選擇,以及數據包的提交也是通過通用I/O口來實現。C6203B通過EMIF接口的CE2空間對CY7C68013進行讀寫操作。工作過程為:DSP通過USB向PC發送數據時,首先查看空、半滿和滿這三個狀態信號,然后向USB寫入適當大小的數據,以保證數據不會溢出;PC機通過USB向DSP發送命令字時,USB通過中斷方式通知DSP讀取命令字。
3USB軟件設計
USB接口開發中有相當大的工作量是關于USB軟件的開發,USB軟件包括三方面的工作:固件(firmware)設計,驅動程序設計和主機端應用程序的設計。
3.1固件設計
固件是運行在CY7C68013上的程序,可采用匯編語言或C語言設計,其主要功能是控制CY7C68013接收并處理USB驅動程序的請求(如請求設備描述符、請求或設置設備狀態,請求或設置設備接口等USB2.0標準請求)、控制CY7C68013接收應用程序的控制指令、通過CY7C68013存放數據并實時上傳至PC等。
本方案中的固件設計思路如下:
①使CY7C68013工作于異步從FIFO(AsynchronousSlaveFIFO)模式。相應的寄存器操作為:IFCONFIG=0xCB。
CY7C68013具有多種工作方式,除了可以作為能夠產生任意控制波形的主控芯片外,即使作為從設備,也可選擇異步還是同步方式。由于DSP的關系,本方案選擇異步從方式。
②將4KB的FIFO對應兩個端點(EndPoint),即EndPoint2和EndPoint6。相應的寄存器操作為:EP2CFG=0xA0,EP6CFG=0xF2。
EndPoint2與EndPoint6分別對應2KB的內裝中FIFO(下文分別稱為FIFO2、FIFO6),存放USB需要上傳與接收的數據。其中EndPoint2為OUT型,負責從主機接收數據;EndPoint6為IN型,負責向主機發送數據。另外,EndPoint2與EndPoint6均采用批量(BULK)傳輸方式,這種方式相對于其它USB2.0定義的傳輸方式具有數據可靠、傳輸速率高等特點,是最常用的傳輸方式。
③對FIFO進行配置。相應的寄存器操作為:EP2FIFOCFG=0x11,EP6FIFOCFG=0x0D。
本方案將FIFO2、FIFO6設置成自動方式。這里所謂“自動”,是指在數據的傳輸過程中,不需要CY7C68013的8051內核參與。如有特殊需要可以設成手動方式,這樣8051就可以對數據進行修改,如圖6所示。另外還將FIFO配置成16位接口。
④其它操作。為了完善整個USB傳輸功能,提高固件的健壯性,還必須配以其它設計,這包括FIFO的自動清空復位,個性化命令等功能,在此就不進行詳細討論了。
3.2驅動程序設計
USB系統驅動程序采用分層結構模型,分別為較高級的USB設備驅動程序和較低級的USB函數層。其中USB函數層由兩部分組成:較高級的通用串行總線驅動程序模塊(USBD)和較低級的主控制器驅動程序模塊(HCD)。在上述USB分層模塊中,USB函數層(USBD及HCD)由Windows提供,負責管理USB設備驅動程序和USB控制器之間的通信;加載及卸載USB驅動程序;與USB設備通用端點(EndPoint)建立通信并執行設備配置、數據與USB協議框架和打包格式的雙向轉換任務。目前Windows提供有多種USB設備驅動程序,但并不針對實時數據采集設備,因此USB設備驅動程序需由開發者自己編寫。
開發USB設備驅動程序,可采用Numega公司的開發包DriverWorks和Microsoft公司的2000DDK,并以VC++6.0作為輔助開發環境。DriverWorks提供的驅動向導,可根據用戶的需要,自動生成代碼框架,減少了開發的難度,縮短了開發的周期。但是,Cypress公司為了方便用戶開發USB接口,在CY7C68013的開發包中提供了一個通用驅動程序,該程序可不加修改,經DDK編譯后直接使用。在本設計方案中,采用的就是這個通用驅動程序。
3.3應用程序設計
主機應用程序是主要實現從高速數據采集處理板該取處理后的數據、存儲、顯示處理結構以及向數據采集處理板發送控制命令。在Windows2000下,我們使用的應用程序開發工具是VC++6.0。
4系統工作原理
篇13
現代工業生產和科學研究對數據采集的要求日益提高,在瞬態信號測量、圖像處理等一些高速、高精度的測量中,需要進行高速數據采集?,F在通用的高速數據采集卡一般多是PCI卡或ISA卡,存在以下缺點:安裝麻煩、價格昂貴;受計算機插槽數量、地址、中斷資源限制,可擴展性差;在一些電磁干擾性強的測試現場,無法專門對其做電磁屏蔽,導致采集的數據失真。
通用串行總線USB是1995年康柏、微軟、IBM、DEC等公司為解決傳統總線不足而推廣的一種新型的通信標準。該總線接口具有安裝方便、高帶寬、易于擴展等優點,已逐漸成為現代數據傳輸的發展趨勢?;赨SB的高速數據采集卡充分利用USB總線的上述優點,有效解決了傳統高速數據采集卡的缺陷。
2硬件設計
2.1支持USB2.0高速傳輸的CY7C68013
CypressSemiconductor公司的EZ-USBFX2是世界上第一款集成USB2.0的微處理器,它集成了USB2.0收發器、SIE(串行接口引擎)、增強的8051微控制器和可編程的接口。FX2這種獨創性結構可使數據傳輸率達到56Mbytes/s,即USB2.0允許的最大帶寬。在FX2中,智能SIE可以硬件處理許多USB1.1和USB2.0協議,從而減少了開發時間和確保了USB的兼容性。GPIF(GeneralProgrammableInterface)和主/從端點FIFO(8位或16位數據總線)為ATA、UTOPIA、EPP、PCMCIA和DSP等提供了簡單和無縫連接接口。
CY7C68013的GPIF引擎具有自動傳輸數據結構的特性,這種特性使得設備和主機通過CY7C68013可以無縫的、高速的傳輸數據。為了實現高速的數據傳輸,CY7C68013CPU不會直接參與數據的傳輸,而是直接利用GPIF的自動傳輸數據模式。圖1和圖2說明了主機IN和OUT數據傳輸過程。
2.1.1端點緩沖區
FX2包含3個64字節端點緩沖區和4K可配置成不同方式的緩沖,其中3個64字節的緩沖區為EP0、EP1IN和EP1OUT。EP0作為控制端點用,它是一個雙向端點,既可為IN也可為OUT。當需要控制傳輸數據時,FX2固件讀寫EP0緩沖區,但是8個SETUP字節數據不會出現在這64字節EP0端點緩沖區中。EP1IN和EP1OUT使用獨立的64字節緩沖區,FX2固件可配置這些端點為BULK、INTERRUPT或ISOCHRONOUS傳輸方式,這兩個端點和EP0一樣只能被固件訪問。這一點與大端點緩沖區EP2、EP4、EP6和EP8不同,這四個端點緩沖區主要用來和片上或片外進行高帶寬數據傳輸而無需固件的參與。EP2、EP4、EP6和EP8是高帶寬、大緩沖區。它們可被配置成不同的方式來適應帶寬的需求。
2.1.2接口信號
在利用GPIF進行高速數據傳輸系統設計時,GPIFwaveforms的編輯是非常重要的,它控制著整個數據傳輸過程的讀寫時序。此時CPU的作用已經非常小了,它只起著下載代碼到內部RAM以及在固件中如何觸發GPIFwaveforms的作用。FX2專門為GPIF提供了接口信號,如8位或16位的數據線、控制信號、Ready信號以及地址線。
IFCLK(雙向時鐘信號):IFCLK是一個參考時鐘,可以配置成輸入或輸出。當配置為輸出時,IFCLK被FX2驅動為30MHz或48MHz;當配置為輸入時,時鐘范圍為5-48MHz。
GPIFADR[8:0](輸出):GPIF使用GPIFADR信號為外部設備提供地址線,在總線上地址值是自增的。
FD[15:0](雙向):這是USB主機通過FX2和外部設備進行數據傳輸的數據線,它可配置成8位或16位。當16位時,FD[7:0]代表端點FIFO中的第一個字節,FD[15:8]代表第二個字節。
CTL[5:0](輸出):FX2為外部設備提供了幾個控制信號,如讀寫選通、使能等。
RDY[5:0](輸入):FX2提供了幾個狀態檢測信號,它可以檢測外部設備的狀態,如FIFO的空、滿、半滿等。
GSTATE[2:0](輸出):這是調試信號,表示GPIF波形執行的狀態,通常連接到邏輯分析儀上。
2.2AD9238
AD9238是一個雙通道的12位A/D轉換器,采用單3V供電,速度可以是20MSPS、40MSPS和65MSPS;低功耗,工作在20MSPS時,功耗為180mW,40MSPS時,功耗為330mW,65MSPS時,功耗為600mW;具有500MHz3dB帶寬的差分輸入;片上參考源及SHA;靈活的模擬輸入范圍:1Vp-p~2Vp-p;適用于:超聲波設備,射頻通訊,電池電源儀器,低價示波器等。本系統采用20MSPS的AD9238,可充分發揮USB在高速傳輸模式下的數據傳輸優勢。
2.3數據采集系統
該數據采集系統整個框圖如圖3所示,該系統由以下幾部份組成:USB控制器、FIFO、CPLD、AD9238以及數據采集前端電路。
圖3數據采集系統框圖
CPLD主要是控制時序,時鐘分頻等。FIFO主要是起著高速數據緩沖作用,當FIFO半滿時,數據開始向USB主機發送。我們采用的是同步FIFO,時鐘信號接IFCLK,當FIFO的/RD信號和/OE信號有效時,每個IFCLK上升沿就輸出一個數據;當FIFO的/WR信號有效時,IFCLK上升沿就讀進一個數據。AD9238的20MHz時鐘信號是通過CPLD分頻所得。當程序使能AD9238的/OEB_A和/OEB_B信號時,AD9238雙通道開始進行數據采集并向FIFO寫數據。
系統前端的調理電路采用的是AD公司的AD8138,該放大器具有較寬的模擬帶寬(320MHz,-3dB,增益1),而且可以實現將單端輸入變成差分輸出的功能。此項功能在現代高速模數變換電路中非常有用,因為幾乎所有的高速A/D芯片都要求模擬信號為差分輸入,雖然部分芯片的手冊中提到對于單端輸入信號也可使用,但這樣一來會使A/D轉換結果的二次諧波增大,降低信噪比(SNR)。AD8138很好的解決了這個問題,用戶可以很容易的將單端信號轉換成差分輸出而不必使用變壓器,并且它的輸入阻抗高達6MΩ,可以直接與輸入信號相連而省略隔離放大器,大大精簡了電路結構。圖4為AD8138的典型應用電路。
圖4AD8138典型應用電路
3軟件設計
3.1Windows驅動程序設計
USB設備驅動程序基于WDM。WDM型驅動程序是內核程序,與標準的Win32用戶態程序不同。采用了分層處理的方法。通過它,用戶不需要直接與硬件打它道(在USB驅動程序中尤為明顯),只需通過下層驅動程序提供的接口號訪問硬件。因此,USB設備驅動程序不必具體對硬件編程,所有的USB命令、讀寫操作通過總線驅動程序轉給USB設備。但是,USB設備驅動程序必須定義與外部設備的通訊接口和通訊的數據格式,也必須定義與應用程序的接口。
Cypress公司提供了完整的CY7C68013驅動程序源碼、控制面板程序及固件的框架,這大大提高了用戶開發的進度。用戶只需稍加修改或不需任何修改即可使用所帶驅動程序,軟件開發者大量的時間主要集中在應用程序和固件的開發。本文所述的數據采集系統驅動程序就在原來的基礎上進行了簡單的修改來滿足我們的需要。根據我們自己的需求,一般只需修改DeviceIoControl例程,如我們主要增加了控制數據傳輸函數、啟動和停止AD、復位FIFO等,即IOCTL_START_AD、IOCTL_STOP_AD、IOCTL_RESET_FIFO。
3.2底層固件設計
要實現USB2.0的高帶寬數據傳輸,必須使用它特有的GPIF特性,在開發固件前,首先必須根據實際需要對GPIFwaveform進行編輯。CY7C68013開發工具中帶有一個GPIFDesigner,如圖5所示,編輯完waveform后,選擇Tools->ExporttoGPIF.cFile來輸出GPIF.c文件,然后將該文件加入keilc工程進行編譯。
由于CY7C68013的EP2、EP4、EP6、EP8四個端點共享4KFIFO緩沖區,所以在該系統中,我們將EP2配置成4K的緩沖區,并設置為IN。用EP1OUT作為AD的控制參數傳遞,如啟動和停止AD數據輸出、復位FIFO等。在固件程序中,最重要的就是TD_Init()和TD_Poll()兩個函數。
圖5GPIFDesigner
在TD_Init()中主要完成GPIF相應寄存器的初始化,如下:
voidTD_Init(void)//Calledonceatstartup
{
//settheCPUclockto48MHz
CPUCS=((CPUCS&~bmCLKSPD)|bmCLKSPD1);
SYNCDELAY;
EP2CFG=0XE8;//EP2IN,bulk,size1024,4xbuffered
SYNCDELAY;
EP4CFG=0x00;//EP4notvalid
SYNCDELAY;
EP6CFG=0x00;//EP6notvalid
SYNCDELAY;
EP8CFG=0x00;//EP8notvalid
SYNCDELAY;
FIFORESET=0x80;//setNAKALLbittoNAKalltransfersfromhost
SYNCDELAY;
FIFORESET=0x02;//resetEP2FIFO
SYNCDELAY;
FIFORESET=0x00;//clearNAKALLbittoresumenormaloperation
SYNCDELAY;
EP2FIFOCFG=0x01;//allowcoretoseezerotoonetransitionofautooutbit
SYNCDELAY;
EP2FIFOCFG=0x11;//autooutmode,disablePKTENDzerolengthsend,wordops
SYNCDELAY;
EP6FIFOCFG=0x09;//autoinmode,disablePKTENDzerolengthsend,wordops
SYNCDELAY;
GpifInit();//initializeGPIFregisters
SYNCDELAY;
EP2GPIFFLGSEL=0x02;//ForEP2IN,GPIFusesFFflag
SYNCDELAY;
//globalflowstateregisterinitializations
FLOWLOGIC=FlowStates[19];//00110110b-LFUNC[1:0]=00(AANDB),//TERMA/B[2:0]=110(FIFOFlag)
SYNCDELAY;
FLOWSTB=FlowStates[23];//00000100b-MSTB[2:0]=100(CTL4),not//usedasstrobe
SYNCDELAY;
GPIFHOLDAMOUNT=FlowStates[26];//holddataforonehalfclock(10ns)assuming//48MHzIFCLK
SYNCDELAY;
FLOWSTBEDGE=FlowStates[24];//movedataonbothedgesofclock
SYNCDELAY;
FLOWSTBHPERIOD=FlowStates[25];//20.83nshalfperiod
SYNCDELAY;
//resettheexternalFIFO
OEA|=0x07;;//turnonPA0、PA1、PA2asoutputpin
IOA|=0x07;//pullPA0、PA1、PA2highinitially
IOA&=0xFB;//bringPA2low
EZUSB_Delay(1);//keepPA2lowfor~1ms,morethanenoughtime
IOA|=0x04;//bringPA2highandexitreset
IOA&=0xFC;//bringPA0、PA1lowandenableAD
}
在TD_Poll()中主要完成外部FIFO狀態的檢測和數據的傳輸,主要程序部分如下:
voidTD_Poll(void)
{
if(GPIFTRIG&0x80)//ifGPIFinterfaceIDLE
{
if(EXTFIFONOTEMPTY)//ifexternalFIFOisnotempty
{
if(!(EP24FIFOFLGS&0x01))//ifEP2FIFOisnotfull
{
if(enum_high_speed)
{
SYNCDELAY;
GPIFTCB1=0x02;//setuptransactioncount(1024//bytes/2forwordwide->0x0100)
SYNCDELAY;
GPIFTCB0=0x00;
SYNCDELAY;
}
else
{
SYNCDELAY;
GPIFTCB1=0x00;//setuptransactioncount(64bytes/2
//forwordwide->0x20)
SYNCDELAY;
GPIFTCB0=0x20;
SYNCDELAY;
}
Setup_FLOWSTATE_Read();//setupFLOWSTATEregistersfor
//FIFOReadoperation
SYNCDELAY;
GPIFTRIG=GPIFTRIGRD|GPIF_EP2;//launchGPIFFIFOREAD
//TransactiontoEP2FIFO
SYNCDELAY;
while(!(GPIFTRIG&0x80))//pollGPIFTRIG.7GPIFDonebit
{
;
}
SYNCDELAY;
}
}
}