1517.基于ARM的CAN總線研究和實(shí)現(xiàn)畢業(yè)論文_第1頁(yè)
1517.基于ARM的CAN總線研究和實(shí)現(xiàn)畢業(yè)論文_第2頁(yè)
1517.基于ARM的CAN總線研究和實(shí)現(xiàn)畢業(yè)論文_第3頁(yè)
1517.基于ARM的CAN總線研究和實(shí)現(xiàn)畢業(yè)論文_第4頁(yè)
1517.基于ARM的CAN總線研究和實(shí)現(xiàn)畢業(yè)論文_第5頁(yè)
已閱讀5頁(yè),還剩13頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、本科畢業(yè)論文論文題目:基于arm的can總線研究和實(shí)現(xiàn)學(xué)生姓名: 學(xué)號(hào): 專業(yè): 通信工程 指導(dǎo)教師: 學(xué) 院: 信息科學(xué)與工程學(xué)院 2008年 5 月 25日目 錄摘 要.1abstract .1一、引言.2二、關(guān)于can特點(diǎn)的介紹 . 2三、簡(jiǎn)單can通信硬件設(shè)計(jì). 4四、can報(bào)文傳輸. 5 五、簡(jiǎn)單can信息傳遞機(jī)制的介紹.7六、軟件設(shè)計(jì).8七、簡(jiǎn)單can通信協(xié)議的指定. 11八、簡(jiǎn)單測(cè)試.12九、can網(wǎng)絡(luò)設(shè)計(jì).13十、結(jié)束語(yǔ).15參考文獻(xiàn).15基于arm的can 總線研究和實(shí)現(xiàn)摘要:can 總線是一種支持分布式實(shí)時(shí)控制系統(tǒng)的串行通信的局域網(wǎng)絡(luò)。由于其高性能、高可靠性、實(shí)時(shí)性好及其獨(dú)

2、特的設(shè)計(jì), 已廣泛應(yīng)用于控制系統(tǒng)中的各檢測(cè)和執(zhí)行機(jī)構(gòu)之間的數(shù)據(jù)通信。本文針對(duì)大型復(fù)雜工業(yè)現(xiàn)場(chǎng)實(shí)時(shí)測(cè)控網(wǎng)絡(luò)的要求,介紹了can總線的特點(diǎn),介紹了基于can 總線測(cè)控節(jié)點(diǎn)的設(shè)計(jì)與實(shí)現(xiàn), 闡述了can 總線網(wǎng)絡(luò)的通信模型和構(gòu)建方法。重點(diǎn)對(duì)基于atmel公司的7x256芯片的節(jié)點(diǎn)硬件配置、軟件功能、尤其是can 通信的實(shí)現(xiàn)進(jìn)行了比較詳細(xì)地討論。關(guān)鍵詞: can 總線;7x256; can 通信the research and realization of can bus based on arm abstract:can bus is a kind of area network which supp

3、orts the serial communication of real-time . owing to its high performance, high reliability,good performance of real-time and its unique design,can bus has been widely applied in the data communication between the testing and implementing agencies in the control system. at the request of real-time

4、monitoring and control network in the large-scale industrial complex scene,this paper has introduced the features of can bus,the design and implementation of monitoringand control nodes based on can bus.it has described the communication model and costruction methods of can bus network.this paper ha

5、s focused on the detailed discussion of node hardware configuration and soft function of 7x256 chip based on atmel company,especially the realization of can bus. key words :can bus; 7x256; can communication一、引言 目前在某些測(cè)控系統(tǒng)中仍采用rs - 485 串行總線通訊。由于該方式只能構(gòu)成主從式結(jié)構(gòu)的通訊網(wǎng)絡(luò),一旦主節(jié)點(diǎn)出現(xiàn)故障,就會(huì)導(dǎo)致整個(gè)系統(tǒng)處于癱瘓狀態(tài),系統(tǒng)總體可靠性較低。此外,rs

6、 - 485 網(wǎng)絡(luò)在任意時(shí)刻,總線只能允許一個(gè)節(jié)點(diǎn)向總線發(fā)送數(shù)據(jù)。如果總線上的某些節(jié)點(diǎn)發(fā)生故障,導(dǎo)致多于一個(gè)以上的節(jié)點(diǎn)向總線發(fā)送數(shù)據(jù)時(shí),就極有可能使總線呈現(xiàn)短路狀態(tài),從而損壞某些節(jié)點(diǎn)的rs - 485 驅(qū)動(dòng)器,導(dǎo)致故障范圍的進(jìn)一步擴(kuò)大。針對(duì)這些問(wèn)題,rs - 485 網(wǎng)絡(luò)本身無(wú)法給出一個(gè)良好的解決方法。而can 總線技術(shù)由于具有多主工作方式、采用非破壞性總線仲裁技術(shù)、信號(hào)傳輸采用短幀結(jié)構(gòu)等特點(diǎn),可使這些問(wèn)題得到較好的解決。can, 全稱為“controller area network”, 即控制器局域網(wǎng), 最早由德國(guó)bosch 公司提出, 主要用于汽車內(nèi)部測(cè)量與控制中心之間的數(shù)據(jù)通信。如發(fā)動(dòng)

7、機(jī)管理系統(tǒng)、變速箱控制器、儀表裝備、電子主干系統(tǒng)中, 均嵌入can 控制裝置。由于其卓越的性能、極高的可靠性, 獨(dú)特靈活的設(shè)計(jì)和低廉的價(jià)格, 現(xiàn)已廣泛應(yīng)用于工業(yè)現(xiàn)域控制、智能大廈、小區(qū)安防、交通工具、醫(yī)療儀器環(huán)境監(jiān)控等眾多領(lǐng)域。已被公認(rèn)為幾種最有前途的現(xiàn)場(chǎng)總線之一。本文研究的是基于arm的can 總線的數(shù)據(jù)通信。具體實(shí)現(xiàn)can總線上一對(duì)一,以及一對(duì)多的數(shù)據(jù)通信。二、關(guān)于can特點(diǎn)的介紹 can總線是一種支持分布式實(shí)時(shí)控制系統(tǒng)的串行通信局域網(wǎng)。由于其高性能、高可靠性、實(shí)時(shí)性等優(yōu)點(diǎn),已廣泛應(yīng)用于控制系統(tǒng)中的檢測(cè)和執(zhí)行機(jī)構(gòu)之間的數(shù)據(jù)通信。它具有以下一些技術(shù)特性:(1) 多主控制在總線空閑時(shí),所有的單

8、元都可開(kāi)始發(fā)送消息(多主控制)。最先訪問(wèn)總線的單元可獲得發(fā)送權(quán)(csma/ca 方式)。多個(gè)單元同時(shí)開(kāi)始發(fā)送時(shí),發(fā)送高優(yōu)先級(jí)id 消息的單元可獲得發(fā)送權(quán)。(2) 消息的發(fā)送在can 協(xié)議中,所有的消息都以固定的格式發(fā)送??偩€空閑時(shí),所有與總線相連的單元都可以開(kāi)始發(fā)送新消息。兩個(gè)以上的單元同時(shí)開(kāi)始發(fā)送消息時(shí),根據(jù)標(biāo)識(shí)符(identifier 以下稱為 id)決定優(yōu)先級(jí)。id 并不是表示發(fā)送的目的地址,而是表示訪問(wèn)總線的消息的優(yōu)先級(jí)。兩個(gè)以上的單元同時(shí)開(kāi)始發(fā)送消息時(shí),對(duì)各消息id 的每個(gè)位進(jìn)行逐個(gè)仲裁比較。仲裁獲勝(被判定為優(yōu)先級(jí)最高)的單元可繼續(xù)發(fā)送消息,仲裁失利的單元?jiǎng)t立刻停止發(fā)送而進(jìn)行接收工

9、作。(3) 系統(tǒng)的柔軟性與總線相連的單元沒(méi)有類似于“地址”的信息。因此在總線上增加單元時(shí),連接在總線上的其它單元的軟硬件及應(yīng)用層都不需要改變。(4) 通信速度根據(jù)整個(gè)網(wǎng)絡(luò)的規(guī)模,可設(shè)定適合的通信速度。在同一網(wǎng)絡(luò)中,所有單元必須設(shè)定成統(tǒng)一的通信速度。即使有一個(gè)單元的通信速度與其它的不一樣,此單元也會(huì)輸出錯(cuò)誤信號(hào),妨礙整個(gè)網(wǎng)絡(luò)的通信。不同網(wǎng)絡(luò)間則可以有不同的通信速度。(5) 遠(yuǎn)程數(shù)據(jù)請(qǐng)求可通過(guò)發(fā)送“遙控幀” 請(qǐng)求其他單元發(fā)送數(shù)據(jù)。(6) 錯(cuò)誤檢測(cè)功能錯(cuò)誤通知功能錯(cuò)誤恢復(fù)功能所有的單元都可以檢測(cè)錯(cuò)誤(錯(cuò)誤檢測(cè)功能)。檢測(cè)出錯(cuò)誤的單元會(huì)立即同時(shí)通知其他所有單元(錯(cuò)誤通知功能)。正在發(fā)送消息的單元一旦檢

10、測(cè)出錯(cuò)誤,會(huì)強(qiáng)制結(jié)束當(dāng)前的發(fā)送。強(qiáng)制結(jié)束發(fā)送的單元會(huì)不斷反復(fù)地重新發(fā)送此消息直到成功發(fā)送為止(錯(cuò)誤恢復(fù)功能)。(7) 故障封閉can 可以判斷出錯(cuò)誤的類型是總線上暫時(shí)的數(shù)據(jù)錯(cuò)誤(如外部噪聲等)還是持續(xù)的數(shù)據(jù)錯(cuò)誤(如單元內(nèi)部故障、驅(qū)動(dòng)器故障、斷線等)。由此功能,當(dāng)總線上發(fā)生持續(xù)數(shù)據(jù)錯(cuò)誤時(shí),可將引起故障的單元從總線上隔離出去。(8) 連接can 總線是可同時(shí)連接多個(gè)單元的總線??蛇B接的單元總數(shù)理論上是沒(méi)有限制的。但實(shí)際上可連接的單元數(shù)受總線上的時(shí)間延遲及電氣負(fù)載的限制。降低通信速度,可連接的單元數(shù)增加;提高通信速度,則可連接的單元數(shù)減少。can 總線符合iso11898 標(biāo)準(zhǔn),最大傳輸速率可達(dá)1m

11、b/ s ,最大傳輸距離為10km(傳輸速率約為5k) ,傳輸介質(zhì)可為雙絞線、同軸電纜等。由于can 總線是一種很有發(fā)展前景的現(xiàn)場(chǎng)總線,得到了國(guó)際上很多大公司的支持?;赾an 總線的以上特點(diǎn),它特別適用于系統(tǒng)分布比較分散、實(shí)時(shí)性要求高、現(xiàn)場(chǎng)環(huán)境干擾大的場(chǎng)合。三 、簡(jiǎn)單can通信硬件設(shè)計(jì) 節(jié)點(diǎn)控制器arm芯片選用 atmel公司的7x256, 屬arm7 系列芯片。arm7 系列是具有arm7tdmi 內(nèi)核的32 位嵌入式微處理器, 是目前應(yīng)用很廣的嵌入式risc 處理器。該系列芯片體積小、功耗低、成本低, 高性能與靈活性相結(jié)合, 有較多的寄存器, 提供了擴(kuò)充的增強(qiáng)的固定長(zhǎng)的16/32位雙指令

12、集。此芯片集成了外設(shè)can 控制器。 芯片支持片上斷點(diǎn)和調(diào)試點(diǎn)支持, 具有先進(jìn)的軟件開(kāi)發(fā)和調(diào)試環(huán)境。又因?yàn)榇颂幚砥餍酒陨砑闪薱an 控制器, 可以自動(dòng)處理數(shù)據(jù)鏈路層和部分物理層,為cpu提供了完整的關(guān)于v2.0 part a和v2.0 part b協(xié)議功能,可以自動(dòng)處理數(shù)據(jù)鏈路層和部分物理層。 總線數(shù)據(jù)波特度均可達(dá)1mbps; 可訪問(wèn)32 位的寄存器和ram; 全局驗(yàn)收過(guò)濾器可識(shí)別幾乎所有總線的11 位和29 位rx 標(biāo)識(shí)符; 驗(yàn)收過(guò)濾器為選擇的標(biāo)準(zhǔn)標(biāo)識(shí)符提供了fullcan模式自動(dòng)接收功能。所以使用atmel的7x256省去了can 控制器外圍電路的設(shè)計(jì), 同時(shí)也減少了線路干擾。can

13、收發(fā)器采用philips 公司的tja1050 高速can 收發(fā)器。收發(fā)器是can 協(xié)議控制器和物理總線之間的接口。它最初是應(yīng)用在波特率范圍在60k 波特到1m波特的高速自動(dòng)化應(yīng)用中。tja1050 可以為總線提供不同的發(fā)送性能, 為can 控制器提供不同的接收性能。而且它與“iso 11898”標(biāo)準(zhǔn)完全兼容。tja1050 提供兩種模式供用戶使用。用過(guò)引腳s 可以選擇高速模式或靜音模式。高速模式就是普通的工作模式, 將引腳s 接地可以進(jìn)入這種模式。如果引腳s 沒(méi)有連接, 高速模式就是默認(rèn)的工作模式。在靜音模式中, 發(fā)送器是禁止的。但其他功能可以繼續(xù)使用。將s 引腳連接到vcc 可以進(jìn)入這個(gè)模

14、式。靜音模式可以防止在can 控制器不受控制時(shí)對(duì)網(wǎng)絡(luò)通訊造成堵塞。本設(shè)計(jì)要實(shí)現(xiàn)發(fā)送和接收, 所以將s 接地進(jìn)入普通模式??傮w的原理圖如圖1所示:can控制器tja1050arm7芯片 txrxcanlcanhcan總線 圖1 硬件設(shè)計(jì)原理圖四、can報(bào)文傳輸報(bào)文傳輸由以下4 個(gè)不同的幀類型所表示和控制:- 數(shù)據(jù)幀:數(shù)據(jù)幀攜帶數(shù)據(jù)從發(fā)送器至接收器。- 遠(yuǎn)程幀:總線單元發(fā)出遠(yuǎn)程幀,請(qǐng)求發(fā)送具有同一識(shí)別符的數(shù)據(jù)幀。- 錯(cuò)誤幀:任何單元檢測(cè)到一總線錯(cuò)誤就發(fā)出錯(cuò)誤幀。- 過(guò)載幀:過(guò)載幀用以在先行的和后續(xù)的數(shù)據(jù)幀(或遠(yuǎn)程幀)之間提供一附加的延時(shí)。數(shù)據(jù)幀(或遠(yuǎn)程幀)通過(guò)幀間空間與前述的各幀分開(kāi)。因在實(shí)際應(yīng)用

15、中基本上都是進(jìn)行信息的采集及傳遞工作,所以這里僅僅介紹下數(shù)據(jù)幀 。數(shù)據(jù)幀由7 個(gè)不同的位場(chǎng)組成:幀起始、仲裁場(chǎng)、控制場(chǎng)、數(shù)據(jù)場(chǎng)、crc 場(chǎng)、應(yīng)答場(chǎng)、幀結(jié)尾。數(shù)據(jù)場(chǎng)的長(zhǎng)度可以為0。數(shù)據(jù)幀的結(jié)構(gòu)如圖2所示:圖2 數(shù)據(jù)幀結(jié)構(gòu)圖(一)幀起始它標(biāo)志數(shù)據(jù)幀和遠(yuǎn)程幀的起始,由一個(gè)單獨(dú)的“顯性”位組成。只在總線空閑時(shí),才允許站開(kāi)始發(fā)送(信號(hào))。所有的站必須同步于首先開(kāi)始發(fā)送信息的站的幀起始前沿。(二)仲裁場(chǎng)仲裁場(chǎng)包括識(shí)別符和遠(yuǎn)程發(fā)送請(qǐng)求位(rtr)。識(shí)別符:識(shí)別符的長(zhǎng)度為11 位。這些位的發(fā)送順序是從id-10 到id-0。最低位是id-0。最高的7 位(id-10 到id-4)必須不能全是“隱性”。rtr

16、位:該位在數(shù)據(jù)幀里必須為“顯性”,而在遠(yuǎn)程幀里必須為“隱性”(三)控制場(chǎng)控制場(chǎng)由6 個(gè)位組成,包括數(shù)據(jù)長(zhǎng)度代碼和兩個(gè)將來(lái)作為擴(kuò)展用的保留位。所發(fā)送的保留位必須為“顯性”。接收器接收所有由“顯性”和“隱性”組合在一起的位。數(shù)據(jù)長(zhǎng)度代碼:數(shù)據(jù)長(zhǎng)度代碼指示了數(shù)據(jù)場(chǎng)中字節(jié)數(shù)量。數(shù)據(jù)長(zhǎng)度代碼為4 個(gè)位,在控制場(chǎng)里被發(fā)送。(四)數(shù)據(jù)場(chǎng)數(shù)據(jù)場(chǎng)由數(shù)據(jù)幀中的發(fā)送數(shù)據(jù)組成。它可以為08 個(gè)字節(jié),每字節(jié)包含了8 個(gè)位,首先發(fā)送msb。(五)crc 場(chǎng)crc場(chǎng)包括crc 序列(crc sequence),其后是crc 界定符(crc delimiter)。(六) 應(yīng)答場(chǎng)應(yīng)答場(chǎng)長(zhǎng)度為2 個(gè)位,包含應(yīng)答間隙(ack sl

17、ot)和應(yīng)答界定符(ack delimiter)。在應(yīng)答場(chǎng)里,發(fā)送站發(fā)送兩個(gè)“隱性”位。當(dāng)接收器正確地接收到有效的報(bào)文,接收器就會(huì)在應(yīng)答間隙(ack slot)期間(發(fā)送ack 信號(hào))向發(fā)送器發(fā)送一“顯性”的位以示應(yīng)答。(七)幀結(jié)尾每一個(gè)數(shù)據(jù)幀和遠(yuǎn)程幀均由一標(biāo)志序列界定。這個(gè)標(biāo)志序列由7 個(gè)“隱性”位組成。五、簡(jiǎn)單的can信息傳遞機(jī)制的介紹 7x256的can控制器上有8個(gè)獨(dú)立的郵箱。任何郵箱都可以通過(guò)程序設(shè)置為接收緩沖區(qū)(甚至是不連續(xù)的緩沖區(qū))。當(dāng)緩沖區(qū)滿的時(shí)候一個(gè)中斷就會(huì)被觸發(fā)。郵箱的設(shè)置使開(kāi)始接收的信息可以被鎖存在can控制寄存器中。任何一個(gè)郵箱在指定其為接收郵箱的時(shí)候,可以指定其類型為

18、receive mode,或者receive with overwrite mode,如果將郵箱設(shè)置為receive with overwrite mode ,那么如果在申請(qǐng)得到應(yīng)答之前又接收到了新的信息,那么原來(lái)寄存器中的信息會(huì)被新接收到的信息覆蓋掉。如果將郵箱設(shè)置為receive mode 模式,那么當(dāng)郵箱中存在已接收的數(shù)據(jù)且還沒(méi)有被應(yīng)用程序通知其使用完畢時(shí),該郵箱將拒絕接收任何信息。任何郵箱也都可以設(shè)置為發(fā)送緩沖區(qū)。多個(gè)發(fā)送郵箱可以在同一時(shí)間內(nèi)被使能。每一個(gè)郵箱都可以被獨(dú)立的設(shè)置為不同的優(yōu)先級(jí)。 cpu通過(guò)can控制器郵箱讀寫(xiě)數(shù)據(jù)或信息。每個(gè)郵箱均被分配了一個(gè)標(biāo)志符(id)。can控制器

19、通過(guò)壓縮或解碼數(shù)據(jù)信息創(chuàng)建或解碼數(shù)據(jù)幀。程序運(yùn)行管理下的can控制器可以自動(dòng)的處理遠(yuǎn)程幀、錯(cuò)誤幀和過(guò)載幀。 can模塊有8個(gè)緩沖區(qū),也可以稱作通道或者郵箱。每個(gè)正在應(yīng)用的郵箱都被定義了一個(gè)與can標(biāo)志符對(duì)應(yīng)的標(biāo)志符。報(bào)文標(biāo)志符可以和標(biāo)準(zhǔn)幀標(biāo)志符或擴(kuò)展幀相匹配。標(biāo)志符在can初始化時(shí)就被定義好了,但是可以在以后被更改以使郵箱可以處理新的信息??梢詾槎鄠€(gè)郵箱配置相同的id。每個(gè)郵箱可以被配置為獨(dú)立的接收或發(fā)送模塊。郵箱類型可以通過(guò)郵箱模式寄存器(can mmrx)的mot位定義。如果郵箱id寄存器(can_midx)中的mide被置位,那么郵箱可以處理29位擴(kuò)展的格式標(biāo)志符,否則,郵箱將處理標(biāo)準(zhǔn)格

20、式標(biāo)志符。一旦一個(gè)新的信息被接收,它的id會(huì)與郵箱掩碼寄存器的值相與并與郵箱id寄存器的值相比較。如果被接收,那么這個(gè)信息的id將被復(fù)制到郵箱id寄存器。 六 、軟件設(shè)計(jì) 程序主體結(jié)構(gòu)為: can 驅(qū)動(dòng)程序部分。can 驅(qū)動(dòng)程序是針對(duì)arm芯片上can 接口模塊編寫(xiě)的。can 驅(qū)動(dòng)程序主要包括 can 控制器初始化程序; 發(fā)送子程序; 接收子程序; 中斷處理程序。下面主要對(duì)can 控制器初始化程序進(jìn)行簡(jiǎn)要的分析。(其余部分限于篇幅原因就不作具體介紹了,詳細(xì)可見(jiàn)附帶的源碼文件)can控制器驅(qū)動(dòng)程序初始化基本流程如下所述:1. 設(shè)置復(fù)用的pio引腳連接到can控制器。2. 使能can控制器輸入時(shí)鐘

21、。3. 設(shè)置can控制器的波特率。4. 向高級(jí)中斷控制器(aic)注冊(cè)can中斷(需要編寫(xiě)相應(yīng)的can中斷服務(wù)子函數(shù))。5. 使能aic控制器的can中斷。6. 使能can控制器。7. 使能can控制器的相關(guān)中斷。8. 設(shè)置can郵箱(包括郵箱id號(hào)、掩碼、傳輸數(shù)據(jù)、傳輸數(shù)據(jù)長(zhǎng)度、郵箱類型等)。代碼分析: /*- 初始化can控制器 -*/* 指定can收發(fā)引腳由can控制器控制at91c_base_pioa-pio_pdr = can_mask;at91c_base_pioa-pio_asr = can_mask;/* 使能can輸入時(shí)鐘at91c_base_pmc-pmc_pcer = 1

22、 aic_svrat91c_id_can = (unsigned int)canirqhandler;/* 注冊(cè)can中斷的優(yōu)先級(jí)跟觸發(fā)模式at91c_base_aic-aic_smrat91c_id_can = at91c_aic_prior_highest | at91c_aic_srctype_int_high_level;/* 設(shè)置can波特率at91c_base_can-can_br = can_br_500k;#if transmit_type = recv/* 禁止can中斷at91c_base_can-can_idr = at91c_can_mb1;/* 設(shè)置mb0 /* 設(shè)置

23、郵箱0的id號(hào)(標(biāo)準(zhǔn)幀)at91c_base_can-can_mb0.can_mb_mid = 0x5aa can_mb0.can_mb_mam = 0xffffffff; /設(shè)置郵箱 mb0的模式為接收郵箱at91c_base_can-can_mb0.can_mb_mmr = at91c_can_mot_rx;/* 使能mb0中斷at91c_base_can-can_ier = at91c_can_mb0; /* 設(shè)置mb2at91c_base_can-can_mb2.can_mb_mid = 0x5aa can_mb2.can_mb_mdh = 0; / 數(shù)據(jù)at91c_base_can-

24、can_mb2.can_mb_mdl = 0; / 數(shù)據(jù)at91c_base_can-can_mb2.can_mb_mmr = at91c_can_mot_consumer; / mb1為生產(chǎn)者郵箱/* 使能mb0中斷at91c_base_can-can_ier = at91c_can_mb2;#else/* 禁止can中斷at91c_base_can-can_idr = at91c_can_mb1;/* 設(shè)置mb1at91c_base_can-can_mb1.can_mb_mid = 0x5aa can_mb1.can_mb_mdh = send_data_h; / 數(shù)據(jù)at91c_base

25、_can-can_mb1.can_mb_mdl = send_data_l; / 數(shù)據(jù)at91c_base_can-can_mb1.can_mb_mmr = at91c_can_mot_tx; / mb1為發(fā)送郵箱#endif/* 使能canat91c_base_can-can_mr = at91c_can_canen;/* 使能can中斷并主動(dòng)清除一次中斷at91c_base_aic-aic_iecr = 1 aic_iccr = 1 at91c_id_can;/*- can控制器初始化結(jié)束 -*/七、簡(jiǎn)單的can通信協(xié)議的制定該通信協(xié)議僅僅是為了簡(jiǎn)單的對(duì)can總線的一對(duì)一,以及一對(duì)多的通信

26、進(jìn)行測(cè)試,沒(méi)有具體的根據(jù)實(shí)際的應(yīng)用需求進(jìn)行分析設(shè)計(jì)。如果真正的用于工業(yè)現(xiàn)場(chǎng)的can總線協(xié)議要比這個(gè)復(fù)雜的多得多。首先,需要對(duì)所用到的節(jié)點(diǎn)的郵箱進(jìn)行設(shè)置(配置其 id,掩碼,模式等),以及節(jié)點(diǎn)的性質(zhì)的配置(主機(jī)或者從機(jī))。而在真正的工業(yè)現(xiàn)場(chǎng)應(yīng)用中,硬性的規(guī)定節(jié)點(diǎn)的性質(zhì)以及郵箱的id號(hào)實(shí)在是一種非常落后的實(shí)現(xiàn)方式,靈活性跟擴(kuò)展性都大大的受到了限制。在真正的應(yīng)用中,任何一個(gè)節(jié)點(diǎn)都可以充當(dāng)一個(gè)主機(jī)的身份與總線上其他的節(jié)點(diǎn)進(jìn)行通信,而總線上的所有節(jié)點(diǎn)可以由主機(jī)發(fā)送一個(gè)重置id號(hào)的命令后自動(dòng)完成id號(hào)的重新分配工作,上層軟件會(huì)將此信息進(jìn)行保存并用于之后的訪問(wèn)。 主機(jī)以及從機(jī)中所用到的郵箱的id號(hào)的簡(jiǎn)單設(shè)置

27、如下:主機(jī)郵箱號(hào) 掩碼 郵箱id 郵箱性質(zhì) 說(shuō)明mb0 發(fā)送 用于實(shí)現(xiàn)一對(duì)多或者一對(duì)一的數(shù)據(jù)訪問(wèn) mb2 0x0 0x1 接收 mb3 0x0 0x1 接收 mb4 0x0 0x1 接收 可以接收所有不同id號(hào)的從mb5 0x0 0x1 接收 信息mb6 0x0 0x1 接收mb7 0x0 0x1 接收從機(jī)郵箱號(hào) 掩碼 郵箱id 郵箱性質(zhì) 說(shuō)明mb0 0x0 0xf1 接收 專門用于接收廣播mb1 0x0 0xf2 接收 專門用于點(diǎn)對(duì)點(diǎn)接收mb2 發(fā)送郵箱 回發(fā)數(shù)據(jù)mb3 發(fā)送郵箱 回發(fā)數(shù)據(jù)郵箱掩碼設(shè)置為0x0,郵箱0,郵箱1均可以接收到主機(jī)發(fā)送過(guò)來(lái)的命令,收到主機(jī)發(fā)送過(guò)來(lái)的數(shù)據(jù)后,則分別進(jìn)行

28、檢測(cè),如果收到的是一對(duì)多的采集命令,則不用再做郵箱id號(hào)的檢測(cè),直接將郵箱準(zhǔn)備好的數(shù)據(jù)發(fā)送回去; 如果收到的是一對(duì)一的采集命令,則在進(jìn)行郵箱id號(hào)的匹配檢測(cè),如果id號(hào)匹配,則將準(zhǔn)備好的數(shù)據(jù)發(fā)送回去,否則不做任何處理。 將主機(jī)的接收郵箱掩碼設(shè)置為0x0,可以接收總線上任何一個(gè)節(jié)點(diǎn)發(fā)過(guò)來(lái)的數(shù)據(jù),其一定程度上充當(dāng)了一個(gè)萬(wàn)能接收的角色。can的上層通信協(xié)議是對(duì)can總線協(xié)議中數(shù)據(jù)場(chǎng)所包含信息的不同功能或性質(zhì)的進(jìn)一步細(xì)化,我們所準(zhǔn)備的信息需要根據(jù)這個(gè)協(xié)議寫(xiě)入can總線協(xié)議的數(shù)據(jù)場(chǎng)。根據(jù)7x256的郵箱設(shè)計(jì)機(jī)制,將長(zhǎng)度固定為64位,具體實(shí)現(xiàn)如下:1 編碼順序由低位段到高位段;2 采用can2.0標(biāo)準(zhǔn)幀格

29、式;3 低32位為信息部分,高32位為數(shù)據(jù)部分;4 低32位數(shù)據(jù)為信息位,定義如下: 第一個(gè)字節(jié)為命令信息:0xaa 一對(duì)多的信息采集 符合條件的從機(jī)收采集命令后回發(fā)一個(gè)包含了采集信息的數(shù)據(jù)幀0xbb 一對(duì)一的信息采集 符合條件的從機(jī)收到采集命令后回發(fā)一個(gè)包含了采集信息的數(shù)據(jù)幀5高32位數(shù)據(jù)為數(shù)據(jù)信息 對(duì)于主機(jī)發(fā)送的報(bào)文,這32位保留 ,暫時(shí)為0 對(duì)于從機(jī)節(jié)點(diǎn)發(fā)送的報(bào)文,這32位為攜帶的數(shù)據(jù)信息 八、簡(jiǎn)單測(cè)試測(cè)試工作是在ads1.2調(diào)試平臺(tái)下進(jìn)行的。測(cè)試過(guò)程中的數(shù)據(jù)信息需要在pc機(jī)上進(jìn)行顯示,但是如果是單純的can數(shù)據(jù)是無(wú)法直接在pc機(jī)上顯示的,于是,增加了一個(gè)can數(shù)據(jù)到串口數(shù)據(jù)的轉(zhuǎn)化模塊,

30、具體的轉(zhuǎn)化細(xì)節(jié)因不是本文討論的重點(diǎn),所以不作介紹了。 數(shù)據(jù)通過(guò)一個(gè)串口軟件在pc機(jī)上進(jìn)行顯示。調(diào)試工作用到三塊開(kāi)發(fā)板(一塊開(kāi)發(fā)板用作主機(jī),其余的兩塊用于掛接到總線上的從機(jī)),并口線 ,串口線等。首先測(cè)試的是一對(duì)一的信息采集。設(shè)置主機(jī)的采集方式為一對(duì)一(低32位命令信息為0xaa,高32位數(shù)據(jù)信息為0),然后指定需要采集數(shù)據(jù)的從機(jī)上的郵箱id號(hào),當(dāng)相應(yīng)的從機(jī)郵箱收到信息后,會(huì)將準(zhǔn)備好的數(shù)據(jù)返回給主機(jī)。仿真調(diào)試程序,看pc機(jī)顯示結(jié)果是否為我們指定的數(shù)據(jù)。最后,測(cè)試的是一對(duì)多得信息采集。設(shè)置主機(jī)的采集方式為一對(duì)多(低32位命令信息為0xbb,高32位數(shù)據(jù)信息為0),然后指定需要采集數(shù)據(jù)的從機(jī)上的郵箱id(隨便一個(gè)id號(hào)就可以了,因?yàn)樵诖饲闆r下,沒(méi)有對(duì)id號(hào)進(jìn)行匹配),當(dāng)相應(yīng)的從機(jī)組郵箱收到信息后,會(huì)將準(zhǔn)備好的數(shù)據(jù)返回給主機(jī)。仿真調(diào)試,看pc機(jī)顯示結(jié)果是否采集到了

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論