趙 麗,張春林
(1.長春職業(yè)技術(shù)學(xué)院,長春 130033;2.中國科學(xué)院長春光學(xué)精密機(jī)械與物理研究所,長春 130033)
目前,嵌入式系統(tǒng)已經(jīng)無處不在,運(yùn)用數(shù)據(jù)采集系統(tǒng)可以對生產(chǎn)過程中的工藝參數(shù)進(jìn)行監(jiān)測,也可對過程參數(shù)進(jìn)行記錄?;赨SB接口的數(shù)據(jù)采集系統(tǒng)設(shè)計以32位嵌入式芯片為控制核心,通過數(shù)模轉(zhuǎn)換將傳感器輸出的模擬信號變換成數(shù)字信號,計算機(jī)對該數(shù)字信號進(jìn)行相應(yīng)的處理,包括邏輯判斷和數(shù)學(xué)運(yùn)算,最后獲得需要數(shù)據(jù)。
USB(Universal Serial Bus,通用串行總線)使用方便、速度快,易于擴(kuò)展,該技術(shù)將會逐漸取代傳統(tǒng)傳輸方式在數(shù)據(jù)采集系統(tǒng)中的應(yīng)用[1]。
本系統(tǒng)是一種便攜式數(shù)據(jù)采集系統(tǒng),采用了ARM微處理器和USB2.0接口。系統(tǒng)硬件是在計算機(jī)基礎(chǔ)上,搭配USB接口的下位機(jī)硬件板卡。系統(tǒng)硬件結(jié)構(gòu)框圖如圖1所示。系統(tǒng)軟件由PC的控制軟件和下位機(jī)嵌入式的軟件兩部分組成。
外界需要測量信號經(jīng)過傳感器的檢測,再經(jīng)測量儀器放大電路的放大后,便可得到質(zhì)量較高的信號,即被測信號進(jìn)入下位機(jī)硬件系統(tǒng)。在ARM微處理器內(nèi)部,將模擬信號經(jīng)過AD轉(zhuǎn)換變成數(shù)字信號,通過USB接口,數(shù)據(jù)被傳送給上位機(jī)。上位機(jī)可對下位機(jī)進(jìn)行控制及相關(guān)信息顯示[2]。下位機(jī)具有較強(qiáng)的數(shù)據(jù)運(yùn)算和處理能力,可進(jìn)行數(shù)據(jù)的采集和運(yùn)算,也可以響應(yīng)上位機(jī)的控制指令,對系統(tǒng)進(jìn)行基本控制。
圖1 系統(tǒng)硬件框圖
系統(tǒng)微處理器選用了PHILIPS公司推出的16/32位RISC芯片LPC2378,數(shù)據(jù)采集系統(tǒng)以LPC2378為核心,配合外圍電路可進(jìn)行數(shù)據(jù)的采集、轉(zhuǎn)換、存儲、異常報警等。LPC2378芯片內(nèi)部自帶ADC轉(zhuǎn)換器,可將外部采集到的模擬電信號轉(zhuǎn)換為可以處理的數(shù)字信號,并通過LPC2378內(nèi)嵌的USB微處理器來進(jìn)行電信號的上傳[3]。系統(tǒng)硬件總體結(jié)構(gòu)如圖2所示。
LPC2378內(nèi)部的A/D轉(zhuǎn)換器包含一個控制寄存器ADCR和一個數(shù)據(jù)寄存器ADDR,A/D轉(zhuǎn)換器的工作方式和運(yùn)行狀態(tài)是由這兩個寄存器來完成的。A/D轉(zhuǎn)換器中設(shè)有專門的中斷使能位。A/D轉(zhuǎn)換開始前先寫入ADCR寄存器來設(shè)置工作模式,轉(zhuǎn)換結(jié)束后的數(shù)據(jù)從數(shù)據(jù)寄存器ADDR讀出,該寄存器包含一個轉(zhuǎn)換完成標(biāo)志位DONE位和10位的轉(zhuǎn)換結(jié)果。
圖2 系統(tǒng)硬件總體結(jié)構(gòu)框圖
LPC2378包含一套局部總線,該總線可與片內(nèi)ARM7存儲器及控制器接口、一個ARM7TDMI-S CPU,該CPU能進(jìn)行仿真,并包含一套AMBA高性能總線(AHB)和一套VLSI外設(shè)總線(VPB),AHB能與中斷控制器接口,VPB可連接片內(nèi)外設(shè)。
USB設(shè)備控制器與LPC2378 ARM內(nèi)核總線之間的接口如圖3所示,LPC2378 ARM USB設(shè)備控制器的結(jié)構(gòu)框圖清楚地顯示了USB設(shè)備控制器的內(nèi)部結(jié)構(gòu)。
圖3 LPC2378 ARM USB設(shè)備控制器結(jié)構(gòu)框圖
LPC2378 ARM通過相關(guān)寄存器來實(shí)現(xiàn)對USB設(shè)備控制器的控制。這些寄存器都工作在AHB時鐘域。CPU可以直接訪問這些寄存器,最小AHB時鐘頻率為18MHz,所有寄存器都按字地址邊界對齊,32位寬。
LPC2378 ARM內(nèi)部具有一個完全兼容USB2.0全速規(guī)范的USB設(shè)備控制器,為提高了芯片性價比,USB設(shè)備控制器嵌于LPC2378 ARM CPU內(nèi)部[4]。
LPC2378帶有2個USB接口-USB1和USB2。本系統(tǒng)僅需要使用其中一個,即利用其中的USB1接口設(shè)計了的USB功能設(shè)備,如圖4所示。
USB1的USB總線數(shù)據(jù)線為P0.29(D+)和P0.30(D-),只需將2個匹配電阻(阻值為22歐)接到這2個引腳和USB接口USB1的第三腳和第二腳即可。
圖4 LPC2378 ARM USB接口電路
為有效控制主機(jī)與USB設(shè)備之間的連接,接口電路使用LPC2378 ARM的P2.9(只能使用該引腳)來實(shí)現(xiàn)軟件連接特性。當(dāng)P2.9為高電平時,主機(jī)斷開與USB設(shè)備的連接,D+線斷開與VDD3.3的連接;P2.9為低電平時,主機(jī)與USB設(shè)備建立連接3,D+線通過R21(1.5KΩ)上拉到VDD3。
USB1的第一引腳通過一個1kΩ的限流電阻與專用檢測引腳P1.30相連接,用來檢測USB線是否已經(jīng)插入。
如果USB總線已經(jīng)處于活躍狀態(tài),發(fā)光二極管LED2能夠表征USB總線的運(yùn)行狀態(tài),如USB設(shè)備枚舉成功,則點(diǎn)亮LED2,如USB處于正常通行狀態(tài),則使LED2閃爍,如USB設(shè)備處于懸空狀態(tài)或通行不正常,則熄滅LED2。
靜電釋放器件U6選用了PRTR5V0U2X,它是專門用于高速數(shù)據(jù)線或高頻信號線的保護(hù)器件,可防止靜電損壞芯片。LPC2378的USB2接口電路所接的I/O口與USB1接口電路的I/O口不同,其它用法均相同。
盡管LPC2378 ARM內(nèi)置的USB控制器已經(jīng)較為智能,但是再智能的硬件也不可能滿足客戶的所有要求。固件程序的設(shè)計思想就是根據(jù)用戶實(shí)際的需要,設(shè)計程序流程,編寫軟件程序,確保USB通信任務(wù)能夠順利完成。固件程序首先是完成設(shè)備配置,設(shè)備配置包括獲取設(shè)備信息集、識別接口信息和獲取設(shè)備路徑名,其次是接收USB主控制器發(fā)來的信息,并且能夠向主機(jī)發(fā)送信息。
固件程序設(shè)計包括三個層次,第一個層次是USB設(shè)備硬件抽象層,該層的全部函數(shù)用于配置LPC2378 ARM USB設(shè)備控制器;第二個層次是USB設(shè)備接口命令層,通過對相應(yīng)寄存器的讀/寫來完成對LPC2378 ARM中USB設(shè)備控制器的訪問,可采用函數(shù)程序的編寫完成本層對相關(guān)寄存器的操作,協(xié)議層和應(yīng)用層也能夠隨時調(diào)用;第三個層次是協(xié)議層,USB設(shè)備的所有請求都是協(xié)議層處理的;第四個層次是應(yīng)用層,應(yīng)用層基本上完成控制器的所有功能,包括抽象層、命令層、協(xié)議層的功能,也都是應(yīng)用層來控制完成的。
為使USB功能設(shè)備在總線上達(dá)到最大的傳輸速率,才設(shè)計了固件(Fireware)程序,固件程序主要處理USB事務(wù),這樣使MCU有更多空閑時間去處理其它的工作。固件程序一般采用中斷控制方式。為確保最高的傳輸速率和簡化固件程序,當(dāng)微處理器在處理前臺任務(wù)的時候,后臺USB的傳輸可同時進(jìn)行[5]。
其中一個端點(diǎn)與前臺和后臺數(shù)據(jù)的交換過程如下:
(1)USB總線上的數(shù)據(jù)傳輸?shù)娇刂破鲀?nèi)部,制器申請中斷。
(2)進(jìn)入中斷服務(wù)程序后,進(jìn)行數(shù)據(jù)的接收并存儲。
(3)退出中斷程序后,前臺對剛接收和存儲的數(shù)據(jù)進(jìn)行處理。
(4)假設(shè)要發(fā)送數(shù)據(jù)到USB主機(jī),將數(shù)據(jù)發(fā)送到LPC2378 ARM USB發(fā)送端的緩沖器中。
USB HID類上位機(jī)識別過程流程如圖5所示。
在應(yīng)用程序可以開始與HID交換數(shù)據(jù)前,應(yīng)用程序必須先識別該設(shè)備,并且讀取它的報表信息,這些動作需要調(diào)用一堆的API函數(shù)[6]。應(yīng)用程序應(yīng)首先識別連接到系統(tǒng)上的HID設(shè)備,在和USB設(shè)備進(jìn)行通信前,也一樣要進(jìn)行這些操作,包括獲取設(shè)備信息集、識別接口信息和獲取設(shè)備路徑名及打開設(shè)備。
基于USB 2.0的數(shù)據(jù)采集系統(tǒng)是一種USB接口通訊設(shè)備,能進(jìn)行設(shè)備與主機(jī)的通訊,主機(jī)將本系統(tǒng)作為一個HID類設(shè)備使用,無需編寫煩瑣的驅(qū)動程序就可實(shí)現(xiàn)PC主機(jī)與本系統(tǒng)的數(shù)據(jù)通訊,因此大大縮短了開發(fā)周期,提高了開發(fā)效率。
圖5 USB HID類設(shè)備的PC識別過程
[1]黃潔.基于USB2.0的數(shù)據(jù)采集系統(tǒng)的研究與設(shè)計[J].自動化技術(shù)與應(yīng)用,2009,28(11):47-50.
[2]畢宇輝,黃成軍,郭燦新,等.基于USB2.0協(xié)議的DSP高速數(shù)據(jù)采集系統(tǒng)的設(shè)計[J].江蘇電機(jī)工程,2006,25(5):41-44.
[3]李蘭,寧永海.基于CH372的USB數(shù)據(jù)采集系統(tǒng)的設(shè)計與實(shí)現(xiàn)[J].微計算機(jī)信息,2007,23(34):76-78.
[4]朱曉錦,吳小軍,李帆.基于雙核處理器的機(jī)敏結(jié)構(gòu)振動主動控制器設(shè)計[J].計算機(jī)測量與控制,2010(2):366-369.
[5]喬鵬,葛寶臻.基于USB總線高速數(shù)據(jù)采集系統(tǒng)[J].電子測量技術(shù),2003(4):13-17.
[6]謝成山,薛磊,陳家松,等.Windows環(huán)境下USB應(yīng)用程序?qū)嵗拈_發(fā)[J].計算機(jī)工程,2004(14):196-196.