新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 嵌入式WinCE中CAN總線控制器的驅動設計與實現

        嵌入式WinCE中CAN總線控制器的驅動設計與實現

        作者: 時間:2013-03-18 來源:網絡 收藏


          3.2CAN_Read函數的設計實現

          根據CAN協議規范,報文的接收由CAN控制器SJAl000獨立完成,收到的報文放在接收緩沖器。可以發送給主控制器的報文由狀態寄存器的接收緩沖器狀態標志“RBS’’和接收中斷標志“RI”標出(如果使能)。主控制器會將這條信息發送到本地的報文存儲器,然后釋放接收緩沖器并對報文操作。發送過程能被SJAl000的中斷請求或查詢SJAl000的控制段狀態標志來控制。cAN_Read函數操作成功則返回實際讀取的字節數,否則返回值為-1。CAN_Read函數程序的流程圖如圖3所示。

          3.3CAN_IntrThread函數的設計實現

          在SJAl000控制器中,報文的發送和接收是采用中斷方式來完成的。內核函數InterruptInitialize()外部中斷事件和將邏輯中斷號綁定,這一步就會使能該中斷。當該中斷發生時,ISR就觸發該事件生效。完成以上工作后,驅動程序中的IST就可以使用WaitForsin-gleObject()函數等待中斷的發生。中斷處理結束后,IST需要調用InterruptDone()告訴操作系統中斷處理結束。中斷服務線程CAN_IntrThread函數程序流程圖如圖4所示。

          其他的流接口函數根據wincE流接口驅動程序模型進行編寫。

          4驅動程序的封裝及加載

         通過上面的工作,能夠編譯得到一個DLL函數,但它的接口函數還沒有導出,還需要告訴鏈接程序需要輸出什么樣的函數。為此,必須建立一個def文件,使用WindoWS下自帶的記事本程序編輯一個文件名為“Can.def”的文件:

          最后需要編寫自己的CEC文件。主要是添加一個BuildMethod,任務是復制注冊表到的系統目錄下面。加一個bibFile,其主要功能是把編譯的can.dll文件添加到系統內核中去。保存寫好的CEC文件,在.PlatformBuildm中添加CEC特征到系統選項中去。生成系統時,添加自己的CEC特性,可以包含剛編寫的can驅動程序。


        上一頁 1 2 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 龙海市| 波密县| 元阳县| 铜川市| 连州市| 上思县| 六盘水市| 阿荣旗| 舒兰市| 阿拉善左旗| 平凉市| 乌苏市| 远安县| 五华县| 鸡西市| 克拉玛依市| 彭阳县| 加查县| 彭泽县| 昭通市| 新昌县| 巴青县| 徐汇区| 襄城县| 文水县| 六安市| 永福县| 西充县| 彭阳县| 迁安市| 承德市| 枝江市| 渑池县| 炎陵县| 黄梅县| 新河县| 武安市| 华坪县| 当涂县| 呼和浩特市| 保亭|