新聞中心

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

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

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

2 中繼器的軟件實現(xiàn)
中繼器的主要任務(wù)是在兩個網(wǎng)絡(luò)中進行數(shù)據(jù)的過濾和轉(zhuǎn)發(fā)。其軟件主要包括以下模塊:初始化模塊、數(shù)據(jù)發(fā)送模塊和接收模塊等。
2.1 初始化模塊
初始化直接關(guān)系到控制器能否正常工作,在很多情況下,軟件不能正常工作并不是CAN的收發(fā)程序有問題,往往是初始化配置不正確造成的。的CAN初始化主要包括CAN寄存器初始化、CAN單元初始化(包括CAN模式和波特率的設(shè)置)、CAN過濾器的初始化。由于開發(fā)商提供了大量的固件庫函數(shù),所以只需在調(diào)用的時間作出相應(yīng)的設(shè)置即可。初始化子程序如下所示:
①CAN單元初始化子程序。

c.JPG
在該初始化子程序中最關(guān)鍵的環(huán)節(jié)是怎么設(shè)置CAN的波特率,數(shù)據(jù)手冊給出了波特率的計算公式:
d.JPG
其中tq為CAN時鐘周期。如上述CAN單元初始化子程序中:SJW=tq,BS1=8tq,BS2=7tq,STM32的CAN時鐘有APB1提供。假設(shè)系統(tǒng)時鐘為72 MHz,APB1為系統(tǒng)時鐘的9分頻,結(jié)合初始化子程序,CAN_Prescaler=1,帶入波特率計算公式即可求的其波特率為500 kb/s。
②CAN過濾器的初始化子程序。

f.JPG
CAN過濾器設(shè)置的得當與否是CAN是否能夠成功接收信息的關(guān)鍵,尤其在過濾器組位寬和模式上,如何將節(jié)點的ID號準確地映射到過濾器組位寬設(shè)置寄存器上是過濾器的核心。為了過濾出一組標識符,設(shè)置過濾器工作在屏蔽位模式下,對標識符的任何一位采用“必須匹配”或“不用關(guān)心”的原則處理。



評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉