<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 汽車電子 > 設計應用 > 基于C8051F040的CAN總線通訊系統(tǒng)設計

          基于C8051F040的CAN總線通訊系統(tǒng)設計

          ——
          作者:田奕1,劉秀紅2 時間:2007-01-26 來源:《現(xiàn)代電子技術》 收藏


          1 引言

          本文引用地址:http://www.ex-cimer.com/article/21320.htm

          can總線,即控制器局域網(wǎng)總線,是一種有效支持分布式控制或?qū)崟r控制的串行通信網(wǎng)絡。由于其高性能、高可靠性及獨特的設計和適宜的價格,而廣泛應用于工業(yè)現(xiàn)場控制、智能樓宇、醫(yī)療器械、交通工具以及傳感器等領域,并已被公認為幾種最有前途的現(xiàn)場總線之一。

          目前can系統(tǒng)使用較多的是獨立can控制器,利用單片機的并口控制can控制器,除了8條數(shù)據(jù)線外,還需要幾條控制線。采取這樣的設計不但占用了單片機的引腳,而且增加了電路板的面積。同時,由于采用了并行通訊,降低了系統(tǒng)的可靠性,因此,采取系統(tǒng)內(nèi)部集成can控制器的單片機勢在必行。

          本文已cygnal公司的內(nèi)部集成can控制器的c8051f040單片機為基礎,介紹了can總線的通訊接口的具體設計及其應用。由于采用了集成can控制器的單片機,大大簡化了電路,同時也提高了系統(tǒng)的可靠性。

          2 c8051f040集成的can控制器

          c8051040內(nèi)部集成can控制器,他兼容can技術規(guī)范2.0a和2.0b主要由can內(nèi)核、消息ram(獨立于cip-51的ram)、消息處理單元和控制寄存器組成,圖1所示是c8051f040的內(nèi)部的can總線結構圖。

          圖1中,can內(nèi)核由can協(xié)議控制器和負責消息收發(fā)的串行/并行轉(zhuǎn)換rx/tx移位寄存器組成,消息ram用于存儲消息目標和每個目標的仲裁掩碼。這種can處理器有32個隨意配置為發(fā)送和接收的消息目標,并且每一個消息目標都有他自己的識別掩碼,所有的數(shù)據(jù)傳輸和接收濾波都是由can控制器完成的,而不是由cip-51來完成。can內(nèi)部寄存器中存儲了所有can的控制和配置信息,其中包括控制寄存器、狀態(tài)寄存器、設置波特率的位定時寄存器,測試寄存器、錯誤計數(shù)器和消息接口寄存器。通常can內(nèi)核不能直接訪問消息ram,而必須通過接口寄存器if1或if2來訪問。另外,cip51的sfr并不不能直接訪問can內(nèi)部寄存器的所有單元,其配置can、消息目標、讀取can狀態(tài)以及獲取接收數(shù)據(jù)、傳遞發(fā)送數(shù)據(jù)都由sfr中的6個特殊寄存器來完成,其中can0cn,can0tst和can0sta三個寄存器可直接獲取或修改can控制器中對應的寄存器,而can0dath,can0atl,can0adr三個寄存器主要用來訪問修改其他不能直接訪問的can內(nèi)部寄存器,其中can0adr用來指出要訪問寄存器的地址,ca0dath,can0datl這時就相當于要訪問的16位寄存器的高低字節(jié)的映射寄存器,而對他們的讀寫則相當于所指向寄存器的讀寫。

          圖2給出了cip-51如何訪問can中控制寄存器和每個消息的路徑圖。消息處理單元用于根據(jù)寄存器中的消息來控制can內(nèi)核中移位寄存器和消息ram之間的數(shù)據(jù)傳遞,同時,他還可用來管理中斷的產(chǎn)生。

          3 智能節(jié)點通訊部分的硬件設計

          c8051f040中內(nèi)置can總線協(xié)議控制器,只要外接總線驅(qū)動芯片和適當?shù)目垢蓴_電路就可方便地建立一個實用的can總線智能測控節(jié)點。本文采用philip公司的tja1050t can總線驅(qū)動器,硬件原理圖如圖3所示。

          為了增強can總線節(jié)點的抗干擾能力,可以采取以下措施:

          (1)f040的tx0和rx0并不是直接與tja1050t的txd和rxd相連,而是通過高速光耦6n137后與tja1050t相連,這就很好地實現(xiàn)了總線上各can節(jié)點間的電氣隔離,不過應該特別說明的一點是光耦部分電路采用的兩個電源va和vb必須完全隔離,否則采用光耦也就失去了意義。這些部分雖然增加了節(jié)點的復雜性,但是卻提高了節(jié)點的穩(wěn)定性和安全性。

          (2)tja1050t的canh和canl引腳各自通過1個5ω的電阻與can總線相連,電阻可起到一定的限流作用,保護tja1050t免受過流的沖擊。

          (3)canh和canl與地之間并聯(lián)2個30pf的小電容,可以起到濾除總線上的高頻干擾和一定的防電磁輻射的作用。

          (4)另外可在2根can總線接入端與地之間分別反接1個保護二極管。當can總線有較高的負電壓時,通過二極管的短路可起到一定的過壓保護作用。

          4 智能節(jié)點的通訊軟件設計

          節(jié)點的can通信主要包括系統(tǒng)初始化程序、發(fā)送程序、接收程序等,軟件部分設計的好壞將直接決定系統(tǒng)能否正常工作,對于初次接觸can總線系統(tǒng)的設計人員來說是一個難點,也是一個重點,在本論文中,系統(tǒng)軟件采用結構化程序設計方案,使其具有較好的模塊性和可移植性,對于不同的系統(tǒng)功能或不同的應用環(huán)境,可以方便地進行編程重組。

          4.1 系統(tǒng)的初始化

          初始化程序主要完成對所有的消息對象進行初始化(一般將所有值置零),對can控制寄存器(can0cn)、位定時寄存器(bitreg)進行設置,還要對發(fā)送消息對象和接收消息對象分別進行初始化。其中,位定時寄存器的設置較為復雜,這里使用外部晶振為11.0592mhz,can通信速率為1mb/s,得到bitreg的出初始值為0x2640。主程序中規(guī)定對象初始化、發(fā)送和接收初始化,最后才啟動can處理機制(對bitreg和can0cn初始化),下面為can啟動程序:

          4.2 發(fā)送和接收程序

          發(fā)送程序主要負責把接口寄存器里邊要發(fā)送內(nèi)容寫入到具體的消息對象中,而接收程序所要實現(xiàn)的功能與發(fā)送程序正好相反,接收程序負責把接收到的內(nèi)容從消息對象中讀入接口寄存器中,由于兩者的程序相似,下面給出發(fā)送程序代碼。

          5 結語

          采用內(nèi)部集成了can控制器模塊的微控制器設計現(xiàn)場總線智能結點,不但硬件設計上簡單、可靠、編制相應的軟件時也更方便和簡潔。本文正是采用這種設計方案,詳細介紹了用c8051f040進行can總線智能節(jié)點通訊接口設計時的硬件接口及軟件設計方法。系統(tǒng)的實際運行驗證了設計的正確性與可靠性。



          關鍵詞:

          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();