近年來,高速數(shù)字信號處理器(DSP)已越來越廣泛地用于各個領(lǐng)域,例如:通信、語音處理、圖像處理、模式識別及工業(yè)控制等方面,并且日益顯示出巨大的優(yōu)越性。數(shù)字信號處理器是利用專門或通用的數(shù)字信號處理芯片、以數(shù)字計算的方法對信號進行處理,具有處理速度快、靈活、精確抗干擾能力強、體積小、可靠性高等優(yōu)點,滿足了對信號快速精確實時處理及控制的要求。 通用串行總線USB(Universal Serial Bus)具有連接靈活、可熱插拔、一種接口適合多種設(shè)備、速度高、自動配置、無需定位及運行安裝程序、可為外設(shè)提供電源、低功耗、低成本、高可靠性等優(yōu)點使數(shù)據(jù)的高速傳輸變得非常便利。 設(shè)計一種通用數(shù)據(jù)采集與信號處理系統(tǒng),采用高性能的TMS320F2812 芯片和USB總線傳輸技術(shù),使信號能實時送到上位機進行分析與處理,從而實現(xiàn)高速的數(shù)據(jù)采集和處理功能。 1、系統(tǒng)概述 該系統(tǒng)的工作過程主要是將外部的八路同步模擬輸入信號經(jīng)過A/D 轉(zhuǎn)換器進行采樣和轉(zhuǎn)換,并把采集得到的大量數(shù)據(jù)送入DSP 內(nèi)部對采樣結(jié)果進行軟件濾波以及前端處理。在DSP 完成采集數(shù)據(jù)的處理工作后,將處理結(jié)果經(jīng)過USB 總線送至主機,進行實時的后端分析處理和顯示。 結(jié)構(gòu)框圖如圖1 所示,MAX1308 為MAXIM 公司生產(chǎn)的模/數(shù)轉(zhuǎn)換器,其采樣最高速率為單通道1075kSPS,8 通道為456kSPS ,精度為12 位,為8 通道同步采樣。采用TI 公司的TMS320F2812 作為處理器,其時鐘頻率最高為150MHz,是目前控制領(lǐng)域性能最高的處理器,具有精度高、速度快、集成度高等特點,為不同控制領(lǐng)域提供了高性能的處理器。USB 接口芯片采用的是CH372 ,具有8 位數(shù)據(jù)總線和讀、寫、片選控制線以及中斷輸出功能,可以方便地掛接到DSP 控制器的系統(tǒng)總線上。利用VC++ 實現(xiàn)了USB 和計算機的高速數(shù)據(jù)通信,充分利用了計算機的存儲容量大等特點,可將采集到的數(shù)據(jù)存儲起來供事后分析,也可以實現(xiàn)數(shù)據(jù)的實時處理。 圖1 系統(tǒng)框圖 2、系統(tǒng)硬件 2.1 TMS320F2812 C281x 系列DSP 是TI 公司最新32 位定點數(shù)字信號處理器,是基于TMS320C2000 數(shù)字信號處理器平臺開發(fā)的,其代碼與24x/240x 數(shù)字信號處理器完全兼容。因此,240x 的用戶能夠輕松的移植到C281x系列DSP 平臺上,C281x 系列DSP 同時具有數(shù)字信號處理器和微控制器的特點,尤其是C281x 繼承了數(shù)字信號處理器的諸多優(yōu)點,其中包括可調(diào)整的哈佛總線結(jié)構(gòu)和循環(huán)尋址方式。微控制器的特點主要包括字節(jié)的組合與拆分、位操作等。哈佛總線結(jié)構(gòu)能夠完成指令的并行處理,在單周期內(nèi)通過流水線完成指令和數(shù)據(jù)的同時提取,從而提高了處理器的處理能力。 C281x 處理器采用C/C++ 編寫的軟件,其效率高,因此用戶不僅可以應(yīng)用高級語言編寫系統(tǒng)程序,也能夠采用C/C++ 高效率的數(shù)學(xué)算法。C281x 系列數(shù)字信號處理器在完成數(shù)學(xué)算法和系統(tǒng)控制等任務(wù)時都具有較高的性能,這樣就避免了用戶在一個系統(tǒng)中需要多個處理器的麻煩。C281x 處理器內(nèi)核包含了一個32×32 位的乘法累計單元,能夠完成64 位的數(shù)據(jù)處理能力,從而使該處理器能夠?qū)崿F(xiàn)更高精度的處理任務(wù)。 2.2 USB接口 USB 通用接口芯片可分為3 種。一種是專門為USB 應(yīng)用設(shè)計的USB 芯片,一種是建立在現(xiàn)有芯片系列基礎(chǔ)上的USB 芯片,還有一種是只處理USB 通信,必須被一個外部微控制器所控制的USB 芯片。該設(shè)計采用CH372屬于最后一種。 CH372 內(nèi)置了USB 通訊中的底層協(xié)議,具有省事的內(nèi)置固件模式和靈活的外置固件模式。在內(nèi)置固件模式下,CH372 自動處理默認端點0 的所有事務(wù),本地端DSP 只要負責(zé)數(shù)據(jù)交換,所以DSP 程序非常簡潔。在外置固件模式下,由外部DSP 根據(jù)需要自行處理各種USB 請求,從而可以實現(xiàn)符合各種USB 類規(guī)范的設(shè)備。 CH372 與 TMS320F2812 之間以非總線方式連接,連接框圖如圖2 所示。CH372 的8 位數(shù)據(jù)口D0 "D7 分別掛在TMS320F2812 的GPIOA0 " GPIOA7 準雙向I/O 口上,命令數(shù)據(jù)地址選擇端A0,讀信號選擇端RD,寫信息選擇端WR 和中斷輸出端INT 分別與TMS320F2812的GPIOA9、GPIOA10、GPIOA11 和GPIO8(CAP1)相連,片選引腳CS 接地。 2.3 AD 轉(zhuǎn)換器 該系統(tǒng)采用MAXIM 公司的MAX1308 型號的AD 轉(zhuǎn)換器,MAX1308 獨立的采樣保持(T/H)電路為每個通道提供同時采樣,MAX1308 提供±5V 輸入范圍,輸入故障容限為±16.5V。其ADC 在0.9µs 內(nèi)完成2 個通道的轉(zhuǎn)換,在1.98μs 內(nèi)完成多達8 個通道的轉(zhuǎn)換,8 個通道轉(zhuǎn)換時每通道吞吐率為456kSPS。其他特性包括20MHz 的T/H 輸入帶寬、內(nèi)部時鐘、內(nèi)部(+2.5V)或外部(+2.0V 至+3.0V)基準以及低功耗省電模式。20MHz、12 位雙向并行數(shù)據(jù)總線用來提供轉(zhuǎn)換結(jié)果,并可接受數(shù)字輸入分別激活每一路通道。工作在+4.75V 至+5.25V 模擬電源與+2.7V 至+5.25V 數(shù)字電源下,全速運行時,總電源電流為57mA,工作溫度為-40℃至+85℃擴展溫度范圍。 3、軟件設(shè)計 該數(shù)據(jù)系統(tǒng)的軟件由USB 驅(qū)動程序、DSP 程序和PC 機應(yīng)用程序3 大模塊構(gòu)成。 3.1 USB 驅(qū)動 USB 設(shè)備驅(qū)動是應(yīng)用程序和硬件之間的接口,起著承上啟下的作用。CH372 套件包括CH372 芯片和計算機端的CH372 驅(qū)動程序。在本地端,CH372 芯片以內(nèi)置的固件程序自動處理了USB 通訊中的基本事務(wù);在計算機端,驅(qū)動程序以及動態(tài)鏈接庫等軟件向計算機應(yīng)用層提供應(yīng)用層接口。 它內(nèi)部提供API 函數(shù)供應(yīng)用程序使用,以實現(xiàn)對USB 設(shè)備的打開、關(guān)閉、讀寫等操作。此設(shè)計中USB 設(shè)備驅(qū)動采用USB 芯片廠商提供的驅(qū)動程序CH372DRV.EXE,安裝驅(qū)動程序CH372DRV.EXE 后,在應(yīng)用程序中調(diào)用動態(tài)鏈接庫CH375DLL.DLL 提供的API 函數(shù)來打開、關(guān)閉、和讀寫USB 設(shè)備。 DSP 和USB 芯片通信時,CH372 芯片占用兩個地址位,當A0 引腳為高電平時選擇命令端口,可以寫入命令;當A0 引腳為低電平時選擇數(shù)據(jù)端口,可以讀寫數(shù)據(jù)。DSP 通過8 位并行口對CH372 芯片進行讀寫,所有操作都是由一個命令碼、若干個輸入數(shù)據(jù)和若干個輸出數(shù)據(jù)組成,部分命令不需要輸入數(shù)據(jù),部分命令沒有輸出數(shù)據(jù)。命令操作步驟如下: ①、在A0=1 時向命令端口寫入命令代碼; ②、如果該命令具有輸入數(shù)據(jù),則在A0=0 時依次寫入輸入數(shù)據(jù),每次一個字節(jié); ③、如果該命令具有輸出數(shù)據(jù),則在A0=0 時依次讀取輸出數(shù)據(jù),每次一個字節(jié); ④、命令完成,可以暫停或者轉(zhuǎn)到①繼續(xù)執(zhí)行下一個命令。 CH372 芯片專門用于處理USB 通訊,在接收到數(shù)據(jù)后或者發(fā)送完數(shù)據(jù)后,CH372 以中斷方式通知DSP 進行處理。DSP 通過CH372 芯片接收數(shù)據(jù)的處理步驟如下: ①、當CH372 接收到USB 主機發(fā)來的數(shù)據(jù)后,首先鎖定當前USB 緩沖區(qū),防止被后續(xù)數(shù)據(jù)覆蓋,然后將INT 引腳設(shè)置為低電平,向DSP 請求中斷; ②、DSP 進入中斷服務(wù)程序,首先執(zhí)行GET_STATUS 命令獲取中斷狀態(tài); ③、CH372 在GET_STATUS 命令完成后將INT 引腳恢復(fù)為高電平,取消中斷請求; ④、由于通過上述GET_STATUS 命令獲取的中斷狀態(tài)是“下傳成功”,所以DSP 執(zhí)行RD_USB_DATA命令從CH372 讀取接收到的數(shù)據(jù); ⑤、CH372 在RD_USB_DATA 命令完成后釋放當前緩沖區(qū),從而可以繼續(xù)USB 通訊; ⑥、DSP 退出中斷服務(wù)程序。 DSP 通過CH372 芯片發(fā)送數(shù)據(jù)的處理步驟如下: ①、DSP 執(zhí)行WR_USB_DATA 命令向CH372 寫入要發(fā)送的數(shù)據(jù); ②、CH372 被動地等待USB 主機在需要時取走數(shù)據(jù); ③、當USB 主機取走數(shù)據(jù)后,CH372 首先鎖定當前USB 緩沖區(qū),防止重復(fù)發(fā)送數(shù)據(jù),然后將INT引腳設(shè)置為低電平,向DSP 請求中斷; ④、DSP 進入中斷服務(wù)程序,首先執(zhí)行GET_STATUS 命令獲取中斷狀態(tài); ⑤、CH372 在GET_STATUS 命令完成后將INT 引腳恢復(fù)為高電平,取消中斷請求; ⑥、由于通過上述GET_STATUS 命令獲取的中斷狀態(tài)是“上傳成功”,所以DSP 執(zhí)行WR_USB_DATA命令向CH372 寫入另一組要發(fā)送的數(shù)據(jù),如果沒有后續(xù)數(shù)據(jù)需要發(fā)送,那么DSP 不必執(zhí)行WR_USB_DATA 命令; ⑦、DSP 執(zhí)行UNLOCK_USB 命令; ⑧、CH372 在UNLOCK_USB 命令完成后釋放當前緩沖區(qū),從而可以繼續(xù)USB 通訊; ⑨、DSP 退出中斷服務(wù)程序; ⑩、如果DSP 已經(jīng)寫入了另一組要發(fā)送的數(shù)據(jù),那么轉(zhuǎn)到②,否則結(jié)束。 3.2 DSP 程序 DSP 程序是設(shè)計中很重要的組成部分,主要分為DSP 和USB 轉(zhuǎn)換芯片之間的通訊以及DSP 和數(shù)據(jù)采集芯片MAX1308 之間的通信。當計算機每次下傳數(shù)據(jù)塊或DSP 上傳數(shù)據(jù)塊成功時,DSP 的外部捕獲中斷CAP1就會收到CH372 的中斷請求信號。當DSP接收到計算機傳輸過來的采樣命令后就啟動MAX1308進行數(shù)據(jù)采集,根據(jù)計算機要求設(shè)置采樣頻率和采樣通道數(shù)目,采樣完成后,將數(shù)據(jù)一并打包傳給計算機。 DSP和采集芯片的連接采用的是總線連接方式,進行數(shù)據(jù)采集時,DSP通過總線的D0–D7 寫配置寄存器可以激活相應(yīng)通道。配置寄存器中的位直接映射到相應(yīng)通道,D0 控制通道0,D7 控制通道7 。把任意一位設(shè)為高電平,將激活相應(yīng)的輸入通道;同樣,把任意一位設(shè)為低電平,將禁用相應(yīng)通道。對少于8通道的器件,其中幾位沒有任何功能。寫配置寄存器時,將CS和WR 設(shè)為低電平,然后將D0–D7 位裝載到并行總線,再將WR 置為高電平。數(shù)據(jù)在WR 的上升沿鎖存。在轉(zhuǎn)換時序的任意時刻都能夠?qū)ε渲眉拇嫫鬟M行寫操作。上電時,在啟動轉(zhuǎn)換之前寫入配置寄存器,以選擇有效通道。 內(nèi)部時鐘模式下啟動一次轉(zhuǎn)換,需在采樣時間內(nèi)將CONVST 置為低電平。當CONVST 為低電平時,T/H 捕獲信號,在CONVST 的上升沿轉(zhuǎn)換開始。一旦能夠讀取轉(zhuǎn)換結(jié)果,轉(zhuǎn)換結(jié)束信號(EOC)將給出一個低電平脈沖。當最后一個通道的轉(zhuǎn)換結(jié)果可以被讀取時,最后轉(zhuǎn)換結(jié)束信號(EOLC)跳變到低電平。 在EOLC 的下降沿,DSP 將CS 和RD 置為低電平,把第一個轉(zhuǎn)換結(jié)果置于并行總線。RD 連續(xù)的低電平脈沖將轉(zhuǎn)換結(jié)果順次放到總線上。時序中最后一個轉(zhuǎn)換結(jié)果讀取后,額外的讀脈沖可以使指針重新指向第一個轉(zhuǎn)換結(jié)果。 3.3 計算機應(yīng)用程序 計算機應(yīng)用程序主要完成數(shù)據(jù)的人機交互功能,用戶通過應(yīng)用程序配置監(jiān)測系統(tǒng)、控制數(shù)據(jù)采集的過程和顯示采集的數(shù)據(jù)。 4、結(jié)論 本系統(tǒng)采用DSP 和MAX125 進行數(shù)據(jù)采集,通過USB 進行數(shù)據(jù)傳輸。對單路的數(shù)據(jù)采集,可以實現(xiàn)800kSPS 的實時數(shù)據(jù)傳輸,8 路同步采集可以實現(xiàn)400kSPS 的實時數(shù)據(jù)傳輸。該系統(tǒng)的使用方法簡便、快捷、實時監(jiān)測性好,可擴展性良好,抗干擾能力強。適當?shù)馗倪M硬件電路和程序就可以對更多采集點進行采集和監(jiān)測。基于USB 和單總線的便攜式監(jiān)測,必將被眾多領(lǐng)域廣泛應(yīng)用。 |