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

          新聞中心

          EEPW首頁 > 模擬技術(shù) > 設(shè)計(jì)應(yīng)用 > 多通道實(shí)時(shí)CAN總線模擬器設(shè)計(jì)

          多通道實(shí)時(shí)CAN總線模擬器設(shè)計(jì)

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

          2.3 CPLD設(shè)計(jì)部分
          2.3.1 結(jié)構(gòu)設(shè)計(jì)
          CPLD的輸入信號是單片機(jī)發(fā)送的信號,由高位地址A[15..8]、ALE鎖存信號、中斷信號以及寫/讀信號組成。地址線A14和A15經(jīng)譯碼后作為片選信號,ALE實(shí)現(xiàn)低8位地址線的鎖存。實(shí)體和構(gòu)造體部分代碼如下所示:

          本文引用地址:http://www.ex-cimer.com/article/188441.htm


          2.3.2 仿真結(jié)果
          該模塊在Xilinx ISE 9.1工具下進(jìn)行綜合,并在結(jié)合ModelSim環(huán)境下進(jìn)行功能仿真。其仿真結(jié)果如圖3所示。

          3 軟件設(shè)計(jì)
          該系統(tǒng)軟件設(shè)計(jì)的關(guān)鍵是通信程序設(shè)計(jì)。通信軟件由三部分組成:單片機(jī)和控制器的初始化程序、發(fā)送程序、接收程序。對于初始化程序,采用MAX232芯片對單片機(jī)進(jìn)行在線編程,可同時(shí)對CAN控制器初始化。對于CAN控制器的初始化程序,主要是通過對CAN控制器控制段中的寄存器寫入控制字,從而確定CAN控制器的工作方式等,即通過上電復(fù)位、硬件復(fù)位或軟件復(fù)位給CAN控制器發(fā)一個(gè)復(fù)位請求,便可進(jìn)入初始化。在復(fù)位期間,對必需的寄存器進(jìn)行設(shè)置。對于發(fā)送和接受程序,只需把到來的信息幀送到CAN的發(fā)送或接受緩沖區(qū),同時(shí)啟動命令即可。二者可采用查詢方式或中斷方式,對于中斷方式,程序分為主程序和中斷服務(wù)程序兩部分設(shè)計(jì)。在具體項(xiàng)目中,需要軟硬件結(jié)合調(diào)試才能保證各部分的設(shè)計(jì)準(zhǔn)確無誤,到達(dá)實(shí)際應(yīng)用的要求。

          4 結(jié) 語
          在對CAN通信協(xié)議進(jìn)行分析的基礎(chǔ)上,構(gòu)建了一種實(shí)時(shí)CAN器架構(gòu),同時(shí)利用CPLD器件,通過功能仿真,驗(yàn)證了設(shè)計(jì)方案的正確性。經(jīng)實(shí)際工程項(xiàng)目使用,驗(yàn)證了該設(shè)計(jì)方案切實(shí)可行,滿足了實(shí)際應(yīng)用中高可靠性、高實(shí)時(shí)性以及傳輸速率較高的需求。


          上一頁 1 2 3 下一頁

          關(guān)鍵詞: CAN 多通道 總線模擬

          評論


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