關(guān) 閉

新聞中心

EEPW首頁 > 工控自動化 > 設(shè)計應(yīng)用 > 基于USB接口1553B總線設(shè)備檢測系統(tǒng)設(shè)計

基于USB接口1553B總線設(shè)備檢測系統(tǒng)設(shè)計

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

  3 軟件設(shè)計

  設(shè)備測試軟件首先要實現(xiàn)與PC之間的通信,然后,再對設(shè)備進(jìn)行性能檢測。因此,需要對芯片進(jìn)行固件、PC驅(qū)動程序和測試程序設(shè)計。

  3.1 固件設(shè)計

  AT89C52中的固化程序可采用C51 設(shè)計,主要功能是:控制PDIUSBDl2接受USB驅(qū)動程序的請求;控制PDIUSBDl2接受應(yīng)用程序的控制指令;通過PDIUSBDl2存儲數(shù)據(jù)并實時上傳PC機(jī)。PDIUSBDl2的固件設(shè)計成完全的中斷驅(qū)動,當(dāng)CPU處理前臺任務(wù)時USB的傳輸可在后臺進(jìn)行,確保了最佳的傳輸速率和更好的軟件結(jié)構(gòu),簡化了編程和調(diào)試。單片機(jī)通過PDIUSBDl2與主機(jī)通信的過程簡述如下::當(dāng)PDIUSBDl2接收到主機(jī)發(fā)來的令牌包后就給單片機(jī)發(fā)中斷,單片機(jī)進(jìn)入中斷服務(wù)程序。它將數(shù)據(jù)從PDIUSBD12的內(nèi)部FIFO取回到CPU存儲器并根據(jù)中斷寄存器判斷USB令牌包的類型從而建立正確的事件標(biāo)志以通知主循環(huán)程序進(jìn)行處理,主循環(huán)檢查事件標(biāo)志并進(jìn)入對應(yīng)的子程序進(jìn)行進(jìn)一步的處理,固件程序流程如圖2所示。系統(tǒng)上電后,先檢測PDIUSBD12,如檢測不成功則報錯,要使用者重插USB,再次檢測。檢測成功則根據(jù)PDIUSBD12的中斷類型設(shè)定中斷標(biāo)志位的值,再根據(jù)中斷位的值調(diào)用相應(yīng)的功能子程序[3]。

         
 圖2 固件框架流程圖

  在本設(shè)計中,功能子程序主要包括兩部分:

  1)通過AT89C52的P0端口從FPGA接收設(shè)備數(shù)據(jù),重新打包,再經(jīng)過P0端口寫入PC機(jī);

  2) 通過P0端口接收PC數(shù)據(jù),重新打包,通過AT89C52的P0端口從FPGA寫入設(shè)備。

  3.2 驅(qū)動程序

  完成驅(qū)動程序設(shè)計的方法一般有三種:基于DDK開發(fā)、基于Windrive開發(fā)和基于DriveStudio開發(fā)。由于Windrive和DriveStudio開發(fā)對DDK中的函數(shù)進(jìn)行了一定程度的封裝,它們開發(fā)的難度比直接用DDK開發(fā)要小,但開發(fā)的靈活性不如DDK。本設(shè)計使用的驅(qū)動是DriveStudio與DDK配合進(jìn)行開發(fā),開發(fā)驅(qū)動程序的效率較高。

  在驅(qū)動程序開發(fā)平臺搭建成功后,我們利用驅(qū)動程序生成向?qū)river Wizard,根據(jù)硬件設(shè)置生成USB設(shè)備驅(qū)動程序的大體框架。設(shè)置如下:①選擇 WDM的驅(qū)動程序類型和Windows 2000運(yùn)行平臺。②選擇 USB類型,填寫它的VID(供應(yīng)商ID)和PID(設(shè)備ID),這些信息由芯片的供應(yīng)商提供。③增加端點 1和端點2,它們分別具有IN 和OUT屬性。④根據(jù)需要選擇對設(shè)備的操作有:Read、Write、Device Control和CleanUp。⑤選擇給端點2產(chǎn)生 BULK Read和Write的代碼, 向?qū)詣赢a(chǎn)生一套對端點2進(jìn)行讀、寫的代碼。⑥設(shè)置驅(qū)動程序的屬性,采用WDM;在選取讀寫方式時應(yīng)遵循一條原則:需要快速傳送大量數(shù)據(jù)時,用 Direct I/O,反之用 Buffer I/O,本設(shè)計數(shù)據(jù)量不大,故選用Buffer I/O;由于無特殊的電源需求,故選用系統(tǒng)默認(rèn)的Manage Power For This Device。⑦增加IOCTL接口,在其生成的代碼框架中加入自己的操作,以實現(xiàn)一個完整的USB 設(shè)備驅(qū)動程序。最后就生成了一個 WDM 型的 USB 設(shè)備驅(qū)動程序框架和一個測試該驅(qū)動程序的測試程序大體框架。然后在其中添加需要的功能代碼。



關(guān)鍵詞: 1553B USB 接口 總線

評論


相關(guān)推薦

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

關(guān)閉