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

          關(guān) 閉

          新聞中心

          EEPW首頁 > 工控自動化 > 設(shè)計應(yīng)用 > 基于USB接口的激光陀螺慣導(dǎo)系統(tǒng)數(shù)據(jù)通訊

          基于USB接口的激光陀螺慣導(dǎo)系統(tǒng)數(shù)據(jù)通訊

          作者: 時間:2011-04-02 來源:網(wǎng)絡(luò) 收藏

          1.2 CY7C68013A的固件程序設(shè)計
          CY7C68013A的固件程序主要用于芯片的端點配置、頻率設(shè)置、數(shù)據(jù)寬度、可編程標志定義、中斷定義及特定功能的8051程序編寫等。固件程序主要完成如圖2所示的任務(wù)流程。

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

          b.JPG


          在上述固件程序當(dāng)中,CY7C68013A的初始化子程序TD_Init()的開發(fā)按照以下步驟進行:按圖3中的規(guī)則配置端點;使CY7C68013A工作在SLAVE FIFO模式,選擇BULK傳輸,使用3個端點EP2、EP4和EP6,全部采用雙緩沖方式;3個端點FIFO標志分別定義為:FLGA為EP2的4字節(jié)接收可編程標志,F(xiàn)IGB為EP6的滿標志,F(xiàn)LGC為EP2的空標志;數(shù)據(jù)寬度設(shè)為16位。

          c.JPG


          1.3 丟幀問題及解決措施
          在導(dǎo)航計算機與PC機間通過進行了雙向高速通訊測試。測試方法如下:PC機向?qū)Ш接嬎銠C傳輸一個數(shù)據(jù)包,導(dǎo)航計算機接收后回傳,PC機接收后進行正確性校驗、傳輸、回傳和校驗過程循環(huán)進行。測試中發(fā)現(xiàn)偶爾有丟幀現(xiàn)象出現(xiàn)。嘗試改變上位機中數(shù)據(jù)采集與后臺實時寫內(nèi)存線程的優(yōu)先級和改變CY7C68013A的端點大小及緩沖級別(如三緩沖、四緩沖)來解決這個問題,但是丟幀現(xiàn)象依然存在。
          經(jīng)過較長時間的分析與驗證,找到了問題所在:PC機中運行的Windows操作是一個多任務(wù)的操作,同時運行著多個進程,在給每個進程分配時間片時也是有一定的優(yōu)先級的,優(yōu)先級高的進程占用時間片較多,如果PC機在執(zhí)行某些其他進程時占用時間超過了一定的限度,就可能導(dǎo)致該讀出的數(shù)據(jù)沒有及時讀出,而下一幀數(shù)據(jù)又已送到緩沖區(qū),覆蓋前一幀數(shù)據(jù),從而造成丟幀。
          解決丟幀的辦法是在DSP的內(nèi)存中設(shè)置一個圓形緩沖區(qū),如果發(fā)現(xiàn)IN型端點的FIFO已滿(說明PC機未及時讀走FIFO中數(shù)據(jù)),則將本幀數(shù)據(jù)存入圓形緩沖區(qū)里,直到FIFO完全為空。
          圓形緩沖區(qū)的結(jié)構(gòu)如圖4所示。

          d.JPG


          在圖4中,sptr為寫入數(shù)據(jù)指針,dptr為發(fā)送數(shù)據(jù)指針。整個圓形緩沖區(qū)的大小設(shè)置為256 K字(32位)。若按8 K的數(shù)據(jù)存入速率,可以保存8 s數(shù)據(jù)。在PC機不能及時讀取IN端點FIFO數(shù)據(jù)的情況下,這個圓形緩沖區(qū)可以起到很好的緩沖作用。



          評論


          相關(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); })();