關 閉

        新聞中心

        EEPW首頁 > 工控自動化 > 設計應用 > 基于USB接口1553B總線設備檢測系統設計

        基于USB接口1553B總線設備檢測系統設計

        作者: 時間:2009-12-15 來源:網絡 收藏

          3 軟件設計

          設備測試軟件首先要實現與PC之間的通信,然后,再對設備進行性能檢測。因此,需要對芯片進行固件、PC驅動程序和測試程序設計。

          3.1 固件設計

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

                 
         圖2 固件框架流程圖

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

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

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

          3.2 驅動程序

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

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



        關鍵詞: 1553B USB 接口 總線

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 怀柔区| 宁国市| 若羌县| 天气| 富源县| 大兴区| 合江县| 平陆县| 余庆县| 基隆市| 上林县| 宝坻区| 新巴尔虎右旗| 宣化县| 扎鲁特旗| 大竹县| 鹤庆县| 兴业县| 苏州市| 辽阳市| 华亭县| 潼南县| 南漳县| 南皮县| 兴隆县| 丰原市| 禹城市| 桐乡市| 横山县| 濮阳县| 陕西省| 五原县| 成都市| 综艺| 岳西县| 永德县| 托克逊县| 勐海县| 达孜县| 宜川县| 西和县|