單線CAN總線隔離中繼器的設(shè)計(jì)
3 軟件設(shè)計(jì)
3.1 初始化子程序
STM32的CAN控制器初始化直接關(guān)系到CAN控制器能否正常工作。STM32的CAN控制器初始化主要包括CAN基本單元和過濾器的初始化。因?yàn)镾T公司推出了一套針對(duì)于STM32的固件庫,所以只需在程序開始時(shí)做出相應(yīng)的設(shè)置即可。在該初始化子程序中關(guān)鍵的環(huán)節(jié)是設(shè)置CAN的波特率,STM32數(shù)據(jù)手冊中的波特率的計(jì)算公式如下:
其中tq=(BRP[9:0]+1)xtPCLK。如上述CAN單元初始化子程序中:tBS1=tq×(TS1[3:0]+1),tBS2=tqx(TS2[2:0]+1),BRP[9:0]、TS1[3:0]和TS2[2:0]均在CAN_BTR寄存器中設(shè)置,STM32的CAN時(shí)鐘有APB1提供。假設(shè)系統(tǒng)時(shí)鐘為72 MHz,APB1為系統(tǒng)時(shí)鐘的9分頻,結(jié)合初始化子程序,BRP[9:0]=0、TS1[3:0]=7、TS2[2:0]=6,代入波特率計(jì)算公式即可求的其波特率為500Kb/s。在該中繼器中,CAN控制器的過濾器設(shè)置工作在屏蔽位模式下,對(duì)標(biāo)識(shí)符的任何一位采用必須匹配或不用關(guān)心的原則處理。在中繼器中,由于需要轉(zhuǎn)發(fā)所有總線上的數(shù)據(jù),則過濾器不必詳細(xì)設(shè)置,只需設(shè)置接收任何ID號(hào)的數(shù)據(jù)即可。
3.2 數(shù)據(jù)轉(zhuǎn)發(fā)子程序
中繼器的任務(wù)實(shí)質(zhì)上就是實(shí)現(xiàn)報(bào)文的轉(zhuǎn)發(fā)。STM32F105內(nèi)部集成了雙bxCAN控制器,它包括3個(gè)發(fā)送郵箱和2個(gè)3級(jí)深度的FIFO。結(jié)合STM32 F105的特性,采用雙FIFO的轉(zhuǎn)發(fā)機(jī)制,其原理如圖3所示。依據(jù)圖3,當(dāng)STM32F105接收到新的報(bào)文時(shí),經(jīng)過數(shù)據(jù)處理模塊處理,在數(shù)據(jù)轉(zhuǎn)發(fā)進(jìn)程的管理下,對(duì)兩路bxCAN控制器的接收FIFO緩沖區(qū)進(jìn)行監(jiān)視,如某一路緩沖區(qū)非空則向另一路轉(zhuǎn)發(fā)。本文引用地址:http://www.ex-cimer.com/article/175746.htm
STM32F105發(fā)送報(bào)文的流程為:應(yīng)用程序選擇1個(gè)空置的發(fā)送郵箱;設(shè)置標(biāo)識(shí)符、數(shù)據(jù)長度和待發(fā)送數(shù)據(jù);然后對(duì)CAN_TIxR寄存器的TXRQ位置1,來請(qǐng)求發(fā)送。TXRQ位置1后,郵箱就不再是空郵箱;一旦郵箱不再為空置,軟件對(duì)郵箱寄存器就不再有寫的權(quán)限。TXRQ位置1后,郵箱馬上進(jìn)入掛號(hào)狀態(tài),并等待成為最高優(yōu)先級(jí)的郵箱。一旦郵箱成為最高優(yōu)先級(jí)的郵箱,其狀態(tài)就變?yōu)轭A(yù)定發(fā)送狀態(tài)。當(dāng)CAN總線進(jìn)人空閑狀態(tài),預(yù)定發(fā)送郵箱中的報(bào)文就馬上被發(fā)送。在郵箱中的報(bào)文被成功發(fā)送后,它馬上變?yōu)榭罩绵]箱;硬件相應(yīng)地對(duì)CAN_TSR寄存器的RQCP和TXOK位置1,表明一次成功發(fā)送。
為了提高中繼器數(shù)據(jù)傳輸?shù)膶?shí)時(shí)性,CAN報(bào)文的接收采用中斷方式。所以在CAN初始化過程中應(yīng)使能CAN1和CAN2外設(shè)中斷,并設(shè)置其相應(yīng)的中斷向量表,設(shè)定其相應(yīng)的中斷等級(jí)。數(shù)據(jù)接收模塊流程如圖4所示。
另外,假設(shè)CAN總線上A點(diǎn)發(fā)出的數(shù)據(jù)總時(shí)間為t,則在軟中繼器另一側(cè)B點(diǎn)接收到該數(shù)據(jù)的最短時(shí)間為t。當(dāng)總線速率不大且對(duì)各總線設(shè)備時(shí)序要求不高時(shí),該時(shí)間可以忽略。但在一些節(jié)點(diǎn)間交換數(shù)據(jù)頻繁的CAN總線系統(tǒng),則須注意這個(gè)問題,盡量使其對(duì)系統(tǒng)的影響降至最低。
4 結(jié)論
該CAN總線中繼器充分利用內(nèi)部集成雙bxCAN控制器簡化了硬件電路的設(shè)計(jì),及豐富的固件庫函數(shù)縮短了開發(fā)周期。實(shí)踐表明,該單線CA N總線隔離中繼器完成了各項(xiàng)設(shè)計(jì)指標(biāo),符合工程的要求,在液壓支架電液控制系統(tǒng)中能夠有效的完成數(shù)據(jù)的轉(zhuǎn)發(fā)和網(wǎng)絡(luò)的拓展,具有較高的實(shí)用價(jià)值。
評(píng)論