新聞中心

EEPW首頁 > 模擬技術 > 設計應用 > 基于USB的ARINC429總線接口模塊設計

基于USB的ARINC429總線接口模塊設計

作者:成都電子科技大學自動化工程學院 黃金新 王厚軍 李 力 時間:2008-08-18 來源:中電網(wǎng) 收藏

  當芯片響應中斷信號后,先判斷是哪一路ARINC429數(shù)據(jù),并將此路的通道號寫入芯片的Buffer中。芯片再發(fā)送讀信號讀取中寄存器的429數(shù)據(jù)字,共4個字節(jié)。本設計采用雙緩沖Buffer方式來存儲接收到的429數(shù)據(jù)字。這種設計方式能有效提高模塊傳輸數(shù)據(jù)的穩(wěn)定性和準確性。

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

  接收解調電路主要負責將ARINC429輸入的電平解調為可接收的LVTTL電平。

  接口模塊軟件設計

  接口模塊軟件由-ARINC429儀器驅動程序、USB驅動程序和USB固件程序等三部分組成。USB-ARINC429儀器驅動程序主要將應用程序與驅動程序之間的通訊協(xié)議以及應用程序與硬件之間的數(shù)據(jù)傳輸命令進行封裝。儀器驅動程序在Visual C++6.0下開發(fā),可以提供給應用程序顯式或隱式調用。在本文中不詳細介紹儀器驅動程序的開發(fā)過程。下面將介紹USB固件程序及驅動程序的設計。

  USB固件程序設計

  USB接口芯片是底層硬件的基礎,是接口模塊與PC機通信的硬件橋梁,良好的USB固件程序設計是接口模塊能夠穩(wěn)定可靠工作的保證。USB固件程序設計結構如圖5所示。

  USB固件程序設計由主程序(Main.c),寫數(shù)據(jù)程序(Function.c),讀數(shù)據(jù)中斷服務子程序(Isq)以及控制傳輸(Vendor)等四部分組成。

  主程序Main.c主要負責USB接口芯片的初始化工作。主要有端口的初始化、中斷的初始化、USB設備的列舉和重列舉等工作。Main.c的設計結構如圖6所示。

  寫數(shù)據(jù)程序Function.c采用了USB接口芯片CY68013數(shù)據(jù)總線操作方式,將圖3 Buffer中的ARINC429數(shù)據(jù)字寫到的RAM中。

  讀數(shù)據(jù)中斷服務子程序(Isq)主要負責接口模塊讀取ARINC429總線數(shù)據(jù),并根據(jù)USB接口芯片的中斷引腳來標記429數(shù)據(jù)字的通道號。

  控制傳輸(Vendor)主要是靈活地控制接口模塊的發(fā)送模式。接口模塊共有單次發(fā)送、多次發(fā)送以及循環(huán)發(fā)送等三種發(fā)送模式。三種發(fā)送模式可以滿足多種ARINC429數(shù)據(jù)發(fā)送需要。其中,多次發(fā)送模式和循環(huán)發(fā)送模式可以設定ARINC429數(shù)據(jù)字與數(shù)據(jù)字之間的字間隔,并可以設定一組ARINC429數(shù)據(jù)字的循環(huán)周期。這種設計方式體現(xiàn)了接口模塊的靈活方便特性。

  USB設備驅動程序設計

  USB設備驅動程序是利用Compuware公司的DriverStudio 3.2開發(fā)的。DriverStudio 3.2主要用來開發(fā)Windows 2000和Windows XP的驅動程序。利用這個工具的開發(fā)向導,可以生成一個USB驅動程序框架。USB驅動程序設計簡化結構如圖7所示。

  USB設備驅動程序基本由五部分組成,圖4中顯示了四部分。入口例程(DriverEntry Routine)、即插即用例程(PnP Routine)和卸載例程(Unload Routine)主要負責接口模塊的內存資源分配和釋放等工作。下面將詳細介紹與接口模塊數(shù)據(jù)傳輸關系緊密的分發(fā)例程(Distribute Routine)。

  分發(fā)例程主要由Create,Read,Write,IOCTL以及Close等五部分函數(shù)組成。Close函數(shù)主要負責關閉設備句柄,調用卸載例程,并釋放設備內存資源(這個函數(shù)在圖中并未列出)。其它四部分與上層應用程序的接口函數(shù)分別為CreateFile,ReadFile,WriteFile和DeviceIoControl。

  Create函數(shù)主要負責獲取對接口模塊進行操作的程序句柄,該句柄在即插即用例程中指定。

  Read函數(shù)負責讀ARINC429數(shù)據(jù)。當應用程序通過調用ReadFile發(fā)一個IRP到驅動程序時,驅動程序先檢測讀取數(shù)據(jù)長度是否大于已設定的端點傳輸最大字節(jié)。如大于,則僅分配長度為最大字節(jié)的內存空間;如小于或等于,則按該數(shù)據(jù)長度分配內存區(qū)。然后USB設備驅動程序再將此IRP向下傳遞給下層驅動程序,最后由底層驅動程序將ARINC429數(shù)據(jù)寫到已分配的內存空間供應用程序讀取,并返回一個函數(shù)值和已讀取多少字節(jié)的變量給應用程序判斷。Write函數(shù)操作與Read函數(shù)類似,只是傳輸方向相反。

  IOCTL函數(shù)負責接口模塊的控制命令傳輸。當需要指定接口模塊發(fā)送模式或循環(huán)發(fā)送時的字間隔和幀周期時,應用程序通過調用DeviceIoControl發(fā)一個IRP給驅動程序。驅動程序收到此IRP時,將通過USB控制管道把接口模塊控制命令傳輸給USB接口芯片。

  結論

  經(jīng)測試表明,接口模塊與現(xiàn)在市場上出售的多種429總線接口設備進行了多路429總線數(shù)據(jù)傳輸。本設計利用USB即插即用、FPGA可配置性等特點,方便了ARINC429總線與計算機之間的數(shù)據(jù)傳輸,并提高了接口模塊數(shù)據(jù)傳輸?shù)撵`活性,這在對ARINC429電子設備的測試中有較高的實用價值。
 


上一頁 1 2 下一頁

關鍵詞: 接口 FPGA USB 總線

評論


相關推薦

技術專區(qū)

關閉