DSP平臺的USB接口設計
圖3是PDIUSBD12所要求的寫(xiě)時(shí)序。圖中,參量tWDH是與DSP (TMS320C2XX)參量th(W-D)相對應的另外一個(gè)參量。這個(gè)參量反映了PDIUSBD12要求微控制器在向其中寫(xiě)數據時(shí),所寫(xiě)的數據在WR信號無(wú)效之后,要繼續保持有效的時(shí)間。這個(gè)參量最小值為10ns。也就是說(shuō),PDIUSBD12要求所寫(xiě)的數據最少要保持有效10ns(在WR無(wú)效之后)。
由此可以看出,DSP(TMS320C2XX)的寫(xiě)時(shí)序不能可靠地保證滿(mǎn)足 PDIUSBD12的要求,而且這個(gè)問(wèn)題無(wú)法通過(guò)軟件加延時(shí)的方法來(lái)解決,必須通過(guò)硬件來(lái)處理。經(jīng)過(guò)分析對比,最后決定采用一個(gè)很簡(jiǎn)單但是后來(lái)事實(shí)證明非常有效的方法來(lái)調整它們之間的時(shí)序。那就是在DSP(TMS320C2XX)與PDIUSBD12的總線(xiàn)之間加一個(gè)雙向緩沖器-74LS245。這個(gè)芯片可以在它們的時(shí)序之間引入一個(gè)延時(shí)。雖然這個(gè)延時(shí)并不可靠、但是由于DSP(TMS320C2XX)本身會(huì )在WR無(wú)效后,繼續保持數據有效一段時(shí)間(前面已講過(guò)),這要僅僅需要將延時(shí)適當延長(cháng)一點(diǎn)就可以了。74LS245所造成的延時(shí)典型值為15ns,最小也為8ns。這樣,加上原來(lái)DSP寫(xiě)時(shí)序的延時(shí),就可以滿(mǎn)足PDIUSBD12所要求的寫(xiě)時(shí)序了。
另外由于加入74LS245所造成的對其它接口時(shí)序的影響,可以通過(guò)設置DSP(TMS320C2XX)的WSGR寄存器來(lái)消除,所以這個(gè)方案是可行的。(事實(shí)上,后來(lái)制造好的電路也證明了這個(gè)方案是完全可行的)
對其余時(shí)序上的配合,經(jīng)過(guò)仔細的計算與核對證明,也是完全可行的。在硬件上,哂方案還采用了一片GAL(16V8)來(lái)實(shí)現對PDIUSBD12芯片的片選,以及實(shí)現對它的軟件和手動(dòng)復位。硬件總體框圖如圖4所示。
2 軟件設計
2.1 固件設計
由于采用的是不帶MCU內核的USB接口芯片,所以關(guān)于USB1.1協(xié)議規范的實(shí)現都必須靠DSP(TMS320C2XX)控制PDIUSBD12芯片來(lái)完成。固件的主要設計任務(wù)是:在DSP(TMS320C2XX)的平臺上編寫(xiě)程序,以完成 USB1.1規范所要求的標準請求及用戶(hù)根據產(chǎn)品需要自己定義的請求。
為了不影響程序的執行效率,本方案采用中斷方式完成固件的編寫(xiě);同時(shí),為了保證程序的模塊化及良好的可移植性,在設計中采用分層結構進(jìn)行固件的編寫(xiě),如圖5所示。

最下層是硬件接口層,完成硬件上PDIUSBD12與DSP(TMS320C2XX)的對接。主要是DSP(TMS320C2XX)向PDIUSBD12中寫(xiě)入數據或者命令,以及從中讀取數據。
中間層主要有兩個(gè)模塊,用來(lái)完成PDIUSBD12的命令接口和中斷處理子程序。命令接口是指按照PDIUSBD12的命令格式,完成DSP對它的控制。它的基本命令格式是:DSP先向其中的命令地址寫(xiě)入某一條命令,接著(zhù)從它的數據地址寫(xiě)入或者讀出一系列的數據。中斷處理子程序是判斷中斷的產(chǎn)生源,然后跳轉到相應的處理子程序。這些子程序不做過(guò)多的處理,而僅僅是將命令數據讀出然后置標志位,或者是將某些數據送出。
最上層是主循環(huán)程序,以及對于USB1.1標準協(xié)議請求(這些請求主要是在USB1.1協(xié)議規范的第九章中定義的)和用戶(hù)自定義請求的處理程序。主循環(huán)的主要工作是檢查標志位。如果標志位被置位,則調用處理子程序,判斷是標準請求還是用戶(hù)自定義請求,然后調用相應的處理程序加以處理,完成請求。
這樣分層的好處是:主循環(huán)程序在檢查標志位以外的時(shí)間可以進(jìn)行其它工作,提高固件的運行效率。
編程過(guò)程中,由于涉及了一些嚴格的接口時(shí)序配合問(wèn)題,所以,整個(gè)固件的編寫(xiě)工作全部采用DSP(TMS320C2XX)的匯編語(yǔ)言;用的是CC2000編程開(kāi)發(fā)工具。
2.2 PC機軟件的設計
PC機的驅動(dòng)程序由Philips公司提供。然后,用VC++6.0,通過(guò)調用API函數,編寫(xiě)PC的應用程序。這樣即可實(shí)現PC機對DSP(TMS320C2XX)攝像系統的攝像控制以及圖像的傳輸。
主要使用的API函數是DeviceIOControl()、ReadFile()、 WriteFile()。其中DeviceIOControl()用于PC(主機)向DSP圖像采集系統發(fā)送請求;ReadFile()和 WriteFile()分別用于從圖像采集系統中讀出數據以及向圖像采集系統中寫(xiě)入數據。
在設計過(guò)程中必須注意的問(wèn)題是:由于USB接口是主-從方式的接口,它的一切傳輸過(guò)程都必須通過(guò)主機向外設發(fā)送請求后才可以開(kāi)始,所以在使用ReadFile()、WriteFile()讀寫(xiě)數據之前,必須先通過(guò) DeviceIOControl()向圖像采集系統發(fā)送請求。
3 結果及分析
設計方案完成后,在最后的測試當中,通過(guò)USB1.1接口,PC機與DSP系統的通信速率最高達到了580KB/s(4.6Mb/s)以上。這個(gè)速率指的是有效數據傳輸速率,不包括數據傳輸聯(lián)絡(luò )的頭信息部分,所以這個(gè)速率還是比較令人滿(mǎn)意的?,F在,傳輸一張幅面為352×288像素的黑白圖片(大小為99KB),耗時(shí)不到1s。如果實(shí)現動(dòng)態(tài)的拍攝及顯示,那么,整個(gè)系統每秒可以拍攝并完成顯示 3~4幅不經(jīng)壓縮的幅畫(huà)為352×288像素大小的黑白圖片。
測試結果表明,該系統運行可靠(已將程序燒寫(xiě)進(jìn)片內Flash中),各項性能指標都已達到了最初的設計要求,能夠很好地實(shí)現圖像數據在PC機與DSP之間高速的雙向傳輸。并且,這套USB接口方案只采用了1片PDIUSBD12接口芯片和1片 74LS245,器件成本只有20元左右,這個(gè)成本是比較低的。同時(shí),由于采用了DSP作為控制器,所以它的通信速率可以很高;因此,可以說(shuō)本方案達到了低成本,高速率的USB1.1接口設計要求。本文引用地址:http://dyxdggzs.com/article/152234.htm
評論