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

          新聞中心

          EEPW首頁 > 手機(jī)與無線通信 > 設(shè)計應(yīng)用 > 工業(yè)現(xiàn)場CAN總線技術(shù)在航天領(lǐng)域的應(yīng)用

          工業(yè)現(xiàn)場CAN總線技術(shù)在航天領(lǐng)域的應(yīng)用

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


          圖5 SJA1000寫時序(Intel模式)

          按照SJA1000的數(shù)據(jù)手冊,確保SJA1000的讀寫正確,如下的時序參數(shù)必須滿足:

          l tW(AL):必須保證ALE的時間,最小不能小于8ns;
          l tLLRL/tLLWL:讀寫時ALE無效到讀寫信號有效的時間,最小不能小于10ns;
          l tLCRL/tLCWL:片選信號有效后讀寫信號有效的時間,最小不能小于0,即片選有效必須出現(xiàn)在讀寫信號有效前;
          l tW(R):讀信號有效寬度,最小不能小于40ns;
          l tW(R):寫信號有效寬度,最小不能小于20ns;
          l tWHLH:寫信號無效到下一次ALE有效的時間,最小不能小于15ns;
          l th(AL-A):在ALE為低電平后地址應(yīng)該保持時間,最小不能小于2ns。

          CPU和接口采用地址直接映射。接口時序設(shè)計重點是接口控制邏輯必須產(chǎn)生符合上述關(guān)鍵參數(shù)的讀寫時序。如果簡單的按照ALE=not nADS方法處理,不滿足要求時序關(guān)系,這在調(diào)試過程中已經(jīng)得到驗證。為此,在設(shè)計中采用了FPGA,以求很好地解決與CPU的接口問題。圖6描述了通過VHDL編寫實現(xiàn)接口電路的狀態(tài)轉(zhuǎn)移圖和FPGA設(shè)計產(chǎn)生的讀寫時序,其中時鐘周期不低于67ns,該時序滿足SJA1000要求。


          圖6 CAN總線接口時序設(shè)計的狀態(tài)轉(zhuǎn)移和時序

          6 CAN總線通訊軟件的設(shè)計

          雙冗余總線結(jié)構(gòu)的通訊軟件主要由初始化、接收和發(fā)送三個模塊組成,控制流圖見圖7。在程序設(shè)計時采用了SJA1000的Basic模式,初始化中需要對BUS0和BUS1分別進(jìn)行初始化,包括SJA1000的控制寄存器、接收代碼寄存器、接收屏蔽寄存器、總線時序寄存器等。


          圖 7 CAN總線通訊軟件的控制流圖

          發(fā)送模塊采用主動發(fā)送方式,BUS0為優(yōu)先通訊通道,若BUS0通道狀態(tài)不正常,則啟動BUS1通道進(jìn)行通訊,并對BUS0通道進(jìn)行初始化以備下次通訊時使用。
          接收模塊采用中斷接收方式,為了保證接收到的數(shù)據(jù)被實時處理,CAN總線的接收中斷被設(shè)置為高優(yōu)先級中斷。在接收中斷中首先判斷接收通道是BUS0還是BUS1,然后從接收通道按數(shù)據(jù)長度進(jìn)行數(shù)據(jù)接收。

          7 結(jié)束語

          CAN總線的諸多優(yōu)點如實時性好,通信速率高,抗干擾能力強(qiáng),低廉的價格等使它不僅廣泛控制,而且開始向進(jìn)軍。其COTS級器件SJA1000經(jīng)過飛行也得到了驗證,CAN總線適宜的特點得到了充分的展示和飛行驗證。


          上一頁 1 2 3 下一頁

          評論


          相關(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); })();