新聞中心

        EEPW首頁 > 手機與無線通信 > 設計應用 > STM32的CAN總線中繼器設計及應用

        STM32的CAN總線中繼器設計及應用

        作者: 時間:2011-03-11 來源:網絡 收藏

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

        本文引用地址:http://www.104case.com/article/156610.htm

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

        i.JPG

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

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


        上一頁 1 2 3 下一頁

        關鍵詞: 應用 設計 總線 CAN STM32

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 顺义区| 麦盖提县| 荣成市| 千阳县| 易门县| 观塘区| 施秉县| 延庆县| 新平| 八宿县| 永川市| 炉霍县| 海盐县| 祥云县| 榆树市| 定日县| 同江市| 定结县| 济源市| 罗平县| 海伦市| 博爱县| 遵化市| 义乌市| 岳阳县| 潼南县| 山阴县| 明光市| 沙洋县| 封开县| 嵩明县| 澎湖县| 社会| 贡嘎县| 神木县| 会同县| 沈丘县| 瑞昌市| 定襄县| 临洮县| 虞城县|