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

          新聞中心

          EEPW首頁 > 手機(jī)與無線通信 > 設(shè)計(jì)應(yīng)用 > STM32的CAN總線中繼器設(shè)計(jì)及應(yīng)用

          STM32的CAN總線中繼器設(shè)計(jì)及應(yīng)用

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

          2.2 數(shù)據(jù)發(fā)送模塊
          中繼器的任務(wù)之一就是實(shí)現(xiàn)報文的轉(zhuǎn)發(fā)。F105內(nèi)部集成了雙bx控制器,它包括3個發(fā)送郵箱和2個3級深度的FIFO。結(jié)合-F105的特性,采用雙FIFO的轉(zhuǎn)發(fā)機(jī)制,其原理如圖3所示。

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

          g.JPG
          依據(jù)圖3,當(dāng)F105接收到新的報文時,經(jīng)過數(shù)據(jù)處理模塊處理,在主監(jiān)控程序負(fù)責(zé)下,對兩路bx控制器的接收FIFO緩沖區(qū)進(jìn)行監(jiān)視,如某一路緩沖區(qū)非空則向另一路轉(zhuǎn)發(fā)。
          STM32F105發(fā)送報文的流程為:程序選擇1個空置的發(fā)送郵箱;設(shè)置標(biāo)識符,數(shù)據(jù)長度和待發(fā)送數(shù)據(jù);然后對_TIxR寄存器的TXRQ位置1,來請求發(fā)送。TXRQ位置1后,郵箱就不再是空郵箱;而一旦郵箱不再為空置,軟件對郵箱寄存器就不再有寫的權(quán)限。TXRQ位置1后,郵箱馬上進(jìn)入掛號狀態(tài),并等待成為最高優(yōu)先級的郵箱。一旦郵箱成為最高優(yōu)先級的郵箱,其狀態(tài)就變?yōu)轭A(yù)定發(fā)送狀態(tài)。當(dāng)CAN進(jìn)入空閑狀態(tài),預(yù)定發(fā)送郵箱中的報文就馬上被發(fā)送(進(jìn)入發(fā)送狀態(tài))。在郵箱中的報文被成功發(fā)送后,它馬上變?yōu)榭罩绵]箱;硬件相應(yīng)地對CAN_TSR寄存器的RQCP和TXOK位置1,來表明一次成功發(fā)送。
          2.3 數(shù)據(jù)接收模塊
          為了提高中繼器數(shù)據(jù)傳輸?shù)膶?shí)時性,CAN報文的接收采用中斷方式。所以在CAN初始化過程中應(yīng)該通過調(diào)用STM32固件庫函數(shù)voidCAN_IT-Config(CAN_TypeDef*CANx,uint32_t CAN_IT,F(xiàn)unctionalState Newstate)來開啟CAN1和CAN2的中斷。在接收時通過判斷其標(biāo)志位來確定是CAN1還是CAN2產(chǎn)生的中斷,以此進(jìn)入中斷函數(shù)void CAN1_RX0_IRQHandler(void)和voidCAN2 RX0_IRQHandler(void)對收到的報文進(jìn)行處理。即:在接收一個報文時,其標(biāo)識符首先與配置在標(biāo)識符列表模式下的過濾器相比較。如果匹配上,報文就被存放到相關(guān)聯(lián)的FIFO中,并且所匹配的過濾器的序號被存入過濾器匹配序號中;如果沒有匹配,報文標(biāo)識符接著與配置在屏蔽位模式下的過濾器進(jìn)行比較;如果報文標(biāo)識符沒有跟過濾器中的任何標(biāo)識符相匹配,那么硬件就丟棄該報文,且不會對軟件有任何打擾。數(shù)據(jù)接收模塊流程如圖4所示。

          i.JPG

          3 系統(tǒng)在齊瑪印花機(jī)上的
          在齊瑪印花機(jī)CAN通信系統(tǒng)中,CF101板是控制主板,上面具有CAN中繼器的功能,其他3個操作板是從節(jié)點(diǎn)。系統(tǒng)利用中繼器將整個網(wǎng)絡(luò)的通信系統(tǒng)分為兩層,由中繼器對主節(jié)點(diǎn)和從節(jié)點(diǎn)之間的報文進(jìn)行轉(zhuǎn)發(fā)。為了完成對工程的改造,將筆者所的CAN中繼器代替CF101主板,另外3個節(jié)點(diǎn)電路同樣采用STM32來。
          筆者所的CAN中繼器現(xiàn)在紹興某公司進(jìn)行測試。在實(shí)際中,將中繼器的一端和網(wǎng)絡(luò)主干線連接,另一端和操作板及顯示板連接。就最近3個月的測試結(jié)果表明:該系統(tǒng)能夠和原設(shè)備正常通信,保證印花機(jī)的正常工作且性能穩(wěn)定可靠;維護(hù)和擴(kuò)容方便,大大提高了印花機(jī)工作效率,并更大程度地降低了設(shè)備成本。

          4 結(jié)論
          本文所設(shè)計(jì)的CAN中繼器,充分利用以Cortex-M3為內(nèi)核的STM32的優(yōu)勢,內(nèi)部集成雙bxCAN控制器簡化了硬件電路的設(shè)計(jì);豐富的固件庫函數(shù)縮短了開發(fā)周期。實(shí)踐表明,基于STM32的CAN中繼器完成了各項(xiàng)設(shè)計(jì)指標(biāo),符合工程的要求,在齊瑪印花機(jī)系統(tǒng)中能夠有效的完成數(shù)據(jù)的轉(zhuǎn)發(fā)和網(wǎng)絡(luò)的拓展,具有較高的性價比。


          上一頁 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); })();