新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 基于C8O51FO4O的CAN總線中繼器設(shè)計與實現(xiàn)

基于C8O51FO4O的CAN總線中繼器設(shè)計與實現(xiàn)

作者: 時間:2009-12-16 來源:網(wǎng)絡(luò) 收藏

3 MCU狀態(tài)控制
由于采用雙MCU,在進行數(shù)據(jù)傳輸?shù)臅r候MCU不僅要監(jiān)控上的數(shù)據(jù)傳輸,還要監(jiān)控SPI的數(shù)據(jù)傳輸,尤其是SPI的主從狀態(tài)正確轉(zhuǎn)換就顯得十分重要了,如圖4所示。

3.1 MOUO的
(1)系統(tǒng)初始化,開0中斷,設(shè)SPIO為主狀態(tài),監(jiān)測SPIl是否為從狀態(tài)。如果SPIl長期是主狀態(tài),標志通訊錯誤;
(2)0接收上層發(fā)過來的數(shù)據(jù),判斷SPIl是否為從狀態(tài),如果是,就把CAN0數(shù)據(jù)轉(zhuǎn)發(fā)給SPIO并等發(fā)送完成,如果不是,就向主節(jié)點發(fā)送錯誤狀態(tài)幀;
(3)設(shè)SPI0為從狀態(tài),判斷SPIl是否為主狀態(tài),如果是,就等待SPIl發(fā)送數(shù)據(jù);如果不是,延時10 ms,再判斷還不是,就向主節(jié)點發(fā)送錯誤幀;
(4)SPIO接收到SPI1的完整數(shù)據(jù)后,轉(zhuǎn)發(fā)給CAN0,向主節(jié)點發(fā)數(shù)據(jù),完成一次通訊。
3.2 MCUl的設(shè)計
(1)系統(tǒng)初始化,開CANl中斷,設(shè)SPll為從狀態(tài),準備接收MCU0通過SPIO發(fā)來的數(shù)據(jù):
(2)監(jiān)測SPIO是否為主狀態(tài),如果是,就等待接收SPIO的數(shù)據(jù),如果不是,就返回錯誤標志位;
(3)接收到SPIO傳來的數(shù)據(jù),把SPll設(shè)為主,開CANl中斷,將數(shù)據(jù)通過CANl發(fā)送到下一級相應(yīng)ID節(jié)點;
(4)等待CANl下一級節(jié)點發(fā)回的回答幀,并判延時10ms是否到,10ms沒有收到回答幀,判SPIO是否為從,如果是從,發(fā)下一級錯誤幀,如果不是,等待SPIO轉(zhuǎn)為從的狀態(tài);
(5)SPIl是主狀態(tài)并且SPIO為從狀態(tài)時,CANl轉(zhuǎn)發(fā)數(shù)據(jù)給SPIl并等發(fā)送完成。


4 系統(tǒng)的實時性分析
給系統(tǒng)帶來方便的同時,也給系統(tǒng)增加了一些存儲轉(zhuǎn)發(fā)延時,因此在軟件設(shè)計中必須考慮系統(tǒng)的實時性,盡量縮短數(shù)據(jù)的存儲轉(zhuǎn)發(fā)時間。通過對本文提出的雙MCU中繼器系統(tǒng)的分析,影響系統(tǒng)實時性的主要有以下幾個方面:
(1)0級CAN發(fā)送接收各一幀數(shù)據(jù)的時間,主要受通信協(xié)議(CAN2.0A或2.0B)及CAN0波特率決定;
(2)CAN0產(chǎn)生中斷,通知MCU0準備向SPIO發(fā)送時間(中斷時間);
(3) SPI的波特率和發(fā)送接收的字節(jié)數(shù)決定SPIO、SPIl發(fā)送接收時間;
(4)MCUl等待時間和MCU1通過CANl向1級CAN節(jié)點發(fā)送和接收1幀數(shù)據(jù)的時間;
(5)l級節(jié)點模塊MCU響應(yīng)測量時間,受CANl波特率和通信協(xié)議的影響。
總之,當0級和l級實測距離是5km,CAN0和CANl波特率為6.91K,SPI的波特率為1M時,主節(jié)點到l級節(jié)點發(fā)送接收一次數(shù)據(jù)的時間為0.12s,達到大壩監(jiān)測的實時性要求。


5 結(jié)論
本文設(shè)計的中繼器完成了各項設(shè)計指標,符合工程的要求,并且在拉西瓦水電站高拱壩的高邊坡大型遠程監(jiān)控系統(tǒng)中承擔數(shù)據(jù)轉(zhuǎn)發(fā)和網(wǎng)絡(luò)拓展功能,運行結(jié)果表明,傳輸數(shù)據(jù)穩(wěn)定可靠,并且運行正常。


上一頁 1 2 下一頁

評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉