<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 模擬技術(shù) > 設(shè)計(jì)應(yīng)用 > 基于PCI總線的CAN卡的設(shè)計(jì)與實(shí)現(xiàn)

          基于PCI總線的CAN卡的設(shè)計(jì)與實(shí)現(xiàn)

          作者: 時(shí)間:2009-10-23 來(lái)源:網(wǎng)絡(luò) 收藏

          卡的電路框圖如圖1所示。

          2 軟件設(shè)計(jì)

          軟件設(shè)計(jì)包括驅(qū)動(dòng)程序的設(shè)計(jì)和COM組件程序設(shè)計(jì)。

          由于設(shè)備的中斷、I/O端口、映射內(nèi)存等資源都是動(dòng)態(tài)分配的,必須編寫(xiě)驅(qū)動(dòng)程序管理硬件,才能供用戶編程使用。為了通用性和兼容性,卡驅(qū)動(dòng)程序的開(kāi)發(fā)采用支持Windows XP、Windows2000和Windows98的WDM驅(qū)動(dòng)程序。開(kāi)發(fā)工具采用Visual C++6.0和Win2000 DDK。由于卡上沒(méi)有微控制器,因此對(duì)CAN端口的所有操作都是由驅(qū)動(dòng)程序來(lái)完成的。這不僅可以由計(jì)算機(jī)來(lái)實(shí)現(xiàn)復(fù)雜的功能,例如,錯(cuò)誤檢測(cè)、斷點(diǎn)續(xù)傳等,同時(shí)節(jié)省了硬件,而且有利于CAN卡的升級(jí)――只要更換驅(qū)動(dòng)程序即可。驅(qū)動(dòng)程序的功能主要是配置SJA1000的CAN接口、收發(fā)CAN上的數(shù)據(jù)、對(duì)CAN進(jìn)行實(shí)時(shí)監(jiān)測(cè)、接收用戶程序的收發(fā)命令。收發(fā)數(shù)據(jù)和CAN總線錯(cuò)誤均采用中斷處理,驅(qū)動(dòng)程序可以快速響應(yīng),通過(guò)事件(Event)內(nèi)核對(duì)象直接通知給用戶程序。由于WDM驅(qū)動(dòng)程序運(yùn)行在系統(tǒng)的內(nèi)核態(tài),編寫(xiě)非常復(fù)雜,限于篇幅,僅給出軟件的框圖(見(jiàn)圖2)。

          為了方便用戶的使用,還應(yīng)編寫(xiě)相應(yīng)的API函數(shù)或ActiveX控件等其它應(yīng)用層的程序提供給用戶。由于ActiveX控件基于先進(jìn)的COM技術(shù),具有良好的封裝性、使用靈活性等特點(diǎn),可使用戶編程簡(jiǎn)單、方便,因此在CAN中編寫(xiě)了ActiveX控件。ActiveX控件負(fù)責(zé)與驅(qū)動(dòng)程序的通信,通過(guò)控件的事件把CAN卡接收的數(shù)據(jù)通知給用戶程序,利用控件的屬性設(shè)置CAN通信控制器,按照設(shè)置的方法發(fā)送用戶程序的數(shù)據(jù)。

          根據(jù)以上的設(shè)計(jì),開(kāi)發(fā)了名為Can1000的CAN卡。經(jīng)使用證明,該卡設(shè)計(jì)簡(jiǎn)單明了、性能較高、成本低廉、驅(qū)動(dòng)程序和ActiveX控件使用方便,達(dá)到了設(shè)計(jì)和用戶的要求。


          上一頁(yè) 1 2 3 下一頁(yè)

          關(guān)鍵詞: PCI CAN 總線 卡的設(shè)計(jì)

          評(píng)論


          相關(guān)推薦

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

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();