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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 基于WinCE環(huán)境的CAN適配卡驅(qū)動程序的設(shè)計與實現(xiàn)

          基于WinCE環(huán)境的CAN適配卡驅(qū)動程序的設(shè)計與實現(xiàn)

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

          本文引用地址:http://www.ex-cimer.com/article/152313.htm

          3.2 _Read模塊的

          如果接收到一個報文,該報文通過驗收濾波器驗收并放入接收FIFO,則產(chǎn)生一個接收中斷。中斷服務(wù)程序接收到這個中斷后,將這個接收到的報文傳送到由維護的報文存儲區(qū)中,并置位命令寄存器的釋放緩存區(qū)標(biāo)志RRB。_Read函數(shù)并不等待來自CAN控制器的接收報文成功中斷,而是讀取保存在由維護的報文存儲區(qū)中的報文。CAN_Read函數(shù)的流程圖如圖4所示。

          4 CAN_Read函數(shù)的流程圖

          3.3中斷服務(wù)線程模塊的

          在CAN卡的SJA1000控制器中,報文的發(fā)送與接受是采用中斷方式來完成的。以報文的中斷發(fā)送為例,在向CAN數(shù)據(jù)寄存器中寫入報文并且向命令寄存器寫入發(fā)送命令后,系統(tǒng)通過調(diào)用WaitForSingleObject函數(shù)將當(dāng)前的發(fā)送線程掛起在某個事件的任務(wù)隊列中,觸發(fā)該事件將會使系統(tǒng)調(diào)度掛起在該事件的任務(wù)隊列中的任務(wù)繼續(xù)執(zhí)行,而該事件只有在CAN控制器產(chǎn)生發(fā)送成功中斷后在中斷服務(wù)線程中觸發(fā)。中斷服務(wù)線程程序流程圖如圖5所示。

          5 中斷服務(wù)線程程序流程圖

          中的另外兩個模塊主要由CAN_Close 、CAN_IoControl函數(shù)來完成,前者主要負責(zé)在關(guān)閉CAN句柄時資源的回收任務(wù),后者主要用于設(shè)置CAN的工作參數(shù),如波特率,報文格式等,在此不作過多介紹。

          4 結(jié)束語

          本文的CAN卡驅(qū)動程序的開發(fā):上位機是普通的PC機,下位機的操作系統(tǒng)是,硬件是深圳藍天工控有限公司的嵌入式PC/104總線主板PCM3568。驅(qū)動程序已經(jīng)過測試、驗收。CAN卡驅(qū)動程序運行可靠、通信穩(wěn)定。產(chǎn)品已經(jīng)被多個產(chǎn)家應(yīng)用于實際的工業(yè)控制領(lǐng)域。

          參考文獻

          [1] 李蒙 Windows CE驅(qū)動程序開發(fā)[J] 計算機工程與,2004

          [2] 徐平 WindowsCE.Net下CAN卡的驅(qū)動程序[J] 單片機及嵌入式系統(tǒng)應(yīng)用 2004-12

          [3] 鄔寬明.CAN總線原理和應(yīng)用系統(tǒng)[M]. 北京航空航天大學(xué)出版社,1996

          [4] 繞運濤 現(xiàn)場總線CAN原理與應(yīng)用技術(shù)[M] 北京航空航天大學(xué)出版社,2002

          [5] 孫光武 現(xiàn)場總線適配器的軟硬件設(shè)計[J] 電子技術(shù)應(yīng)用 1999.8


          上一頁 1 2 3 下一頁

          評論


          相關(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); })();