亚洲精华国产精华精华液网站,你懂的,娇生惯养4ph归寻(矜以),丰年经继拇中文3与其他教材比较

技術頻道

娓娓工業
您現在的位置: 中國傳動網 > 技術頻道 > 技術百科 > 基于PIC18F458的CAN總線接口設計

基于PIC18F458的CAN總線接口設計

時間:2009-01-04 13:34:12來源:zhangting

導語:?can通信的核心芯片是can控制器,can的通信協議主要是由它完成的,它可以實現物理層和數據鏈路層的所有功能。
1 引言 在ff、lonworks、profibus、can、hart等主流現場總線工業通訊技術之中,can(controller area network,又稱控制器局域網)總線除了具備現場總線的開放式、互操作性、數字化通訊等特點外,還具有以下特點:(1)以多主機方式工作;(2)can上的節點信息分不同的優先級,可滿足不同的實時要求;(3)采用非破壞性總線仲裁技術,節省了總線沖突仲裁時間;(4)采用短幀結構,傳輸時間短,受干擾率降低,具有極好的檢錯效果;(5)每幀信息都有crc校驗及其它檢錯措施,數據出錯率極低;(6)通信介質可靈活地選擇;(7)can上的節點數高達110個;(8)有很高的可靠性和性能價格比等。can總線的這些特點使得其能同時滿足過程控制和制造業自動化的需求,因而can總線的研究與應用已成為工業數據總線領域的熱點。在總線系統中,傳統的4-20ma的模擬輸入信號被數字信號取代,設備狀態、故障、參數等信息通過現場總線傳送給上位機完成遠程控制及遠程參數化,具有can總線接口的各種儀器、儀表設備通過can適配卡可實現與上位機的can總線通訊。 2 硬件設計 can通信的核心芯片是can控制器,can的通信協議主要是由它完成的,它可以實現物理層和數據鏈路層的所有功能。can控制器有許多芯片結構,獨立芯片的例如philips的sja1000,西門子的82c900等,還有和微處理器做在一起的嵌入型結構。本項目根據智能化、可靠性高、抗干擾能力強、成本低等原則,can控制器采用microchip公司的pic18f458單片機內嵌can控制器方案。pic18f458功能強大,1536k片內數據ram、3個16位定時/計數器、1個8位看門狗wdt定時器、8路模擬輸入的片內adc。看門狗wdt定時器用來監視程序的運行狀態,一旦cpu由于意外原因偏離正常程序之外,wdt將強行把cpu復位,使其返回正常程序。pic18f458can模塊除遵循can總線的協議,同時也有自己的特點,主要包括:(1)支持can協議can2.0a、can2.0b;(2)支持標準幀、擴展幀、遠程幀、過載幀、錯誤幀等;(3)2個接收緩沖器、3個發送緩沖器;(4)6個接收過濾器;(5)2個屏蔽過濾器。選用功能強大的pic18f458單片機,大大簡化了電路設計,節省了成本。 can收發器即總線驅動器是can控制器與物理總線之間的接口,可以提供對總線的差動發送和接受功能,can總線驅動器種類有82c250/251、tja1040、tja1050等多種,適用于不同場合。philips公司的高速總線驅動器82c50,它采用雙線差分驅動,抗干擾強。can總線驅動器與單片機接線如圖1所示,為實現總線上節點之間的電氣隔離 can驅動器通過高速光藕6n137與pic18f458進行相連。在can總線兩端的can接頭上接入120歐匹配電阻,以消除阻抗不連續時的反射現象,總線與地各自并聯一個30pf的小電容,以防電磁輻射和抗高頻干擾。注意在實際應用中,節點之間的電源也要隔離,+5v隔離后才能接vcc,否則也會有干擾。 [align=center] 圖1 82c250與pic18f458接線圖[/align] 3 軟件設計 軟件采用mplab ide7.5開發平臺及mcc18軟件,為了有利于程序的移植和修改可將程序設計成能相對獨立的子程序。can總線的各種協議已經被集成在pic18f458的can模塊里面,只要對相應的寄存器進行操作就可完成can系統通信。pici8f458的can通信程序主要包括can初始化、接受子程序、發送子程序等。can初始化主要對can進行配置,設置發送郵箱、接收郵箱標識符及初始化數據,設置波特率、can工作模式,初始化接受濾波器和接受屏蔽。接受使用中斷方式,發送采用查詢方式。在can總線上的所有節點必須有相同的波特率,設波特率fosc=4mhz,同步時間段sync_seg=1tq,傳輸時間段prop_seg=1tq,相位緩沖時間段1phase_seg1=3tq,相位緩沖時間段2phase_seg2=3tq,標稱位時間=8tq,位率=0.125mhz。在can總線通訊中,can的初始化非常重要。 3.1 can初始化子程序   void intcan()   {trisb=(trisb|0x08)&0xfb; /* 設置rb2為輸出,rb3為輸入*/   cancon=0x80; /*請求配置*/   while((canstat&0x80)==0) /*配置方式*/   {   ;   } /*等待進入配置模式*/   brgcon1=0x01; /*設置波特率*/   brgcon2=0x90;   brgcon3=0x42;   txb0con=0x03; /*設置優先級*/   txb0sidl=can_biaosf_l&0xe0; /*標準標識符*/   txb0sidh= can_ biaosf _h ;   txb0dlc=0x08; /*數據長度1字節*/   txb0d0=0x00;   txb0d1=0x00;   rxb0sidl= can_ biaosf _l&0xe0;/*標準標識符*/   rxb0sidh= can_ biaosf _h ;   rxb0con=0x20; / *接受有效的標準標識符信息*/   rxb0dlc=0x08; /*數據長度1字節*/   rxb0d0=0x00; /*初始數據*/   rxb0d1=0x00;   rxb0d2=0x00;   rxf0sidh=can_ biaosf _h;/*初始化接受濾波器和接受屏蔽*/   rxf0sidl=can_ biaosf _l;   rxm0sidh=0xff;   rxm0sidl=0xe0;   cancon=0x40; /*正常模式*/   while((canstat&0x40)!=0) /*檢測配置完成*/   {   ;   }   pir3=0x00; /*初始化can中斷*/   pie3=0x01;   ipr3=0x01;   } 3.2 接收中斷子程序   void interruphandlerhigh()   {   if(pir3bits.rxb0if==1) /*接收can中斷*/    {    can_flag=1; /*置接收中斷標志*/    pir3bits.rxb0if=0; /*清接收中斷標志*/   rxb0conbits.rxful=0; /*接收*/   }   } 3.3 發送子程序   void fasong()   txb0d0=clz; /*clz為發送數值*/   txb0con=txb0con|0x08; /*發送*/   }   寫好這三部分程序,就很容易寫出通訊程序了。 4 結束語 本項目設計可用于各種電氣設備形成can接口,也可在此基礎上繼續開發,加入設備的控制算法,對設備進行總線化智能化改造。利用pic18f458設計的can總線接口進行了dkj直行程電動執行機構的智能化改造,與上位機實現了can總線通訊,試驗效果理想。

標簽:

點贊

分享到:

上一篇:基于多傳感器融合的壓力測量...

下一篇:微能WIN-V63矢量控制變頻器在...

中國傳動網版權與免責聲明:凡本網注明[來源:中國傳動網]的所有文字、圖片、音視和視頻文件,版權均為中國傳動網(www.siyutn.com)獨家所有。如需轉載請與0755-82949061聯系。任何媒體、網站或個人轉載使用時須注明來源“中國傳動網”,違反者本網將追究其法律責任。

本網轉載并注明其他來源的稿件,均來自互聯網或業內投稿人士,版權屬于原版權人。轉載請保留稿件來源及作者,禁止擅自篡改,違者自負版權法律責任。

網站簡介|會員服務|聯系方式|幫助信息|版權信息|網站地圖|友情鏈接|法律支持|意見反饋|sitemap

傳動網-工業自動化與智能制造的全媒體“互聯網+”創新服務平臺

網站客服服務咨詢采購咨詢媒體合作

Chuandong.com Copyright ?2005 - 2025 ,All Rights Reserved 深圳市奧美大唐廣告有限公司 版權所有
粵ICP備 14004826號 | 營業執照證書 | 不良信息舉報中心 | 粵公網安備 44030402000946號

主站蜘蛛池模板: 萍乡市| 霍林郭勒市| 普洱| 天等县| 揭阳市| 马边| 安国市| 寻甸| 临汾市| 安图县| 澎湖县| 济宁市| 四子王旗| 凌海市| 阿合奇县| 商水县| 高尔夫| 鹤山市| 勐海县| 南安市| 恩施市| 哈尔滨市| 江门市| 建始县| 淮安市| 万荣县| 宁晋县| 元阳县| 茶陵县| 马山县| 内乡县| 沂源县| 原平市| 麻城市| 武安市| 德保县| 文安县| 穆棱市| 柳河县| 奉化市| 玛多县|