基于PCI總線的CAN卡的設(shè)計與實現(xiàn)
CAN卡的電路框圖如圖1所示。
2 軟件設(shè)計
軟件設(shè)計包括驅(qū)動程序的設(shè)計和COM組件程序設(shè)計。
由于PCI設(shè)備的中斷、I/O端口、映射內(nèi)存等資源都是動態(tài)分配的,必須編寫驅(qū)動程序管理硬件,才能供用戶編程使用。為了通用性和兼容性,CAN卡驅(qū)動程序的開發(fā)采用支持Windows XP、Windows2000和Windows98的WDM驅(qū)動程序。開發(fā)工具采用Visual C++6.0和Win2000 DDK。由于CAN卡上沒有微控制器,因此對CAN總線端口的所有操作都是由驅(qū)動程序來完成的。這不僅可以由計算機來實現(xiàn)復(fù)雜的功能,例如,錯誤檢測、斷點續(xù)傳等,同時節(jié)省了硬件,而且有利于CAN卡的升級――只要更換驅(qū)動程序即可。驅(qū)動程序的功能主要是配置SJA1000的CAN接口、收發(fā)CAN總線上的數(shù)據(jù)、對CAN總線進行實時監(jiān)測、接收用戶程序的收發(fā)命令。收發(fā)數(shù)據(jù)和CAN總線錯誤均采用中斷處理,驅(qū)動程序可以快速響應(yīng),通過事件(Event)內(nèi)核對象直接通知給用戶程序。由于WDM驅(qū)動程序運行在系統(tǒng)的內(nèi)核態(tài),編寫非常復(fù)雜,限于篇幅,僅給出軟件的框圖(見圖2)。
為了方便用戶的使用,還應(yīng)編寫相應(yīng)的API函數(shù)或ActiveX控件等其它應(yīng)用層的程序提供給用戶。由于ActiveX控件基于先進的COM技術(shù),具有良好的封裝性、使用靈活性等特點,可使用戶編程簡單、方便,因此在CAN卡的設(shè)計中編寫了ActiveX控件。ActiveX控件負責與驅(qū)動程序的通信,通過控件的事件把CAN卡接收的數(shù)據(jù)通知給用戶程序,利用控件的屬性設(shè)置CAN通信控制器,按照設(shè)置的方法發(fā)送用戶程序的數(shù)據(jù)。
根據(jù)以上的設(shè)計,開發(fā)了名為Can1000的CAN卡。經(jīng)使用證明,該卡設(shè)計簡單明了、性能較高、成本低廉、驅(qū)動程序和ActiveX控件使用方便,達到了設(shè)計和用戶的要求。
評論