新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于AT90CAN128單片機的某車型CAN總線系統設計

        基于AT90CAN128單片機的某車型CAN總線系統設計

        作者: 時間:2011-12-03 來源:網絡 收藏

        單元提供給駕駛員計算機終端的消息內容包括:單元狀態信息(7字節,分別為液力制動扭矩、機械制動扭矩、合成扭矩、速度以及緊急回路和正常油壓的數值,以及正常制動回路油位和緊急制動回路油位的報警狀態)、單元報警信息(2字節,分別為正常制動回路油位報警和緊急制動回路油位的報警)、聯合制動單元制動返回消息(2字節,分別為收到的前驅或后驅制動命令的命令數據和命令值)等。

        2.3 軟件設計(通訊部分)

        2.3.1 初始化部分

        初始化前將CAN通用控制寄存器的最高位置1(復位模式)。完成后,回到操作模式。

        下面給出了CAN控制器的初始化程序:

        void CAN_INIT ( void )

        {

        CANGCON = 0x80 ; /*進入復位模式并且復位MOb*/

        while ( ENFG == 1 ) ; /*測試CANGSTA中的ENFG位是否為0*/

        CANGIE = 0xB0 ; /*使能所有中斷及接收、發送中斷*/

        CANIE2 = 0xFF ; /*MOb 0~7中斷使能*/

        CANIE1 = 0x00 ; /*MOb 8~14中斷禁止*/

        CANBT1 = 0x02 ; /*設置波特率為500kbps*/

        CANBT2 = 0x20 ;

        CANBT3 = 0x01 ;

        CANTCON = 0x8F ; /*設置定時器預定標*/

        /*以“聯合制動單元狀態查詢消息”為例*/

        CANPAGE = TX_PAGE ; /*指定此消息的MOb頁(寄存器中的高4位)*/

        CANCDMOB = 0x17 ; /*禁止狀態,IDE位為1表示擴展幀,數據長度代碼為7*/

        CANIDT1 = 0x84 ; /*標識符設置*/

        CANIDT2 = 0xB1 ;

        CANIDT3 = 0x18 ;

        CANIDT4 = 0xF2 ;

        CANIDM1 = 0xFF ; /*標識符屏蔽設置*/

        CANIDM2 = 0xFF ;

        CANIDM3 = 0xFF ;

        CANIDM4 = 0xFF ;

        CANGCON = 0x02 ; /*進入操作模式*/

        While ( ENFG == 0 ) ; /*測試CANGSTA中的ENFG位是否為1*/

        }

        2.3.2 消息的發送部分

        消息的發送均采用中斷方式實現。首先通過設置CANPAGE寄存器來指定被發送的頁數,將數據裝載到CANMSG寄存器中,然后由CANCDMOB寄存器來控制發送動作,將消息發送出去,同時將觸發CANSTMOB中的TXOK中斷。


        上一頁 1 2 3 4 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 蚌埠市| 元朗区| 宁晋县| 东城区| 吐鲁番市| 阿拉尔市| 韶山市| 朝阳区| 长宁县| 乌鲁木齐县| 汶川县| 乐至县| 禄丰县| 外汇| 海宁市| 尤溪县| 宿州市| 蒙山县| 碌曲县| 改则县| 红河县| 普安县| 咸丰县| 潮安县| 临泉县| 昌黎县| 喀什市| 衡东县| 新河县| 光山县| 溧水县| 师宗县| 农安县| 琼海市| 兴和县| 永州市| 沙雅县| 二连浩特市| 神池县| 太康县| 宁远县|