<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 電源與新能源 > 設計應用 > 單線(xiàn)CAN總線(xiàn)隔離中繼器的設計

單線(xiàn)CAN總線(xiàn)隔離中繼器的設計

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

3 軟件設計
3.1 初始化子程序
的CAN控制器初始化直接關(guān)系到CAN控制器能否正常工作。的CAN控制器初始化主要包括CAN基本單元和過(guò)濾器的初始化。因為ST公司推出了一套針對于的固件庫,所以只需在程序開(kāi)始時(shí)做出相應的設置即可。在該初始化子程序中關(guān)鍵的環(huán)節是設置CAN的波特率,STM32數據手冊中的波特率的計算公式如下:
c.JPG
其中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寄存器中設置,STM32的CAN時(shí)鐘有APB1提供。假設系統時(shí)鐘為72 MHz,APB1為系統時(shí)鐘的9分頻,結合初始化子程序,BRP[9:0]=0、TS1[3:0]=7、TS2[2:0]=6,代入波特率計算公式即可求的其波特率為500Kb/s。在該中,CAN控制器的過(guò)濾器設置工作在屏蔽位模式下,對標識符的任何一位采用必須匹配或不用關(guān)心的原則處理。在中,由于需要轉發(fā)所有總線(xiàn)上的數據,則過(guò)濾器不必詳細設置,只需設置接收任何ID號的數據即可。
3.2 數據轉發(fā)子程序
的任務(wù)實(shí)質(zhì)上就是實(shí)現報文的轉發(fā)。STM32F105內部集成了雙bxCAN控制器,它包括3個(gè)發(fā)送郵箱和2個(gè)3級深度的FIFO。結合STM32 F105的特性,采用雙FIFO的轉發(fā)機制,其原理如圖3所示。依據圖3,當STM32F105接收到新的報文時(shí),經(jīng)過(guò)數據處理模塊處理,在數據轉發(fā)進(jìn)程的管理下,對兩路bxCAN控制器的接收FIFO緩沖區進(jìn)行監視,如某一路緩沖區非空則向另一路轉發(fā)。

本文引用地址:http://dyxdggzs.com/article/175746.htm

d.JPG


STM32F105發(fā)送報文的流程為:應用程序選擇1個(gè)空置的發(fā)送郵箱;設置標識符、數據長(cháng)度和待發(fā)送數據;然后對CAN_TIxR寄存器的TXRQ位置1,來(lái)請求發(fā)送。TXRQ位置1后,郵箱就不再是空郵箱;一旦郵箱不再為空置,軟件對郵箱寄存器就不再有寫(xiě)的權限。TXRQ位置1后,郵箱馬上進(jìn)入掛號狀態(tài),并等待成為最高優(yōu)先級的郵箱。一旦郵箱成為最高優(yōu)先級的郵箱,其狀態(tài)就變?yōu)轭A定發(fā)送狀態(tài)。當進(jìn)人空閑狀態(tài),預定發(fā)送郵箱中的報文就馬上被發(fā)送。在郵箱中的報文被成功發(fā)送后,它馬上變?yōu)榭罩绵]箱;硬件相應地對CAN_TSR寄存器的RQCP和TXOK位置1,表明一次成功發(fā)送。
為了提高中繼器數據傳輸的實(shí)時(shí)性,CAN報文的接收采用中斷方式。所以在CAN初始化過(guò)程中應使能CAN1和CAN2外設中斷,并設置其相應的中斷向量表,設定其相應的中斷等級。數據接收模塊流程如圖4所示。

e.JPG


另外,假設上A點(diǎn)發(fā)出的數據總時(shí)間為t,則在軟中繼器另一側B點(diǎn)接收到該數據的最短時(shí)間為t。當總線(xiàn)速率不大且對各總線(xiàn)設備時(shí)序要求不高時(shí),該時(shí)間可以忽略。但在一些節點(diǎn)間交換數據頻繁的系統,則須注意這個(gè)問(wèn)題,盡量使其對系統的影響降至最低。

4 結論
該CAN總線(xiàn)中繼器充分利用內部集成雙bxCAN控制器簡(jiǎn)化了硬件電路的設計,及豐富的固件庫函數縮短了開(kāi)發(fā)周期。實(shí)踐表明,該單線(xiàn)CA N總線(xiàn)隔離中繼器完成了各項設計指標,符合工程的要求,在液壓支架電液控制系統中能夠有效的完成數據的轉發(fā)和網(wǎng)絡(luò )的拓展,具有較高的實(shí)用價(jià)值。


上一頁(yè) 1 2 下一頁(yè)

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>