<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 汽車(chē)電子 > 基于單片機的某車(chē)型CAN總線(xiàn)系統設計

基于單片機的某車(chē)型CAN總線(xiàn)系統設計

——
作者:江杰 范宇 時(shí)間:2007-12-18 來(lái)源:微計算機信息 收藏

摘要:簡(jiǎn)要介紹了AT90CAN 28的功能特點(diǎn),講述了中CAN控制器的原理及使用方法,針對所設計車(chē)型控制系統的構成特點(diǎn),制定了通信協(xié)議,并以單元為具體實(shí)例,對其設計過(guò)程進(jìn)行了詳細的描述,使讀者能更加深刻地體會(huì )到這款的特別之處。

關(guān)鍵詞
;;;;

引言

    現場(chǎng)總線(xiàn)技術(shù)[1]是目前自動(dòng)化控制領(lǐng)域發(fā)展比較迅速的一門(mén)技術(shù),其中CAN(Controller Area Network)總線(xiàn)[2]是在國際上應用最廣泛的現場(chǎng)總線(xiàn)之一。近幾年隨著(zhù)行業(yè)的發(fā)展,現代汽車(chē)中已經(jīng)成為必須采用的裝置之一。本文以ATMEL公司新近生產(chǎn)的一款內置CAN控制器的——為基礎,設計了一款車(chē)載CAN總線(xiàn)系統,通過(guò)CAN智能測控儀表對車(chē)中部分單元參數量進(jìn)行實(shí)時(shí)監控,使各單元之間協(xié)調運轉。另外,傳輸線(xiàn)束大大簡(jiǎn)化,可靠性得到了極大的提高,有效節約了線(xiàn)束安裝空間和系統成本。

1 AT90CAN128特性概述

1.1 基本特性

    AT90CAN128[3]是基于A(yíng)VR RISC結構的8位低功耗CMOS微處理器,它采用了先進(jìn)的指令集以及單周期指令執行時(shí)間,其數據吞吐率高達1 MIPS/MHz,其內核具有豐富的指令集和32個(gè)通用工作寄存器。所有寄存器都直接與ALU相連接。通過(guò)將8位RISC CPU與系統內可編程的Flash集成在一個(gè)芯片內,為許多嵌入式控制應用提供了靈活而低成本的方案。

1.2 內置CAN控制器概述

    AT90CAN128內置有完全符合CAN2.0A和2.0B標準協(xié)議的CAN控制器。采用MOb(消息對象)方式進(jìn)行數據的發(fā)送和接收,共有15個(gè)MOb,它們具有相同的屬性:有11位標識符(2.0A協(xié)議),也可擴展至29位(2.0B議);8位數據緩沖(靜態(tài)分配);Tx,Rx幀

    緩沖或自動(dòng)響應配置;時(shí)間標識。CAN控制器的結構如圖1所示。

     

圖1、CAN控制器結構

    MOb是一個(gè)CAN消息幀的描述符。它包括處理一個(gè)CAN消息幀的所有信息。這意味著(zhù)一個(gè)MOb可以看成一個(gè)對象,來(lái)描述一條CAN消息。MOb的數目是從0到14。它們相互獨立,但在多重比較的時(shí)候,低位的MOb會(huì )獲得優(yōu)先權。每個(gè)MOb都被安置在一個(gè)頁(yè)中來(lái)保存。頁(yè)的序號就是MOb的序號。{{分頁(yè)}}

2  車(chē)載CAN總線(xiàn)控制系統[4]的設計

    由于對實(shí)時(shí)性要求比較高,所以采用高速CAN總線(xiàn),信息傳輸速度為500kbps,連接的主要對象有:駕駛員計算機、發(fā)動(dòng)機、自動(dòng)變速器、安全氣囊、儀表信號采集系統、系統等。由于各個(gè)節點(diǎn)作用不同,所以在硬件搭建和軟件設計以及通信協(xié)議的制定上都采用了相應的方案。下面以聯(lián)合制動(dòng)單元為例,做具體分析。

    聯(lián)合制動(dòng)單元接收由駕駛員計算機終端發(fā)送的CAN總線(xiàn)消息命令,根據對液力制動(dòng)扭矩、機械制動(dòng)扭矩、合成扭矩等參數進(jìn)行檢測的狀態(tài),經(jīng)過(guò)電液控制算法計算,實(shí)現前驅、后驅制動(dòng)控制。對正常制動(dòng)回路油位、緊急制動(dòng)回路油位的報警等信息,通過(guò)CAN總線(xiàn)反饋給駕駛員計算機終端。

2.1 聯(lián)合制動(dòng)單元硬件電路組成

    以AT90CAN128單片機作為控制系統核心,外圍設有8路光隔模擬量輸入、4路模擬量輸出、多路光隔開(kāi)關(guān)量輸入、輸出、LED報警及CAN總線(xiàn)收發(fā)器,總線(xiàn)的接口芯片選用的是Philips公司的PCA82C250。具體結構見(jiàn)圖2。

圖2、制動(dòng)單元硬件框圖

2.2          通信協(xié)議制定

2.2.1 各終端消息標識符的定義

    表1定義了駕駛員計算機終端及聯(lián)合制動(dòng)單元之間相互通訊的消息標識符。

表1、各終端的消息標識符

    采用CAN擴展幀的29位標識符進(jìn)行定義,其中P為3位優(yōu)先級;R為保留擴展位;8位的BW為報文類(lèi)型代碼;8位的BD為目標地址或報文類(lèi)型擴展碼;8位的BY為發(fā)送報文源地址。部分設備節點(diǎn)名稱(chēng)和分配地址如下:主駕駛員終端地址10、副駕駛員終端地址20、聯(lián)合制動(dòng)單元地址30。{{分頁(yè)}}

2.2.2 各消息類(lèi)型和命令值內容的定義

    駕駛員計算機終端對聯(lián)合制動(dòng)單元的控制消息內容為2個(gè)字節——命令類(lèi)型和命令值。命令類(lèi)型包括:狀態(tài)查詢(xún)命令(數據0x1,命令值0x0)、前/后驅制動(dòng)命令(數據0x2/0x3,命令值0x0)、聯(lián)合制動(dòng)單元前/后驅制動(dòng)信息確認(數據0x4/0x5,命令值0x0)等。

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

2.3  軟件設計(CAN總線(xiàn)通訊部分)

2.3.1 初始化部分

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

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

void  CAN_INIT ( void )

{

CANGCON = 0x80 ;  /*進(jìn)入復位模式并且復位MOb*/

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

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

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

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

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

CANBT2 = 0x20 ;  

CANBT3 = 0x01 ; 

CANTCON = 0x8F ;  /*設置定時(shí)器預定標*/

/*以“聯(lián)合制動(dòng)單元狀態(tài)查詢(xún)消息”為例*/

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

CANCDMOB = 0x17 ;  /*禁止狀態(tài),IDE位為1表示擴展幀,數據長(cháng)度代碼為7*/

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

CANIDT2 = 0xB1 ;

CANIDT3 = 0x18 ;

CANIDT4 = 0xF2 ;

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

CANIDM2 = 0xFF ;

CANIDM3 = 0xFF ;

CANIDM4 = 0xFF ;

CANGCON = 0x02 ;  /*進(jìn)入操作模式*/

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

}{{分頁(yè)}}

2.3.2 消息的發(fā)送部分

    消息的發(fā)送均采用中斷方式實(shí)現。首先通過(guò)設置CANPAGE寄存器來(lái)指定被發(fā)送的頁(yè)數,將數據裝載到CANMSG寄存器中,然后由CANCDMOB寄存器來(lái)控制發(fā)送動(dòng)作,將消息發(fā)送出去,同時(shí)將觸發(fā)CANSTMOB中的TXOK中斷。

    下面以協(xié)議中的“聯(lián)合制動(dòng)單元狀態(tài)查詢(xún)命令”為例,給出了發(fā)送程序:

void  CAN_TX ( void )

{

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

CANMSG = 0x01 ;  /*裝載消息數據*/

CANMSG = 0x00 ;  /*裝載消息命令值*/

CANCDMOB = 0x52 ;  /*發(fā)送狀態(tài),IDE位為1表示擴展幀,數據長(cháng)度代碼為2*/

}

void  CAN_TX_INTER ( void )  /*發(fā)送中斷子程序*/

{

If  ( ( CANSTMOB & 0x40 ) == 0x40 )  /*發(fā)送中斷*/

{

CANSTMOB & = 0xBF ;  /*清TXOK位*/

CANCDMOB = 0x12;  /*停止發(fā)送*/

}

}

2.3.3 消息的接收部分

    消息的接收同樣采用中斷方式實(shí)現。先設置CANPAGE寄存器來(lái)指定接收的頁(yè)數,隨后由CANCDMOB寄存器來(lái)控制接收動(dòng)作,當有消息到達時(shí),將觸發(fā)CANSTMOB中的RXOK中斷,消息中的數據將被裝載到CANMSG寄存器中。{{分頁(yè)}}

    下面以協(xié)議中的“接收聯(lián)合制動(dòng)單元狀態(tài)信息”為例,給出了接收程序:

void  CAN_RX ( void )

{

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

CANCDMOB = 0x97 ;  /*接收狀態(tài),IDE位為1表示擴展幀,數據長(cháng)度代碼為7*/

}

void  CAN_RX_INTER ( void )  /*接收中斷子程序*/

{

If  ( ( CANSTMOB & 0x20 ) == 0x20 )  /*接收中斷*/

{
         CANSTMOB & = 0xDF ;  /*清RXOK*/

   For ( i = 0 ; i < 7 ; i++ )
            {
              MObData [ RX_PAGE ] [ i ] = CANMSG ;  /*裝載數據*/
        }

}

}

4 結束語(yǔ)

    與目前同類(lèi)型的單片機相比較,AT90CAN128在數據采集、PWM(快速PWM模式)等設計中都有其明顯的優(yōu)勢,特別是內置了CAN控制器,這讓它在現代自控領(lǐng)域的發(fā)展前景十分樂(lè )觀(guān)。通過(guò)實(shí)踐證明,該車(chē)載CAN總線(xiàn)系統運行良好,完全可以達到預期的功能。

    本文作者創(chuàng )新點(diǎn):本文由于采用了AT90CAN128單片機,使得該CAN總線(xiàn)系統的設計方法與傳統的CAN總線(xiàn)網(wǎng)絡(luò )設計思路有所不同,內置CAN控制器可大大降低設備成本、簡(jiǎn)化硬件結構、通信效率加強、提高了安全性以及可靠性。軟件設計上可通過(guò)對MOb的配置,實(shí)現消息隊列的設定,這種方法更加的靈活、易懂。

參考文獻:

[1]  史久根,張培仁,陳真勇. CAN現場(chǎng)總線(xiàn)系統設計技術(shù). 國防工業(yè)出版社,2004.第1版
[2]  饒運濤,鄒繼軍,鄭勇蕓. 現場(chǎng)總線(xiàn)CAN原理與應用技術(shù)[M].北京航空航天大學(xué)出版社,2003.第1版
[3]  AT90CAN128.pdf.  www.atmel.com/literature
[4]  王軼,張凡. CAN總線(xiàn)技術(shù)在智能汽車(chē)系統中的應用. 《微計算機信息》2005年第七期47頁(yè)



評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>