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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 基于SJA1000的CAN總線接口電路的設(shè)計與實現(xiàn)

          基于SJA1000的CAN總線接口電路的設(shè)計與實現(xiàn)

          作者: 時間:2016-11-28 來源:網(wǎng)絡(luò) 收藏
          0 引 言
          控制器局部網(wǎng)( CAN——Controller Area Network)屬于現(xiàn)場總線的范疇,它是一種有效支持分布式控制或?qū)崟r控制的串行通訊網(wǎng)絡(luò),其總線規(guī)范已被ISO國際標(biāo)準(zhǔn)化組織制定為國際標(biāo)準(zhǔn),并被公認(rèn)為是最有前途的現(xiàn)場總線之一。CAN總線的應(yīng)用范圍遍及從高速網(wǎng)絡(luò)到低成本的多線路網(wǎng)絡(luò),廣泛應(yīng)用于控制系統(tǒng)中的各檢測和執(zhí)行機構(gòu)之間的數(shù)據(jù)通信。
          現(xiàn)場總線領(lǐng)域中, CAN總線得到了計算機芯片商的廣泛支持,他們紛紛推出直接帶有CAN接口的微處理器(MCU)芯片。帶有CAN的MCU芯片總量已經(jīng)達(dá)到1億3千萬片(不一定全部用于CAN總線);因此在接口芯片技術(shù)方面,CAN已經(jīng)遙遙領(lǐng)先于FF、PROFIBUS、LONWORKS等其它所有現(xiàn)場總線。
          現(xiàn)場總線標(biāo)準(zhǔn)及其技術(shù)日益成為國際自動控制領(lǐng)域關(guān)注的一大焦點,其原因是它改變了傳統(tǒng)控制系統(tǒng)的結(jié)構(gòu),形成了全新的網(wǎng)絡(luò)集成分布式控制系統(tǒng)。在我國,現(xiàn)場總線已經(jīng)發(fā)展到推廣應(yīng)用階段,中國已經(jīng)成為各種現(xiàn)場總線激烈爭奪的重要戰(zhàn)場。因此研究現(xiàn)場總線技術(shù)及其產(chǎn)品就顯得尤為重要。
          1 CAN總線技術(shù)的特點
          CAN總線與其它通信網(wǎng)的不同之處有二:一是報文傳送中不包含目標(biāo)地址,它是以全網(wǎng)廣播為基礎(chǔ),各接收站根據(jù)報文中反映數(shù)據(jù)性質(zhì)的標(biāo)識符過濾報文,該收的收下,不該收的棄而不用。其好處是可在線上網(wǎng)下網(wǎng)、即插即用和多站接收;二是特別強化了對數(shù)據(jù)安全性的關(guān)注,滿足控制系統(tǒng)及其它較高數(shù)據(jù)要求的系統(tǒng)需求。CAN具有以下主要技術(shù)特性:
          ( 1)CAN遵從ISO/OSI模型,采用了其中的物理層、數(shù)據(jù)鏈路層與應(yīng)用層。采用雙絞線,通信速率最高可達(dá)到1Mbps/40m,直接傳輸距離最遠(yuǎn)可達(dá)10km/5kbps.同一段總線內(nèi)最多可掛接110個設(shè)備。
          ( 2)CAN的信號傳輸采用短幀結(jié)構(gòu),每一幀有效字節(jié)數(shù)為8個。因而傳輸時間短,受干擾的概率低。當(dāng)節(jié)點發(fā)生嚴(yán)重錯誤時,具有自動關(guān)閉的功能,切斷該節(jié)點與總線的聯(lián)系,使總線上其它節(jié)點不受影響,具有很強的抗干擾能力。
          ( 3)CAN支持多主工作方式,網(wǎng)絡(luò)上任一節(jié)點均可在任何時候主動向其它節(jié)點發(fā)送信息,支持點對點、一點對多點和全局廣播方式接收/發(fā)送數(shù)據(jù),而優(yōu)先級低的節(jié)點則主動停止發(fā)送,從而避免了總線沖突。
          2 CAN總線接口硬件電路的設(shè)計
          硬件電路的設(shè)計主要是 CAN通信控制器與微處理器之間和CAN總線收發(fā)器與物理總線之間的接口電路的設(shè)計。CAN通信控制器是CAN總線接口電路的核心,主要完成CAN的通信協(xié)議,而CAN總線收發(fā)器的主要功能是增大通信距離,提高系統(tǒng)的瞬間抗干擾能力,保護總線,降低射頻干擾(RFI),實現(xiàn)熱防護等。
          2.1 CAN節(jié)點核心器件及其選擇
          目前廣泛流行的 CAN總線器件有兩大類:一類是獨立的CAN控制器,如82C200、SJA1000及Intel82526/82527等,另一類是帶有在片CAN的微控制器,如P8XC582及16位微控制器87C196CA/CB等。本課題選取PHILIPS公司的SJA1000 CAN控制器以及82C250總線收發(fā)器,主要是考慮到SJA1000支持CAN 2.0A/B規(guī)約。而82C250可以支持110個CAN節(jié)點,并且國內(nèi)市場上PHILIPS的產(chǎn)品型號比較多,購買比較方便。
          2.2 CAN總線接口電路
          SJA1000在電路中是一個總線接口芯片,通過它實現(xiàn)上位機與現(xiàn)場微處理器之間的數(shù)據(jù)通信。該電路的主要功能是通過CAN總線接收來自上位機的數(shù)據(jù)進行分析組態(tài)然后下傳給下位機的控制電路實現(xiàn)控制功能,當(dāng)CAN總線接口接收到下位機的上傳數(shù)據(jù),SJA1000就產(chǎn)生一個中斷,引發(fā)微處理器產(chǎn)生中斷,通過中斷處理程序接收每一幀信息并通過CAN總線上傳給上位機進行分析。AT89C51是CAN總線接口電路的核心,其承擔(dān)CAN控制器的初始化、CAN的收發(fā)控制等任務(wù)。CAN總線接口框圖見圖1.

          2.3 節(jié)點主要元件電路原理
          接口主要元件電路原理圖見圖 2,在進行電路設(shè)計時應(yīng)注意以下幾點,否則達(dá)不到預(yù)期的效果。
          ( 1)總線兩端必須接兩個終端匹配電阻R T ,忽略掉它們,會使數(shù)據(jù)通信的抗干擾性及可靠性大大降低。
          ( 2)PCA82C250為CAN控制器和物理總線之間的接口,它可以提供向總線的差動發(fā)送能力和CAN控制器的差動接收能力,TXD和RXD引腳分別發(fā)送經(jīng)過驅(qū)動后的發(fā)送和接收信號。其引腳8(R S )可以選擇2種不同的工作方式:把該引腳直接與地相連,系統(tǒng)將處于高速工作方式,在這種方式下,為避免射頻干擾,建議使用屏蔽電纜作總線;而在波特率較低,總線較短時,一般采用斜率控制方式,上升及下降的斜率取決于R S 的阻值,實踐表明15-200k為R S 較理想的取值范圍,在這種方式下,可以使用雙絞線作總線(本系統(tǒng)采用該工作方式)。

          圖 2 接口主要元件電路原理圖
          ( 3)SJA1000的TX1腳懸空,RX1引腳的電位必須維持在約0.5V CC 上,否則,將不能形成CAN協(xié)議要求的電平邏輯。因本系統(tǒng)傳輸距離近,環(huán)境干擾小,可以不用電流隔離,這樣可以直接把82C250的V REF 端(約為0.5V CC )與SJA1000的RX1相連,從而簡化了電路。
          ( 4)設(shè)計時將SJA1000的CLOCKOUT的時鐘信號接至AT89C51的時鐘電路輸入端,作為AT89C51的外部時鐘輸入,解決了時鐘同步問題;SJA1000中斷輸出信號/INT接至AT89C51的/INT0端,通過中斷方式與AT89C51通信。

          上一頁 1 2 下一頁

          關(guān)鍵詞: SJA1000CAN總線接口電

          評論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁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); })();