<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 手機與無(wú)線(xiàn)通信 > 設計應用 > STM32的CAN總線(xiàn)中繼器設計及應用

STM32的CAN總線(xiàn)中繼器設計及應用

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

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

本文引用地址:http://dyxdggzs.com/article/156610.htm

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

i.JPG

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

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


上一頁(yè) 1 2 3 下一頁(yè)

關(guān)鍵詞: 應用 設計 總線(xiàn) CAN STM32

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>