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