趙 麗,張春林
(1.長春職業技術學院,長春 130033;2.中國科學院長春光學精密機械與物理研究所,長春 130033)
目前,嵌入式系統已經無處不在,運用數據采集系統可以對生產過程中的工藝參數進行監測,也可對過程參數進行記錄。基于USB接口的數據采集系統設計以32位嵌入式芯片為控制核心,通過數模轉換將傳感器輸出的模擬信號變換成數字信號,計算機對該數字信號進行相應的處理,包括邏輯判斷和數學運算,最后獲得需要數據。
USB(Universal Serial Bus,通用串行總線)使用方便、速度快,易于擴展,該技術將會逐漸取代傳統傳輸方式在數據采集系統中的應用[1]。
本系統是一種便攜式數據采集系統,采用了ARM微處理器和USB2.0接口。系統硬件是在計算機基礎上,搭配USB接口的下位機硬件板卡。系統硬件結構框圖如圖1所示。系統軟件由PC的控制軟件和下位機嵌入式的軟件兩部分組成。
外界需要測量信號經過傳感器的檢測,再經測量儀器放大電路的放大后,便可得到質量較高的信號,即被測信號進入下位機硬件系統。在ARM微處理器內部,將模擬信號經過AD轉換變成數字信號,通過USB接口,數據被傳送給上位機。上位機可對下位機進行控制及相關信息顯示[2]。下位機具有較強的數據運算和處理能力,可進行數據的采集和運算,也可以響應上位機的控制指令,對系統進行基本控制。

圖1 系統硬件框圖
系統微處理器選用了PHILIPS公司推出的16/32位RISC芯片LPC2378,數據采集系統以LPC2378為核心,配合外圍電路可進行數據的采集、轉換、存儲、異常報警等。LPC2378芯片內部自帶ADC轉換器,可將外部采集到的模擬電信號轉換為可以處理的數字信號,并通過LPC2378內嵌的USB微處理器來進行電信號的上傳[3]。系統硬件總體結構如圖2所示。
LPC2378內部的A/D轉換器包含一個控制寄存器ADCR和一個數據寄存器ADDR,A/D轉換器的工作方式和運行狀態是由這兩個寄存器來完成的。A/D轉換器中設有專門的中斷使能位。A/D轉換開始前先寫入ADCR寄存器來設置工作模式,轉換結束后的數據從數據寄存器ADDR讀出,該寄存器包含一個轉換完成標志位DONE位和10位的轉換結果。

圖2 系統硬件總體結構框圖
LPC2378包含一套局部總線,該總線可與片內ARM7存儲器及控制器接口、一個ARM7TDMI-S CPU,該CPU能進行仿真,并包含一套AMBA高性能總線(AHB)和一套VLSI外設總線(VPB),AHB能與中斷控制器接口,VPB可連接片內外設。
USB設備控制器與LPC2378 ARM內核總線之間的接口如圖3所示,LPC2378 ARM USB設備控制器的結構框圖清楚地顯示了USB設備控制器的內部結構。

圖3 LPC2378 ARM USB設備控制器結構框圖
LPC2378 ARM通過相關寄存器來實現對USB設備控制器的控制。這些寄存器都工作在AHB時鐘域。CPU可以直接訪問這些寄存器,最小AHB時鐘頻率為18MHz,所有寄存器都按字地址邊界對齊,32位寬。
LPC2378 ARM內部具有一個完全兼容USB2.0全速規范的USB設備控制器,為提高了芯片性價比,USB設備控制器嵌于LPC2378 ARM CPU內部[4]。
LPC2378帶有2個USB接口-USB1和USB2。本系統僅需要使用其中一個,即利用其中的USB1接口設計了的USB功能設備,如圖4所示。
USB1的USB總線數據線為P0.29(D+)和P0.30(D-),只需將2個匹配電阻(阻值為22歐)接到這2個引腳和USB接口USB1的第三腳和第二腳即可。

圖4 LPC2378 ARM USB接口電路
為有效控制主機與USB設備之間的連接,接口電路使用LPC2378 ARM的P2.9(只能使用該引腳)來實現軟件連接特性。當P2.9為高電平時,主機斷開與USB設備的連接,D+線斷開與VDD3.3的連接;P2.9為低電平時,主機與USB設備建立連接3,D+線通過R21(1.5KΩ)上拉到VDD3。
USB1的第一引腳通過一個1kΩ的限流電阻與專用檢測引腳P1.30相連接,用來檢測USB線是否已經插入。
如果USB總線已經處于活躍狀態,發光二極管LED2能夠表征USB總線的運行狀態,如USB設備枚舉成功,則點亮LED2,如USB處于正常通行狀態,則使LED2閃爍,如USB設備處于懸空狀態或通行不正常,則熄滅LED2。
靜電釋放器件U6選用了PRTR5V0U2X,它是專門用于高速數據線或高頻信號線的保護器件,可防止靜電損壞芯片。LPC2378的USB2接口電路所接的I/O口與USB1接口電路的I/O口不同,其它用法均相同。
盡管LPC2378 ARM內置的USB控制器已經較為智能,但是再智能的硬件也不可能滿足客戶的所有要求。固件程序的設計思想就是根據用戶實際的需要,設計程序流程,編寫軟件程序,確保USB通信任務能夠順利完成。固件程序首先是完成設備配置,設備配置包括獲取設備信息集、識別接口信息和獲取設備路徑名,其次是接收USB主控制器發來的信息,并且能夠向主機發送信息。
固件程序設計包括三個層次,第一個層次是USB設備硬件抽象層,該層的全部函數用于配置LPC2378 ARM USB設備控制器;第二個層次是USB設備接口命令層,通過對相應寄存器的讀/寫來完成對LPC2378 ARM中USB設備控制器的訪問,可采用函數程序的編寫完成本層對相關寄存器的操作,協議層和應用層也能夠隨時調用;第三個層次是協議層,USB設備的所有請求都是協議層處理的;第四個層次是應用層,應用層基本上完成控制器的所有功能,包括抽象層、命令層、協議層的功能,也都是應用層來控制完成的。
為使USB功能設備在總線上達到最大的傳輸速率,才設計了固件(Fireware)程序,固件程序主要處理USB事務,這樣使MCU有更多空閑時間去處理其它的工作。固件程序一般采用中斷控制方式。為確保最高的傳輸速率和簡化固件程序,當微處理器在處理前臺任務的時候,后臺USB的傳輸可同時進行[5]。
其中一個端點與前臺和后臺數據的交換過程如下:
(1)USB總線上的數據傳輸到控制器內部,制器申請中斷。
(2)進入中斷服務程序后,進行數據的接收并存儲。
(3)退出中斷程序后,前臺對剛接收和存儲的數據進行處理。
(4)假設要發送數據到USB主機,將數據發送到LPC2378 ARM USB發送端的緩沖器中。
USB HID類上位機識別過程流程如圖5所示。
在應用程序可以開始與HID交換數據前,應用程序必須先識別該設備,并且讀取它的報表信息,這些動作需要調用一堆的API函數[6]。應用程序應首先識別連接到系統上的HID設備,在和USB設備進行通信前,也一樣要進行這些操作,包括獲取設備信息集、識別接口信息和獲取設備路徑名及打開設備。
基于USB 2.0的數據采集系統是一種USB接口通訊設備,能進行設備與主機的通訊,主機將本系統作為一個HID類設備使用,無需編寫煩瑣的驅動程序就可實現PC主機與本系統的數據通訊,因此大大縮短了開發周期,提高了開發效率。

圖5 USB HID類設備的PC識別過程
[1]黃潔.基于USB2.0的數據采集系統的研究與設計[J].自動化技術與應用,2009,28(11):47-50.
[2]畢宇輝,黃成軍,郭燦新,等.基于USB2.0協議的DSP高速數據采集系統的設計[J].江蘇電機工程,2006,25(5):41-44.
[3]李蘭,寧永海.基于CH372的USB數據采集系統的設計與實現[J].微計算機信息,2007,23(34):76-78.
[4]朱曉錦,吳小軍,李帆.基于雙核處理器的機敏結構振動主動控制器設計[J].計算機測量與控制,2010(2):366-369.
[5]喬鵬,葛寶臻.基于USB總線高速數據采集系統[J].電子測量技術,2003(4):13-17.
[6]謝成山,薛磊,陳家松,等.Windows環境下USB應用程序實例的開發[J].計算機工程,2004(14):196-196.