新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 基于WINCE的CAN總線設(shè)備驅(qū)動研究

基于WINCE的CAN總線設(shè)備驅(qū)動研究

作者: 時間:2016-12-20 來源:網(wǎng)絡(luò) 收藏

SJA1000工作流程

圖4 SJA1000工作流程

4.2 WINCE下流接口驅(qū)動的接口函數(shù)實現(xiàn)

WINCE下每個流接口驅(qū)動都必須實現(xiàn)一組標(biāo)準(zhǔn)的接口函數(shù),以下僅重點介紹部分接口函數(shù)及其實現(xiàn).

a.DWORD CAN—Init(DWORD dwContext):設(shè)備管理器初始化CAN設(shè)備時調(diào)用這個函數(shù).CAN—Init的實現(xiàn)原理是:初始化CAN控制器SJA1000,創(chuàng)建一個WINCE的系統(tǒng)中斷用來響應(yīng)SJAl000的硬件中斷,創(chuàng)建中斷服務(wù)線程,此線程等待WINCE對應(yīng)的系統(tǒng)中斷發(fā)生,然后響應(yīng)中斷.圖5是CAN—Init函數(shù)的實現(xiàn)流程.

CAN-Init函數(shù)的實現(xiàn)流程

圖5 CAN-Init函數(shù)的實現(xiàn)流程

b.WORD CAN—Open(DWORD hDeviceContext.DWORD AccessCode,DWORD ShareMode):打開一個CAN設(shè)備驅(qū)動程序時應(yīng)用程序通過createFile()來調(diào)用此函數(shù).

c. BOOL CAN—IOControl (DWORD hopenContext,DWORD dwCode,PBYTE pBufIn, DWoRDDwLenIn, PBYTE pBufOut,DWoRD dwLenout,PDWoRD pdwActualOut):應(yīng)用程序通過DeviceIocontrol()函數(shù)來調(diào)用此函數(shù).

d.DWORD CAN—Write(DWORD hOpenContext, LPCVOID DSourceBvtes, DWORD NumberOfBytes):當(dāng)cAN設(shè)備驅(qū)動程序處于打開狀態(tài)時由應(yīng)用程序通過writeFile()來調(diào)用這個函數(shù).

e.中斷服務(wù)線程(Can Thread)的實現(xiàn)原理:硬件中斷后,觸發(fā)ISR(中斷服務(wù)例程),ISR只做部分處理工作(發(fā)送事件消息),IST(中斷服務(wù)線程)收到觸發(fā)消息后才開始工作.中斷服務(wù)線程Can-Thread的實現(xiàn)流程如圖6所示.

中斷服務(wù)線程工作流程

圖6中斷服務(wù)線程工作流程

一個具體的流接口驅(qū)動程序跟注冊表部分是分不開的,因此代碼編制完成后,要建立一個can.reg文件保存到流接口驅(qū)動程序的目錄里.

4.3應(yīng)用程序?qū)τ布O(shè)備的操作

應(yīng)用程序直接通過文件操作來訪問硬件設(shè)備,文件操作會自動調(diào)用系統(tǒng)的流接口驅(qū)動程序的函數(shù).比如:文件操作的ReadFile函數(shù)會自動調(diào)用底層的Can-Read等函數(shù).本研究完成了基于WINCE嵌入式車載網(wǎng)絡(luò)的CAN總線管理單元的設(shè)計,實現(xiàn)了CAN網(wǎng)絡(luò)的連接,并成功地運用到嵌入式車載網(wǎng)絡(luò)上,實踐證明這種實現(xiàn)方式具有良好的特性和一定的使用價值.


上一頁 1 2 下一頁

關(guān)鍵詞: CAN總線WINCE操作系統(tǒng)流接口驅(qū)

評論


相關(guān)推薦

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

關(guān)閉