關(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的固件程序主要用于芯片的端點(diǎn)配置、頻率設(shè)置、數(shù)據(jù)寬度、可編程標(biāo)志定義、中斷定義及特定功能的8051程序編寫等。固件程序主要完成如圖2所示的任務(wù)流程。

本文引用地址:http://butianyuan.cn/article/162228.htm

b.JPG


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

c.JPG


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



評論


相關(guān)推薦

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

關(guān)閉