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