新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于CAN總線的嵌入式車燈監控系統設計

        基于CAN總線的嵌入式車燈監控系統設計

        作者: 時間:2012-08-30 來源:網絡 收藏

        3.1.1 節點初始化
        系統的主要任務是實現上位機與下位機之間的通訊,將下位機節點采集到的電壓電流參數上傳至上位機并顯示給用戶,實時反映的工作狀況。因此通訊任務具有最高級別的優先級。在任務taskican中,首先完成節點的初始化,包括端口初始化、設定波特率、設置驗收濾波等,初始化通過調用Stellaris外設驅動庫中的相應函數來完成。函數SysCtlPeripheralEnable()和GPIOPinTvpeCAN()可完成CAN模塊外設的端口初始化,CANSetBitTiming()可以設定波特率,本中的通訊波特率設定為1 MB/s,并且上的節點都設置成相同的波特率,canAcceptFilterSet()可完成驗收濾波設置。完成CAN節點的初始化之后,在任務taskican中每10 ms調用一次iCAN調度函數ICAN_Sche dul(),完成一次數據收發工作,同時將下位機節點采集的電壓電流值上傳至上位機并刷新顯示。
        3.1.2 iCAN協議的消息處理
        iCAN協議,即工業CAN-bus應用層協議。是由我國自主研發的CAN的高層應用協議,詳細的定義了CAN報文中ID以及數據的分配和應用,建立了一個統一的設備模型,定義了設備的I/O資源和訪問規則,采用“連接,面向節點”的通訊方式,既支持主從方式通訊模式,又支持事件觸發通訊模式。系統中,上位機主節點的ID為0x01,下位機各節點的ID可以根據具體情況設定,范圍為0x00-0x3F。
        節點中,數據的發送和接收是由微處理器集成的CAN控制器自動完成。為滿足實時性的要求,數據的接收操作采用中斷方式。由于下位機節點數量較多,數據的發送接收量比較大,為了保證不丟失數據,這里了兩個深度為40字節的CAN報文緩沖區,分別用作發送和接收緩存。對緩沖區的操作,由函數canCirBufRead和函數canCirBufWrite來完成。而對于CAN消息的發送和接收由函數ICANTxMsgObjSend、canFr ameSend和ICANRxMsgObjExplain來完成。
        CAN消息的發送接收流程圖如圖5所示。數據的發送調用函數ICANTxMsgObiSend,其中先按照iCAN協議規定的格式填寫報文的ID和數據段,然后查詢緩沖區的狀態,如果發送緩沖區未滿,則調用canCirBufWrite將整合后的數據寫入發送緩沖區,最后調用函數canFrameSend將數據發送到CAN上。

        本文引用地址:http://www.104case.com/article/148494.htm

        c.JPG


        接收采用中斷方式,當有中斷產生,即收到一幀數據,此時首先查詢接收緩沖區的狀態,如果未滿,則調用函數canCirBufWrite將接收到的數據寫入接收緩沖區。

        linux操作系統文章專題:linux操作系統詳解(linux不再難懂)


        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 台北市| 桂阳县| 六安市| 如皋市| 牡丹江市| 八宿县| 台州市| 武穴市| 合阳县| 清原| 乐昌市| 夏津县| 江阴市| 霍邱县| 临泉县| 闸北区| 黑山县| 南皮县| 新河县| 车致| 墨玉县| 淮滨县| 嵊州市| 阳高县| 化州市| 承德县| 永昌县| 桂平市| 东乌珠穆沁旗| 偃师市| 宜宾县| 宁城县| 赣州市| 台南县| 马龙县| 南汇区| 肇源县| 上高县| 金坛市| 来凤县| 富民县|