電子發(fā)燒友App

硬聲App

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示
創(chuàng)作
電子發(fā)燒友網(wǎng)>電子資料下載>嵌入式開發(fā)>STM32的CAN總線中繼器設(shè)計及應(yīng)用資料下載

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

2021-04-23 | pdf | 366.58KB | 次下載 | 5積分

資料介紹

引言CAN總線是一種多主方式的串行通信總線,具有優(yōu)良的穩(wěn)定性、實時性、遠程通信能力以及超強的硬件CRC糾錯等特性;CAN總線技術(shù)的應(yīng)用不再僅限于汽車行業(yè),而是擴展到了機械、紡織、控制等行業(yè),并被公認為是最有前途的現(xiàn)場總線之一。然而由于受制于CAN收發(fā)器,CAN總線通信距離和網(wǎng)絡(luò)中節(jié)點數(shù)被分別限制在10 km和110個之內(nèi)。但是在稍大型的CAN總線系統(tǒng)中,這往往是不夠的,這時就需要用CAN總線中繼器對CAN總線網(wǎng)絡(luò)進行擴展。CAN中繼器是系統(tǒng)組網(wǎng)的關(guān)鍵技術(shù)設(shè)備之一,使用中繼器可以提高網(wǎng)絡(luò)設(shè)計的靈活性,并且通過中繼器還可以連接兩個不同波特率的CAN總線網(wǎng)絡(luò);在兩個網(wǎng)絡(luò)間進行數(shù)據(jù)轉(zhuǎn)發(fā),極大地擴展其使用范圍?;诖?,本文設(shè)計出一款基于STM32的CAN總線中繼器,并將其應(yīng)用到齊瑪印花機上,完成圓網(wǎng)印花機通信系統(tǒng)的工程改造。1 系統(tǒng)整體方案及硬件實現(xiàn)以往的CAN中繼器設(shè)計大多采用MCU加CAN控制器的雙芯片或多芯片解決方案。例如,參考文獻使用1片MCU加2路CAN控制器的結(jié)構(gòu)實現(xiàn)中繼器;參考文獻使用雙MCU結(jié)構(gòu)設(shè)計CAN總線中繼器;參考文獻使用獨立雙CAN控制器作為2路CAN接口的控制器來設(shè)計CAN中繼器。上述方案電路復(fù)雜,MCU與CAN控制器通過外部總線連接,數(shù)據(jù)吞吐速度慢,整體可靠性也比較差。意法半導(dǎo)體的STM32是以ARM Cortex-M3為內(nèi)核的32位微處理器,主頻可高達72 MHz,內(nèi)置Flash和SRAM,其容量可分別高達512 KB和64 KB;內(nèi)部集成雙bxCAN控制器。它支持CAN協(xié)議V2.0A和V2.OB,波特率最高可達1 Mb/s,具有3個發(fā)送郵箱和2個3級深度的FIFO,能夠以最小的CPU負荷來高效處理大量收到的報文?;诖?,選用STM32F105作為主控制器,設(shè)計出一款基于STM32的CAN總線中繼器。其整體方案如圖1所示。由于STM32F105內(nèi)部集成了雙路CAN控制器,CAN中繼器的節(jié)點電路變得十分簡單,其硬件電路如圖2所示。以往的節(jié)點電路,為了降低生產(chǎn)現(xiàn)場的抗干擾能力,保證中繼器工作的可靠性,都采用多重的抗干擾措施。例如,大部分的節(jié)點電路都是采用在CAN控制器和收發(fā)器之間加入光電隔離器6N137來實現(xiàn)CAN節(jié)點之間的電氣隔離,采用外加DC/DC電源模塊的方法切斷系統(tǒng)電源的干擾。同樣著眼于提高系統(tǒng)的抗干擾能力和可靠性的問題,本設(shè)計中一反常規(guī)的設(shè)計方法,直接采用廣州致遠電子有限公司生產(chǎn)的CAN通用收發(fā)器CTM8251。CTM8251是一款帶隔離的通用CAN收發(fā)器芯片,該芯片內(nèi)部集成了所有必需的CAN隔離及CAN收發(fā)器件,這些都被集成在不到3 cm2的芯片上。芯片的主要功能是將CAN控制器的邏輯電平轉(zhuǎn)換為CAN總線的差分電平,并且具有DC 2500 V的隔離功能。該芯片符合ISO11898標準,因此,它可以和其他遵從ISO11898標準的CAN收發(fā)器產(chǎn)品互操作。實踐證明采用CTM8251不僅使系統(tǒng)真正與外接隔離開,抑制了干擾的串入提高系統(tǒng)的可靠性,簡化了CAN節(jié)點外圍電路的復(fù)雜度,還降低了成本,有較高的性價比。圖2中120 Ω為可選用的終端匹配電阻,如果網(wǎng)絡(luò)中已經(jīng)有一對匹配電阻,則不使用該電阻。另外,電路中設(shè)計有相應(yīng)的撥碼開關(guān)電路用于CAN網(wǎng)絡(luò)的ID標志和設(shè)置相應(yīng)的波特率。2 中繼器的軟件實現(xiàn)CAN中繼器的主要任務(wù)是在兩個網(wǎng)絡(luò)中進行數(shù)據(jù)的過濾和轉(zhuǎn)發(fā)。其軟件主要包括以下模塊:初始化模塊、數(shù)據(jù)發(fā)送模塊和接收模塊等。2.1 初始化模塊CAN初始化直接關(guān)系到CAN控制器能否正常工作,在很多情況下,軟件不能正常工作并不是CAN的收發(fā)程序有問題,往往是初始化配置不正確造成的。STM32的CAN初始化主要包括CAN寄存器初始化、CAN單元初始化(包括CAN模式和波特率的設(shè)置)、CAN過濾器的初始化。由于STM32開發(fā)商提供了大量的固件庫函數(shù),所以只需在調(diào)用的時間作出相應(yīng)的設(shè)置即可。初始化子程序如下所示:①CAN單元初始化子程序。在該初始化子程序中最關(guān)鍵的環(huán)節(jié)是怎么設(shè)置CAN的波特率,STM32數(shù)據(jù)手冊給出了波特率的計算公式:其中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過濾器的初始化子程序。CAN過濾器設(shè)置的得當(dāng)與否是CAN是否能夠成功接收信息的關(guān)鍵,尤其在過濾器組位寬和模式設(shè)計上,如何將節(jié)點的ID號準確地映射到過濾器組位寬設(shè)置寄存器上是過濾器的核心。為了過濾出一組標識符,設(shè)置過濾器工作在屏蔽位模式下,對標識符的任何一位采用“必須匹配”或“不用關(guān)心”的原則處理。2.2 數(shù)據(jù)發(fā)送模塊中繼器的任務(wù)之一就是實現(xiàn)報文的轉(zhuǎn)發(fā)。STM32F105內(nèi)部集成了雙bxCAN控制器,它包括3個發(fā)送郵箱和2個3級深度的FIFO。結(jié)合STM32-F105的特性,采用雙FIFO的轉(zhuǎn)發(fā)機制,其原理如圖3所示。依據(jù)圖3,當(dāng)STM32F105接收到新的報文時,經(jīng)過數(shù)據(jù)處理模塊處理,在主監(jiān)控程序負責(zé)下,對兩路bxCAN控制器的接收FIFO緩沖區(qū)進行監(jiān)視,如某一路緩沖區(qū)非空則向另一路轉(zhuǎn)發(fā)。STM32F105發(fā)送報文的流程為:應(yīng)用程序選擇1個空置的發(fā)送郵箱;設(shè)置標識符,數(shù)據(jù)長度和待發(fā)送數(shù)據(jù);然后對CAN_TIxR寄存器的TXRQ位置1,來請求發(fā)送。TXRQ位置1后,郵箱就不再是空郵箱;而一旦郵箱不再為空置,軟件對郵箱寄存器就不再有寫的權(quán)限。TXRQ位置1后,郵箱馬上進入掛號狀態(tài),并等待成為最高優(yōu)先級的郵箱。一旦郵箱成為最高優(yōu)先級的郵箱,其狀態(tài)就變?yōu)轭A(yù)定發(fā)送狀態(tài)。當(dāng)CAN總線進入空閑狀態(tài),預(yù)定發(fā)送郵箱中的報文就馬上被發(fā)送(進入發(fā)送狀態(tài))。在郵箱中的報文被成功發(fā)送后,它馬上變?yōu)榭罩绵]箱;硬件相應(yīng)地對CAN_TSR寄存器的RQCP和TXOK位置1,來表明一次成功發(fā)送。2.3 數(shù)據(jù)接收模塊為了提高中繼器數(shù)據(jù)傳輸?shù)膶崟r性,CAN報文的接收采用中斷方式。所以在CAN初始化過程中應(yīng)該通過調(diào)用STM32固件庫函數(shù)voidCAN_IT-Config(CAN_TypeDef*CANx,uint32_t CAN_IT,F(xiàn)unctionalState Newstate)來開啟CAN1和CAN2的中斷。在接收時通過判斷其標志位來確定是CAN1還是CAN2產(chǎn)生的中斷,以此進入中斷函數(shù)void CAN1_RX0_IRQHandler(void)和voidCAN2 RX0_IRQHandler(void)對收到的報文進行處理。即:在接收一個報文時,其標識符首先與配置在標識符列表模式下的過濾器相比較。如果匹配上,報文就被存放到相關(guān)聯(lián)的FIFO中,并且所匹配的過濾器的序號被存入過濾器匹配序號中;如果沒有匹配,報文標識符接著與配置在屏蔽位模式下的過濾器進行比較;如果報文標識符沒有跟過濾器中的任何標識符相匹配,那么硬件就丟棄該報文,且不會對軟件有任何打擾。數(shù)據(jù)接收模塊流程如圖4所示。3 系統(tǒng)在齊瑪印花機上的應(yīng)用在齊瑪印花機CAN通信系統(tǒng)中,CF101板是控制主板,上面具有CAN中繼器的功能,其他3個操作板是從節(jié)點。系統(tǒng)利用中繼器將整個網(wǎng)絡(luò)的通信系統(tǒng)分為兩層,由中繼器對主節(jié)點和從節(jié)點之間的報文進行轉(zhuǎn)發(fā)。為了完成對工程的改造,將筆者所設(shè)計的CAN中繼器代替CF101主板,另外3個節(jié)點電路同樣采用STM32來設(shè)計。筆者所設(shè)計的CAN中繼器現(xiàn)在紹興某公司進行測試。在實際應(yīng)用中,將中繼器的一端和網(wǎng)絡(luò)主干線連接,另一端和操作板及顯示板連接。就最近3個月的測試結(jié)果表明:該系統(tǒng)能夠和原設(shè)備正常通信,保證印花機的正常工作且性能穩(wěn)定可靠;維護和擴容方便,大大提高了印花機工作效率,并更大程度地降低了設(shè)備成本。4 結(jié)論本文所設(shè)計的CAN總線中繼器,充分利用以Cortex-M3為內(nèi)核的STM32的優(yōu)勢,內(nèi)部集成雙bxCAN控制器簡化了硬件電路的設(shè)計;豐富的固件庫函數(shù)縮短了開發(fā)周期。實踐表明,基于STM32的CAN中繼器完成了各項設(shè)計指標,符合工程的要求,在齊瑪印花機系統(tǒng)中能夠有效的完成數(shù)據(jù)的轉(zhuǎn)發(fā)和網(wǎng)絡(luò)的拓展,具有較高的性價比。(mbbeetchina)
下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評論

查看更多

下載排行

本周

  1. 1TC358743XBG評估板參考手冊
  2. 1.36 MB  |  330次下載  |  免費
  3. 2開關(guān)電源基礎(chǔ)知識
  4. 5.73 MB  |  6次下載  |  免費
  5. 3100W短波放大電路圖
  6. 0.05 MB  |  4次下載  |  3 積分
  7. 4嵌入式linux-聊天程序設(shè)計
  8. 0.60 MB  |  3次下載  |  免費
  9. 5基于FPGA的光纖通信系統(tǒng)的設(shè)計與實現(xiàn)
  10. 0.61 MB  |  2次下載  |  免費
  11. 6基于FPGA的C8051F單片機開發(fā)板設(shè)計
  12. 0.70 MB  |  2次下載  |  免費
  13. 751單片機窗簾控制器仿真程序
  14. 1.93 MB  |  2次下載  |  免費
  15. 8基于51單片機的RGB調(diào)色燈程序仿真
  16. 0.86 MB  |  2次下載  |  免費

本月

  1. 1OrCAD10.5下載OrCAD10.5中文版軟件
  2. 0.00 MB  |  234315次下載  |  免費
  3. 2555集成電路應(yīng)用800例(新編版)
  4. 0.00 MB  |  33564次下載  |  免費
  5. 3接口電路圖大全
  6. 未知  |  30323次下載  |  免費
  7. 4開關(guān)電源設(shè)計實例指南
  8. 未知  |  21548次下載  |  免費
  9. 5電氣工程師手冊免費下載(新編第二版pdf電子書)
  10. 0.00 MB  |  15349次下載  |  免費
  11. 6數(shù)字電路基礎(chǔ)pdf(下載)
  12. 未知  |  13750次下載  |  免費
  13. 7電子制作實例集錦 下載
  14. 未知  |  8113次下載  |  免費
  15. 8《LED驅(qū)動電路設(shè)計》 溫德爾著
  16. 0.00 MB  |  6653次下載  |  免費

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935054次下載  |  免費
  3. 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
  4. 78.1 MB  |  537796次下載  |  免費
  5. 3MATLAB 7.1 下載 (含軟件介紹)
  6. 未知  |  420026次下載  |  免費
  7. 4OrCAD10.5下載OrCAD10.5中文版軟件
  8. 0.00 MB  |  234315次下載  |  免費
  9. 5Altium DXP2002下載入口
  10. 未知  |  233046次下載  |  免費
  11. 6電路仿真軟件multisim 10.0免費下載
  12. 340992  |  191185次下載  |  免費
  13. 7十天學(xué)會AVR單片機與C語言視頻教程 下載
  14. 158M  |  183278次下載  |  免費
  15. 8proe5.0野火版下載(中文版免費下載)
  16. 未知  |  138040次下載  |  免費