兩自由度振動偏移量實時采集設(shè)備的設(shè)計與實現(xiàn)
圖3 流程圖
圖4 SPI接口讀操作時序圖
圖5 SPI接口寫操作時序圖
3.4 ADNS-3080的固件下載
DSP固件開發(fā)有兩種方式,一是自行開發(fā)程序,二是使用廠商已提供的固件程序。Agilent公司提供了ADNS-3080的固件adns3080_srom_51.inc(共1986個字節(jié)),從官方網(wǎng)站即可下載。本次設(shè)計該固件是通過主機的應(yīng)用程序下載到設(shè)備端點,由單片機控制寫入ADNS-3080SRAM中[7]。寫入時先要對ADNS-3080進行下載前的初始化工作。下載完成以后通過讀ADNS-3080的SROM_ID寄存器來檢驗下載是否成功。
3.5 設(shè)備驅(qū)動及其Inf文件設(shè)計
在設(shè)備開發(fā)時可以使用控制面板下載單片機固件,但最終產(chǎn)品需要自動完成固件下載和設(shè)備的重枚舉。自動的固件下載和設(shè)備的重枚舉兩個功能的完成依賴于兩個驅(qū)動,一個用于枚舉設(shè)備后下載固件至單片機,叫下載驅(qū)動(EZ-LoaderDriver);一個用于設(shè)備重枚舉后與主機通信,叫功能驅(qū)動。
EZ-LoaderDriver源碼由EZ-USB軟件開發(fā)包提供,結(jié)合微軟提供的DDK在VisualC++6.0開發(fā)環(huán)境下把固件和驅(qū)動重新編譯即可。具體步驟:①使用EZ-USB軟件開發(fā)包提供的Hex2C工具把單片機固件程序Hex文件轉(zhuǎn)化為C文件;②用固件程序C代碼中的firmware[]數(shù)據(jù)取替EZ-LoaderDriver中firmware.c文件中的數(shù)組,重新編譯即可生成所需的EZ-LoaderDriver。
功能驅(qū)動的設(shè)計可以使用Cypress公司提供的GPD(通用設(shè)備驅(qū)動程序),也可以自行開發(fā)。目前自行開發(fā)的方式有三種,使用微軟提供的DDK、使用Windriver、使用DriveWorks,其中DriveWorks開發(fā)帶有現(xiàn)成的驅(qū)動生成向?qū)?,開發(fā)較為容易,但沒有前兩種方式設(shè)計的驅(qū)動靈活。GPD目前有EZ-USB.sys和CyUSB.sys兩個,它們提供了USB標準設(shè)備請求和數(shù)據(jù)傳輸連接,后者自帶應(yīng)用程序API函數(shù),開發(fā)應(yīng)用程序較為容易,因此本設(shè)備選擇了CyUSB.sys。
設(shè)備驅(qū)動的Inf文件是在設(shè)備第一次連接主機時為主機安裝設(shè)備驅(qū)動提供相應(yīng)的信息。Inf文件的內(nèi)容主要包括驅(qū)動提供商名稱、廠商標識符(VID)、設(shè)備標識符(PID)、驅(qū)動安裝目錄、添加的注冊表信息等,設(shè)計時找一樣本修改上述內(nèi)容即可。
4 結(jié)束語
4.1 硬件電路設(shè)計注意事項
在硬件電路設(shè)計時為了便于測試,采用了模塊化的思想,分為供電模塊、CY7C68013模塊、ADNS-3080模塊三塊,且每一塊都引出了相應(yīng)測試管腳。
板級設(shè)計中有兩個高頻電路塊要注意的地方,說明如下:(1)保持D+和D-等間距布線,布線長度要小于75mm,且兩線長度相差要在1.25mm以內(nèi),最好用地線包裹,避免通過過孔;(2)USB連接線使用屏蔽線,長度要小于5m;(3)晶振到CY7C68013的走線要盡可能短且遠離D+和D-,使用陶瓷電容作為晶振電路電容。
4.2 性能探討與展望
該設(shè)備具備軟配置特性,即在E2PROM中燒寫不同的VID、PID,可加載不同的一套固件、驅(qū)動和應(yīng)用程序,而且可以無限次的加載,設(shè)備功能的修改、升級特別容易;再加之該設(shè)備可以對在速度≤1m/s,加速度≤160m/s2范圍內(nèi)振動的物體實現(xiàn)所有運動學(xué)參數(shù)2mm精度的實時采集分析。其開發(fā)難度小、使用范圍廣、升級便捷、設(shè)備接口人性化、數(shù)據(jù)采集實時精確等優(yōu)點使得該設(shè)備具有了非常大的應(yīng)用前景。
評論