<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è) > 汽車(chē)電子 > 設計應用 > 一種基于CAN總線(xiàn)的電動(dòng)車(chē)控制系統設計方案

一種基于CAN總線(xiàn)的電動(dòng)車(chē)控制系統設計方案

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

  4 總線(xiàn)節點(diǎn)的軟件設計

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

  系統采用基于C語(yǔ)言的程序設計。在IAB開(kāi)發(fā)環(huán)境下進(jìn)行調試和仿真。整車(chē)控制節點(diǎn)的軟件設計主要包括4個(gè)部分:控制器的初始化、報文發(fā)送、報文接收和錯誤處理。

  4.1 控制器的初始化

  在啟動(dòng)CAN通信前必需進(jìn)行CAN模塊的初始化,包括硬件使能、CAN工作模式設置、總線(xiàn)波特率設置、設置中斷、驗收過(guò)濾器設置等。初始化操作在CAN模塊復位的模式下進(jìn)行。初始化程序流程圖如圖4所示。

  

5.jpg

 

  本設計中采用的是29位擴展標示符,符合CAN2.0B的標準,所以在驗收屏蔽過(guò)濾器設置中進(jìn)行相應的設定。同時(shí),本設計的CAN波特率設置為250 Kb/s,與總線(xiàn)上其他節點(diǎn)的波特率相同,才能進(jìn)行正常的通信。

  4.2 數據的發(fā)送

  對CAN數據的發(fā)送采用查詢(xún)方式,提高處理器的效率,F103VE的CAN模塊有3個(gè)發(fā)送郵箱,發(fā)送報文的流程為:應用程序選擇一個(gè)空發(fā)送郵箱;設置標識符,數據長(cháng)度和待發(fā)送數據;對CAN+TixR寄存器的TXRQ位置1,請求發(fā)送;一旦CAN總線(xiàn)進(jìn)入空閑狀態(tài),發(fā)送郵箱中的報文則立即發(fā)送,成功發(fā)送后,郵箱為空;通過(guò)查詢(xún)CAN_TSR寄存器的TXOK位來(lái)查詢(xún)報文是否發(fā)送成功。數據發(fā)送程序的流程圖如圖5所示。

  

6.jpg

 

  4.3 數據的接收

  對CAN報文的接收采用中斷方式,提高通信的實(shí)時(shí)性。接收報文的流程如圖6所示。當CAN總線(xiàn)發(fā)來(lái)一個(gè)報文,根據屏蔽過(guò)濾器設置的標識符進(jìn)行過(guò)濾,如果是要接收的報文,則CAN控制器將總線(xiàn)上的報文按順序存入接收FIFO,并進(jìn)入接收中斷,在中斷中對接收FIFO中的報文進(jìn)行存儲,然后釋放 FIFO郵箱。如果不釋放郵箱,當總線(xiàn)上再發(fā)送過(guò)來(lái)報文時(shí),會(huì )直接覆蓋上一個(gè)報文,從而導致報文丟失。數據接收程序流程如圖6所示。

  

7.jpg

 

  4.4 錯誤處理

  電動(dòng)車(chē)的整車(chē)控制器需要接收BMS、CCS和電機控制器這3個(gè)節點(diǎn)發(fā)來(lái)的報文,如果超過(guò)1 s未接收到例如BMS的報文,則通信鏈路超時(shí),此時(shí)需要進(jìn)行故障處理。所以在軟件設計時(shí),定義一個(gè)全局變量,在每個(gè)定時(shí)周期中加1,在接收BMS報文中斷中,對此變量清零,則可以實(shí)現通信超時(shí)檢測。當總線(xiàn)發(fā)生嚴重故障時(shí),CAN節點(diǎn)錯誤寄存器累積到一定次數時(shí),CAN控制器會(huì )關(guān)閉總線(xiàn),節點(diǎn)脫離總線(xiàn)。

  5 結論

  在實(shí)車(chē)實(shí)驗中,各個(gè)節點(diǎn)可以實(shí)現可靠的數據通信,可以實(shí)現電動(dòng)車(chē)的加減速和勻速運行。在本電動(dòng)車(chē)控制系統中,設計的CAN通信節點(diǎn)體積小、功耗低、處理能力強、抗干擾性好,能在電磁環(huán)境復雜的環(huán)境中穩定、可靠地工作。在電動(dòng)車(chē)控制系統中可實(shí)現數據的實(shí)時(shí)快速通信,可靠性

光耦相關(guān)文章:光耦原理


晶振相關(guān)文章:晶振原理
雙控開(kāi)關(guān)相關(guān)文章:雙控開(kāi)關(guān)原理

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

關(guān)鍵詞: CAN STM32 局域網(wǎng)

評論


相關(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>