基于AVR的CAN總線通信協(xié)議分析技術(shù)
時(shí)間:2008-12-15 15:55:31來源:dujing
導(dǎo)語:?介紹了一種基于AVR單片機(jī)的CAN總線通信協(xié)議分析技術(shù).采用邏輯分析儀先分析 CAN總線上主機(jī)對(duì)各節(jié)點(diǎn)進(jìn)行控制所產(chǎn)生的不同問答數(shù)據(jù)的含義
摘 要 介紹了一種基于AVR單片機(jī)的CAN總線通信協(xié)議分析技術(shù).采用邏輯分析儀先分析 CAN總線上主機(jī)對(duì)各節(jié)點(diǎn)進(jìn)行控制所產(chǎn)生的不同問答數(shù)據(jù)的含義.再使用 AVR單片機(jī) ATmega168L控制獨(dú)立的 CAN控制器 MCP2510對(duì) CAN總線上的報(bào)文進(jìn)行監(jiān)聽,并通過上位機(jī)傳輸給 Pc機(jī)顯示.結(jié)合 CAN總線規(guī)范及先前分析的問答數(shù)據(jù)的定義,通過 Pc機(jī)上顯示的 報(bào)文對(duì)協(xié)議進(jìn)行完整的分析.
關(guān)鍵詞 CAN總線;AVR;上位機(jī) SPI
1 CAN總線規(guī)范概述
CAN(controller area network),即控制器局域網(wǎng),是一種串行通信協(xié)議,具有較高的安全性能及錯(cuò)誤處理能力.作為一種可靠,高效及經(jīng)濟(jì)的平臺(tái),CAN總線憑借諸多優(yōu)點(diǎn)廣泛應(yīng)用于汽車系統(tǒng)、機(jī)械設(shè)備、工業(yè)控制等分布實(shí)時(shí)系統(tǒng)中,取代了傳統(tǒng)控制系統(tǒng)中復(fù)雜的接線配線.成為目前廣泛使用的現(xiàn)場(chǎng) 總線之一.但是,國內(nèi)一些廠家在開發(fā)網(wǎng)絡(luò)產(chǎn)品時(shí)缺乏 CAN總線標(biāo)準(zhǔn)化的指導(dǎo),導(dǎo)致不同網(wǎng)絡(luò)產(chǎn)品互不兼容,削弱了不同產(chǎn)品之間的互操作性¨J.特別是在 CAN總線的應(yīng)用最為廣泛汽車行業(yè),由于不同汽車生產(chǎn)廠家對(duì)產(chǎn)品的CAN總線上數(shù)據(jù)含義的定義各不相同且不對(duì)外公開,使得對(duì)不同汽車的性能進(jìn)行診斷變得異常困難.因此對(duì) CAN總線通信協(xié)議進(jìn)行分析尤為重要.
目前所使用的CAN總線規(guī)范V2.0版本主要由A,B兩部分組成.A部分即CAN規(guī)范VI.2版本,其采用的地址范圍由 11個(gè)識(shí)別位定義,即標(biāo)準(zhǔn)格式, B部分包括標(biāo)準(zhǔn)格式和擴(kuò)展格式,后者為應(yīng)對(duì)地址范圍擴(kuò)大而制定的29個(gè)識(shí)別位格式.標(biāo)準(zhǔn)格式與擴(kuò)展格式的區(qū)別在于擴(kuò)展格式使用了 CAN1.2版本中的第一個(gè)保留位,因而擴(kuò)展格式仍是有效的.為了兼容 CAN2.0,規(guī)定 CAN設(shè)備應(yīng)采用 CAN2.0中的A或 B部分 引.
2 CAN總線通信協(xié)議分析
2.1 協(xié)議分析原理
CAN總線被細(xì)分為三個(gè)不 同的層次:對(duì)象層 (object layer)、傳輸層(transfer layer)和物理層(phy— ical layer).對(duì)象層和傳輸層相當(dāng)于 ISO/OSI模型定義的數(shù)據(jù)鏈路層.對(duì)象層的作用包括:查找被發(fā)送的報(bào)文;確定由實(shí)際要使用的傳輸層接收哪一個(gè)撤文;為應(yīng)用層相關(guān)硬件提供接口.這里的定義對(duì)象處理較為靈活.傳輸層的作用主要是傳送規(guī)則,也就是控制幀結(jié)構(gòu)、執(zhí)行仲裁、錯(cuò)誤檢測(cè)、出錯(cuò)標(biāo)定、故障界定.總線上什么時(shí)候開始發(fā)送新報(bào)文及什么時(shí)候 開始接收?qǐng)?bào)文,均在傳輸層里確定.所以傳輸層的修 改是受到限制的.物理層的作用是在不同節(jié)點(diǎn)之間根據(jù)其電氣屬性進(jìn)行位信息的實(shí)際傳輸.在選擇物理層方面比較自由 J.
對(duì)CAN總線的協(xié)議分析主要有以下三個(gè)步驟:
1)使用邏輯分析儀對(duì)特定網(wǎng)絡(luò)產(chǎn)品的 CAN總線上主機(jī)對(duì)各節(jié)點(diǎn)控制所產(chǎn)生的問答數(shù)據(jù)進(jìn)行分析.從中可以獲得主機(jī)與節(jié)點(diǎn)之間通信的波特率,及數(shù)據(jù)所表示的含義.如在汽車系統(tǒng)中,那個(gè)數(shù)據(jù)表示引擎,那個(gè)數(shù)據(jù)表示出現(xiàn)故障等.
2)設(shè)計(jì)出基于AVR的單片機(jī)系統(tǒng).AVR單片機(jī)對(duì) CAN總線上的報(bào)文進(jìn)行監(jiān)聽.并通過上位機(jī)送 Pc機(jī)顯示.獲取主機(jī)與各節(jié)點(diǎn)的所有問答數(shù)據(jù).
3)對(duì)獲取的問答數(shù)據(jù)根據(jù) CAN總線規(guī)范及先前用邏輯分析儀所獲取的數(shù)據(jù)含義表進(jìn)行完整分析該系統(tǒng)的 CAN總線協(xié)議.
全文
基于AVR的CAN總線通信協(xié)議分析技術(shù).pdf