新聞中心

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

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

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

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

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

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



評(píng)論


相關(guān)推薦

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

關(guān)閉