新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > AVR單片機的CAN總線分析儀設計

AVR單片機的CAN總線分析儀設計

作者: 時間:2013-11-12 來源:網絡 收藏

AVR單片機的CAN總線分析儀設計

圖6 自適應波特率流程

3.3 報文接收

  CAN報文的接收有2種方式,分別為查詢的方式和中斷的方式。

  查詢的方式是MCU以一定周期讀取CAN控制器的狀態(tài)寄存器,檢查接收緩沖區(qū)狀態(tài)標志是否至少接收到1個報文。接收緩沖區(qū)狀態(tài)指示為“空”,表示沒有接收到報文,MCU繼續(xù)當前的任務。當接收緩沖區(qū)狀態(tài)標志指示為“滿”,表示已接收至少1個報文,MCU從控制器取出報文,并寫命令釋放接收緩沖區(qū)標志。查詢方式的不足是: 查詢周期如果過短,就會使MCU大部分時間運行在報文的接收查詢上,使其效率降低;若查詢周期過長,由于接收緩沖區(qū)的長度有限會造成數(shù)據(jù)溢出,導致系統(tǒng)不能正常工作。

  中斷的方式是主程序在中斷控制的報文接收之前使能接收中斷和MCU的全局中斷。當控制器已接收1個報文,該報文通過驗收濾波器并放入接收緩沖區(qū),則產生接收中斷。這樣MCU能夠立即響應,處理這個接收到的報文,然后釋放接收緩沖區(qū)。整個接收的過程可在中斷服務程序中完成,不需要與主程序發(fā)生交互作用。中斷方式可以避免查詢方式的不足,增強系統(tǒng)的可靠性。所以在設計報文接收時選擇中斷方式進行報文的接收。圖7為報文接收流程。

AVR單片機的CAN總線分析儀設計

圖7 報文接收流程

3.4 總線狀態(tài)計算

  CAN分析儀主要的功能就是分析CAN總線上的各種總線參數(shù),從而給使用者提供一個透明的窗口來觀測總線的運行狀況。CAN 總線協(xié)議屬于較為高級的現(xiàn)場總線協(xié)議, 工作過程較為復雜。從工程實用的角度看,以下性能參數(shù)具有較高的參考價值:

  ◆ 總線波特率,也叫做總線位速率,表示每秒鐘傳送信息位的數(shù)量,只有網絡中各節(jié)點的波特率相一致時才能夠進行正常的報文收發(fā)。

  ◆ 總線吞吐量,總線單位時間內傳送的報文總數(shù)。

  ◆ 總線出錯率,總線單位時間的錯誤報文數(shù)。

  ◆ 總線負載,每秒鐘節(jié)點發(fā)送的位數(shù)與總線波特率之比。

除此之外,為了更方便地檢查總線狀態(tài),又增添了顯示功能,可以顯示接收報文、狀態(tài)寄存器、報文總數(shù)、報文計數(shù)器、錯誤代碼等。總線分析軟件程序中所采用的算法簡述如下。

 ?。?) 總線吞吐量的測試

  首先設定計數(shù)器i=0,定時器時間t=0,測量值數(shù)組count[5]={0}。當接收到總線上的1個報文并釋放接收緩沖區(qū)時啟動定時器,設定定時時間t=5 s,等待定時中斷發(fā)生。計數(shù)器放在接收中斷函數(shù)中,當成功接收1幀報文時,i=i+1。定時器中斷發(fā)生時,將計數(shù)器的值i存入count[5]數(shù)組中。之后啟動下一次定時,當數(shù)組滿時,結束測試,對count數(shù)組進行排序,并去除最大和最小值??偩€吞吐量V為:

AVR單片機的CAN總線分析儀設計

(2) 總線負載的測試

  通過之前的自適應波特率程序已經檢測到總線上的波特率為bote,設定計數(shù)器j=1,定時器t=0,報文位數(shù)設為c1=0,報文位數(shù)數(shù)組bit_count[20]={0}。當接收到總線上的1個報文并釋放接收緩沖區(qū)時啟動定時器,設定定時時間t=1 s,等待定時中斷發(fā)生。報文位數(shù)、報文位數(shù)數(shù)組和計數(shù)器放在接收中斷函數(shù)中。當成功接收1幀數(shù)據(jù)時,j=j+1,通過讀取接收幀信息SFF可以判定該幀數(shù)據(jù)有多少位,將位數(shù)寫入c1,并存入bit_count[20]數(shù)組中。定時時間到時,拷貝計數(shù)器值,結束測試??偩€負載U為:

AVR單片機的CAN總線分析儀設計

3.5 實驗結果

  為了便于測試分析儀的有效性和準確性,取單節(jié)點進行實驗,即總線上只有1個節(jié)點在進行報文發(fā)送。分別取波特率5 kbps、10 kbps、50 kbps、100 kbps,發(fā)送報文時間間隔100 ms、150 ms、200 ms、250 ms、400 ms、450 ms、500 ms、800 ms,每幀報文有8字節(jié)數(shù)據(jù)域。實驗得到的結果如表1所列。

表1 實驗結果

AVR單片機的CAN總線分析儀設計

從實驗結果可以看出,當每100 ms發(fā)送1幀報文時,檢測到的總線吞吐量為10幀/s,即總線每秒傳送的報文總數(shù)為10幀,與實際相符。在不同的報文發(fā)送間隔和不同的總線波特率下,所測得的總線吞吐量和總線負載與實際相吻合。

4 結論

  本文設計的在實驗室和工業(yè)現(xiàn)場上進行了調試,主要調試的項目包括自適應波特率、液晶顯示和CAN總線通信監(jiān)測等。實踐證明該設計實現(xiàn)了對CAN2.0B標準節(jié)點(并兼容CAN2.0A節(jié)點)監(jiān)測分析的功能,指標達到預期的效果。為CAN總線的工程開發(fā)應用和教學提供了一種簡潔、高效的調試和監(jiān)測手段。


上一頁 1 2 3 下一頁

關鍵詞: AVR單片機 CAN總線分析儀 ATmega64L SJA1000T

評論


相關推薦

技術專區(qū)

關閉