<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 汽車電子 > 設(shè)計應(yīng)用 > 基于CAN/LIN息線的汽車混合網(wǎng)關(guān)設(shè)計

          基于CAN/LIN息線的汽車混合網(wǎng)關(guān)設(shè)計

          作者: 時間:2010-03-09 來源:網(wǎng)絡(luò) 收藏

          3.1 主監(jiān)控程序

            如圖4所示,在主控制器AT91SAM7A3中劃出4塊緩沖區(qū)BUF1~BUF4,每一塊緩沖區(qū)中的數(shù)據(jù)都有明確而且唯一的來源和目的地。主監(jiān)控程序主要通過循環(huán)依次查詢BUF1~BUF4中的存儲情況,來決定是否發(fā)送數(shù)據(jù)以及將數(shù)據(jù)發(fā)送給誰。

          當(dāng)高速網(wǎng)絡(luò)上有數(shù)據(jù)需要接收的時候,通過高速模塊接收數(shù)據(jù),對接收到的數(shù)據(jù)進(jìn)行處理后,將其存到緩沖區(qū)BUF1中,再由低速模塊將其發(fā)送到低速CAN網(wǎng)絡(luò)上;當(dāng)網(wǎng)絡(luò)上有數(shù)據(jù)需要接收時,通過模塊接收數(shù)據(jù),對接收到的數(shù)據(jù)進(jìn)行數(shù)據(jù)格式轉(zhuǎn)換(格式的報文幀轉(zhuǎn)換為CAN 格式的報文幀),再將其存入到緩沖區(qū)BUF4中,并由低速CAN模塊將其發(fā)送到低速CAN網(wǎng)絡(luò)上;當(dāng)?shù)退貱AN網(wǎng)絡(luò)上有數(shù)據(jù)需要接收時,先接收數(shù)據(jù),然后判斷數(shù)據(jù)是發(fā)送到高速CAN,還是發(fā)送到LIN,根據(jù)判斷結(jié)果對數(shù)據(jù)進(jìn)行處理,存入相應(yīng)的緩沖區(qū)(如數(shù)據(jù)是發(fā)往高速CAN總線,則存入BUF2,否則存入BUF3)。

            3.2 數(shù)據(jù)的發(fā)送

            數(shù)據(jù)的發(fā)送由發(fā)送子程序完成,中主要有3個發(fā)送子程序,分別對應(yīng)兩路CAN控制器以及一路 LIN發(fā)送器。高速CAN的發(fā)送子程序負(fù)責(zé)發(fā)送BUF1中的數(shù)據(jù),LIN的發(fā)送子程序負(fù)責(zé)發(fā)送BUF3中的數(shù)據(jù),低速CAN的發(fā)送子程序負(fù)責(zé)發(fā)送BUF2 和BUF4中的數(shù)據(jù)。數(shù)據(jù)的發(fā)送采用查詢總線狀態(tài)的發(fā)送方式:查詢總線的忙閑情況,如果總線忙,則退出發(fā)送子程序,進(jìn)行其他的工作;如果總線空閑,則發(fā)送數(shù)據(jù)。發(fā)送完1幀數(shù)據(jù)后,再檢查與之相應(yīng)的緩沖區(qū)的狀態(tài)。如果為空,則退出發(fā)送子程序;如果非空,則再檢查總線的忙閑狀態(tài)。如果忙,則退出發(fā)送子程序;如果空閑,則發(fā)送數(shù)據(jù)。然后再開始新一輪的數(shù)據(jù)查詢發(fā)送過程。圖5為高速CAN向低速CAN發(fā)送的流程,其他的發(fā)送子程序過程與此類似。

          3.3 數(shù)據(jù)的接收

           



          評論


          相關(guān)推薦

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

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();