<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > DSP平臺的USB接口設(shè)計(jì)

          DSP平臺的USB接口設(shè)計(jì)

          作者: 時(shí)間:2009-12-14 來源:網(wǎng)絡(luò) 收藏

          圖3是PDID12所要求的寫時(shí)序。圖中,參量tWDH是與 (TMS320C2XX)參量th(W-D)相對應(yīng)的另外一個(gè)參量。這個(gè)參量反映了PDID12要求微控制器在向其中寫數(shù)據(jù)時(shí),所寫的數(shù)據(jù)在WR信號無效之后,要繼續(xù)保持有效的時(shí)間。這個(gè)參量最小值為10ns。也就是說,PDID12要求所寫的數(shù)據(jù)最少要保持有效10ns(在WR無效之后)。
          由此可以看出,(TMS320C2XX)的寫時(shí)序不能可靠地保證滿足 PDIUSBD12的要求,而且這個(gè)問題無法通過軟件加延時(shí)的方法來解決,必須通過硬件來處理。經(jīng)過分析對比,最后決定采用一個(gè)很簡單但是后來事實(shí)證明非常有效的方法來調(diào)整它們之間的時(shí)序。那就是在(TMS320C2XX)與PDIUSBD12的總線之間加一個(gè)雙向緩沖器-74LS245。這個(gè)芯片可以在它們的時(shí)序之間引入一個(gè)延時(shí)。雖然這個(gè)延時(shí)并不可靠、但是由于DSP(TMS320C2XX)本身會在WR無效后,繼續(xù)保持?jǐn)?shù)據(jù)有效一段時(shí)間(前面已講過),這要僅僅需要將延時(shí)適當(dāng)延長一點(diǎn)就可以了。74LS245所造成的延時(shí)典型值為15ns,最小也為8ns。這樣,加上原來DSP寫時(shí)序的延時(shí),就可以滿足PDIUSBD12所要求的寫時(shí)序了。
          另外由于加入74LS245所造成的對其它時(shí)序的影響,可以通過設(shè)置DSP(TMS320C2XX)的WSGR寄存器來消除,所以這個(gè)方案是可行的。(事實(shí)上,后來制造好的電路也證明了這個(gè)方案是完全可行的)
          對其余時(shí)序上的配合,經(jīng)過仔細(xì)的計(jì)算與核對證明,也是完全可行的。在硬件上,哂方案還采用了一片GAL(16V8)來實(shí)現(xiàn)對PDIUSBD12芯片的片選,以及實(shí)現(xiàn)對它的軟件和手動復(fù)位。硬件總體框圖如圖4所示。

          2 軟件
          2.1 固件
          由于采用的是不帶MCU內(nèi)核的USB芯片,所以關(guān)于USB1.1協(xié)議規(guī)范的實(shí)現(xiàn)都必須靠DSP(TMS320C2XX)控制PDIUSBD12芯片來完成。固件的主要任務(wù)是:在DSP(TMS320C2XX)的上編寫程序,以完成 USB1.1規(guī)范所要求的標(biāo)準(zhǔn)請求及用戶根據(jù)產(chǎn)品需要自己定義的請求。
          為了不影響程序的執(zhí)行效率,本方案采用中斷方式完成固件的編寫;同時(shí),為了保證程序的模塊化及良好的可移植性,在設(shè)計(jì)中采用分層結(jié)構(gòu)進(jìn)行固件的編寫,如圖5所示。

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

          本文引用地址:http://www.ex-cimer.com/article/152234.htm


          上一頁 1 2 下一頁

          關(guān)鍵詞: 設(shè)計(jì) 接口 USB 平臺 DSP

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();