基于DSP的高速數據采集系統設計方案
2.2 USB接口
USB 通用接口芯片可分為3 種。一種是專(zhuān)門(mén)為USB 應用設計的USB 芯片,一種是建立在現有芯片系列基礎上的USB 芯片,還有一種是只處理USB 通信,必須被一個(gè)外部微控制器所控制的USB 芯片。該設計采用CH372屬于最后一種。
CH372 內置了USB 通訊中的底層協(xié)議,具有省事的內置固件模式和靈活的外置固件模式。在內置固件模式下,CH372 自動(dòng)處理默認端點(diǎn)0 的所有事務(wù),本地端DSP 只要負責數據交換,所以DSP 程序非常簡(jiǎn)潔。在外置固件模式下,由外部DSP 根據需要自行處理各種USB 請求,從而可以實(shí)現符合各種USB 類(lèi)規范的設備。
CH372 與 TMS320F2812 之間以非總線(xiàn)方式連接,連接框圖如圖2 所示。CH372 的8 位數據口D0 ~D7 分別掛在TMS320F2812 的GPIOA0 ~ GPIOA7 準雙向I/O 口上,命令數據地址選擇端A0,讀信號選擇端RD,寫(xiě)信息選擇端WR 和中斷輸出端INT 分別與TMS320F2812的GPIOA9、GPIOA10、GPIOA11 和GPIO8(CAP1)相連,片選引腳CS 接地。
2.3 AD 轉換器
該系統采用MAXIM 公司的MAX1308 型號的AD 轉換器,MAX1308 獨立的采樣保持(T/H)電路為每個(gè)通道提供同時(shí)采樣,MAX1308 提供±5V 輸入范圍,輸入故障容限為±16.5V。其ADC 在0.9micro;s 內完成2 個(gè)通道的轉換,在1.98µs 內完成多達8 個(gè)通道的轉換,8 個(gè)通道轉換時(shí)每通道吞吐率為456kSPS。其他特性包括20MHz 的T/H 輸入帶寬、內部時(shí)鐘、內部(+2.5V)或外部(+2.0V 至+3.0V)基準以及低功耗省電模式。20MHz、12 位雙向并行數據總線(xiàn)用來(lái)提供轉換結果,并可接受數字輸入分別激活每一路通道。工作在+4.75V 至+5.25V 模擬電源與+2.7V 至+5.25V 數字電源下,全速運行時(shí),總電源電流為57mA,工作溫度為-40℃至+85℃擴展溫度范圍。
3、軟件設計
該數據系統的軟件由USB 驅動(dòng)程序、DSP 程序和PC 機應用程序3 大模塊構成。
3.1 USB 驅動(dòng)
USB 設備驅動(dòng)是應用程序和硬件之間的接口,起著(zhù)承上啟下的作用。CH372 套件包括CH372 芯片和計算機端的CH372 驅動(dòng)程序。在本地端,CH372 芯片以?xún)戎玫墓碳绦蜃詣?dòng)處理了USB 通訊中的基本事務(wù);在計算機端,驅動(dòng)程序以及動(dòng)態(tài)鏈接庫等軟件向計算機應用層提供應用層接口。
它內部提供API 函數供應用程序使用,以實(shí)現對USB 設備的打開(kāi)、關(guān)閉、讀寫(xiě)等操作。此設計中USB 設備驅動(dòng)采用USB 芯片廠(chǎng)商提供的驅動(dòng)程序CH372DRV.EXE,安裝驅動(dòng)程序CH372DRV.EXE 后,在應用程序中調用動(dòng)態(tài)鏈接庫CH375DLL.DLL 提供的API 函數來(lái)打開(kāi)、關(guān)閉、和讀寫(xiě)USB 設備。
DSP 和USB 芯片通信時(shí),CH372 芯片占用兩個(gè)地址位,當A0 引腳為高電平時(shí)選擇命令端口,可以寫(xiě)入命令;當A0 引腳為低電平時(shí)選擇數據端口,可以讀寫(xiě)數據。DSP 通過(guò)8 位并行口對CH372 芯片進(jìn)行讀寫(xiě),所有操作都是由一個(gè)命令碼、若干個(gè)輸入數據和若干個(gè)輸出數據組成,部分命令不需要輸入數據,部分命令沒(méi)有輸出數據。命令操作步驟如下:
①、在A(yíng)0=1 時(shí)向命令端口寫(xiě)入命令代碼;
②、如果該命令具有輸入數據,則在A(yíng)0=0 時(shí)依次寫(xiě)入輸入數據,每次一個(gè)字節;
③、如果該命令具有輸出數據,則在A(yíng)0=0 時(shí)依次讀取輸出數據,每次一個(gè)字節;
④、命令完成,可以暫?;蛘咿D到①繼續執行下一個(gè)命令。
CH372 芯片專(zhuān)門(mén)用于處理USB 通訊,在接收到數據后或者發(fā)送完數據后,CH372 以中斷方式通知DSP 進(jìn)行處理。DSP 通過(guò)CH372 芯片接收數據的處理步驟如下:
①、當CH372 接收到USB 主機發(fā)來(lái)的數據后,首先鎖定當前USB 緩沖區,防止被后續數據覆蓋,然后將INT 引腳設置為低電平,向DSP 請求中斷;
②、DSP 進(jìn)入中斷服務(wù)程序,首先執行GET_STATUS 命令獲取中斷狀態(tài);
③、CH372 在GET_STATUS 命令完成后將INT 引腳恢復為高電平,取消中斷請求;
④、由于通過(guò)上述GET_STATUS 命令獲取的中斷狀態(tài)是“下傳成功”,所以DSP 執行RD_USB_DATA命令從CH372 讀取接收到的數據;
⑤、CH372 在RD_USB_DATA 命令完成后釋放當前緩沖區,從而可以繼續USB 通訊;
⑥、DSP 退出中斷服務(wù)程序。
評論