激情欧美日韩一区二区,浪货撅高贱屁股求主人调教视频,精品无码成人片一区二区98,国产高清av在线播放,色翁荡息又大又硬又粗视频

WindowsCE.Net下CAN卡的驅動(dòng)程序設計

時(shí)間:2024-09-28 12:56:47 理工畢業(yè)論文 我要投稿
  • 相關(guān)推薦

WindowsCE.Net下CAN卡的驅動(dòng)程序設計

摘要:主要討論在WinCE設計和開(kāi)發(fā)CAN卡通信程序的方法;詳細介紹CAN卡底層驅動(dòng)函數的設計和實(shí)現,同時(shí)將驅動(dòng)進(jìn)行封裝,用動(dòng)態(tài)庫的方式提供給用戶(hù)CAN卡通信用的驅動(dòng),使用啟可以方便地在自己的程序中調用,實(shí)現WinCE下的CAN卡通信。

引言

近年來(lái)電力行業(yè)為了快速部署變電站,采用了建造整體變電所的方法:在生產(chǎn)基地將變電站的內部設備安裝、調試完成,只留下與外界的接口,整體運到變電站所在地后進(jìn)行安裝和簡(jiǎn)單調試即可投入運行。其內部設備通過(guò)CAN總線(xiàn)進(jìn)行通信,系統原有的監控軟件基于DOS系統,維護調試比較困難,因此想要尋求更方便、友好的系統支持。經(jīng)過(guò)比較,嵌入式操作系統市場(chǎng)上風(fēng)頭正勁的Windows CE .NET成為最終選擇。微軟的最新產(chǎn)品Windows CE.NET提供了端對端的開(kāi)發(fā)、調試手段,可以不拆卸設備的情況下通過(guò)Telnet登錄到WindowsCE上進(jìn)行調試和維護,其系統本身為嵌入式市場(chǎng)進(jìn)行重新設計,包括創(chuàng )建一個(gè)基于WindowsCE的定制設備所需的一切。這樣就需要將原來(lái)DOS下的程序移植到WindowsCE.NET下,但是各個(gè)硬件廠(chǎng)商目前還沒(méi)有提供CAN通信卡在Windows CE.NET下的驅動(dòng),所以開(kāi)發(fā)Windows CE.NET下的CAN卡驅動(dòng)成為項目推行中的關(guān)鍵一環(huán)。

本文主要針對研華的雙口CAN卡PCM3680進(jìn)行分析,介紹在WindowsCE.ENT系統下進(jìn)行底層設備驅動(dòng)開(kāi)發(fā)的方法并提供CAN通信的實(shí)例。

1 CAN總線(xiàn)通信協(xié)議及CAN通信卡介紹

CAN總線(xiàn)是德國B(niǎo)osch公司20世紀80年代初為解決現代汽車(chē)中眾多的控制與測試儀器之間的數據交換而開(kāi)的一種串行數據通信協(xié)議。它是一種多主總線(xiàn),廢除了傳統的站地址編碼,而代之以對通信數據塊進(jìn)行編碼。這種方法使網(wǎng)絡(luò )內節點(diǎn)個(gè)數在理論上不受限制,擴展格式中的29位的標識碼便可以定義2 29個(gè)不同的數據塊。

在本項目中使用的是研華的PCM3680,這是一塊嵌入式PC104的雙口CAN總線(xiàn)通信卡;CAN控制器采用Philips的獨立CAN控制器SJA1000芯片;CAN收發(fā)器采用Philips的P82C250,可以同時(shí)操作兩個(gè)CAN網(wǎng)絡(luò ),提供高達1Mb/s的傳輸速度。PCM3680支持很寬的中斷范圍:中斷3、4、5、6、7、9、10、11、12、15,同時(shí)1000V的光電隔離提供系統高可靠性。在CAN卡通信中,要用到CAN控制器中的很多寄存器,各個(gè)寄存器的含義和作用可以參考控制芯片的說(shuō)明書(shū)。圖1列出驅動(dòng)程序設計中用到最主要的寄存器結構。

2 CAN卡驅動(dòng)底層函數設計

本方案設計CAN驅動(dòng)是放在Windows CE操作系統的內核下層,位于OEM adaptation layer(OAL)層的一個(gè)真正的驅動(dòng),而不是在主程序中的串口操作。在Windows CE的設備管理器可以看到CAN1和CAN2兩個(gè)端口,并且可以查看其工作的正常與否和對其進(jìn)行配置。如:中斷號和I/O地址。

2.1 CAN卡寄存器讀寫(xiě)函數

CAN卡的通信是通過(guò)操作CAN卡上的CAN控制器進(jìn)行的。在CAN控制器中有很多寄存器,如控制寄存器、命令寄存器、狀態(tài)寄存器、中斷寄存器等,通過(guò)讀寫(xiě)這些寄存器中的命令狀態(tài)字可以檢測和控制CAN卡的行為。在Windows CE.NET下,通過(guò)調用DOK中的API函數HalTranslateBusAddress,將CAN卡分配的物理地址映射為邏輯地址。這樣各個(gè)寄存器對應的就是CAN卡基地址的偏移地址,因此,對寄存器的讀寫(xiě)就轉化為對內存地址的讀寫(xiě)。下面是CAN卡寄存器的讀寫(xiě)函數:

*在偏移量為off的地址讀取一個(gè)字節的數據inline BYTE CANR(LPCAN_HW_OPEN_INFO hCan,DWORD off)

{

return hCan-

【W(wǎng)indowsCE.Net下CAN卡的驅動(dòng)程序設計】相關(guān)文章:

嵌入式Linux下CAN總線(xiàn)驅動(dòng)程序設計03-07

windowsnt環(huán)境下fddi網(wǎng)卡驅動(dòng)程序設計(2)03-18

windows nt環(huán)境下fddi網(wǎng)卡驅動(dòng)程序設計03-18

I2C總線(xiàn)在uClinux操作系統下的驅動(dòng)程序設計11-22

基于PCI總線(xiàn)的CAN卡的設計與實(shí)現03-18

在Linux下驅動(dòng)STN彩色LCD03-18

μC/OS-II的多任務(wù)信息流與CAN總線(xiàn)驅動(dòng)03-18

基于PCI總線(xiàn)的雙DSP系統及WDM驅動(dòng)程序設計03-19

任務(wù)驅動(dòng)下物流教學(xué)探討論文11-20

激情欧美日韩一区二区,浪货撅高贱屁股求主人调教视频,精品无码成人片一区二区98,国产高清av在线播放,色翁荡息又大又硬又粗视频