基于STM32F1O5的CAN總線(xiàn)中繼器的設計與實(shí)現
1.5 波特率設置及ID設置電路
波特率設置電路由兩個(gè)4位撥碼開(kāi)關(guān)構成,STM32F105通過(guò)讀取每個(gè)波特率撥碼開(kāi)關(guān)的編碼值確定每一路CAN接口的波特率,每一路CAN接口可以選擇16種不同的波特率。由于兩個(gè)CAN接口是通過(guò)內部進(jìn)行通信,因此它們的ID可設置為相同的值,ID設置電路由4位編碼的旋轉編碼開(kāi)關(guān)構成,ID的值為編碼開(kāi)關(guān)的編碼值加上0x190。
2 CAN中繼器軟件的設計
CAN中繼器的主要作用是對接收到的CAN報文進(jìn)行過(guò)濾轉發(fā)。中繼器的工作流程為:中繼器上電時(shí)通過(guò)讀取波特率設置電路和ID設置電路的狀態(tài),設置好波特率和ID值。初始化完成后,STM32F105通過(guò)監聽(tīng)兩個(gè)CAN接口的中斷完成數據的存儲轉發(fā)。當CAN接口A(yíng)收到總線(xiàn)上的數據包時(shí)產(chǎn)生中斷,中斷處理程序根據標準標識符(StdId)和擴展標識符(ExtId)判斷該數據包是標準幀還是擴展幀,同時(shí)將該ID值和ID過(guò)濾表中的值進(jìn)行對比,若符合過(guò)濾條件則不轉發(fā),否則將數據包通過(guò)CAN接口B轉發(fā)出去。
系統的主程序流程如圖4所示。系統上電時(shí)先初始化時(shí)鐘和端口,根據配置波特率設置電路和ID設置電路的狀態(tài)配置好CAN接口的參數,打開(kāi)CAN1和CAN2接口的接收中斷。系統在主程序中不斷掃描波特率設置電路和ID設置電路的狀態(tài)是否有變化,若當前的讀取值和上次的讀取值不一樣,則重新配置波特率和ID。CAN數據包的存儲轉發(fā)在中斷服務(wù)程序中完成。為了避免系統若受到干擾死機后不能重啟,因此需打開(kāi)STM32F105的內置看門(mén)狗,看門(mén)狗的復位由芯片內部的滴答時(shí)鐘每50ms喂狗一次。本文引用地址:http://dyxdggzs.com/article/162174.htm
3 結束語(yǔ)
本文采用了采用雙CAN接口的高性能的ARM處理器STMF105作為CAN中繼器的主控CPU,可以很好地解決兩個(gè)CAN接口的主從狀態(tài)轉換,具有結構簡(jiǎn)單、性能穩定、實(shí)時(shí)性高等特點(diǎn),有一定的社會(huì )效益和廣泛的推廣價(jià)值。
評論