技術(shù)頻道

娓娓工業(yè)
您現(xiàn)在的位置: 中國(guó)傳動(dòng)網(wǎng) > 技術(shù)頻道 > 技術(shù)百科 > 基于PIC18F458的CAN總線接口設(shè)計(jì)

基于PIC18F458的CAN總線接口設(shè)計(jì)

時(shí)間:2009-01-04 13:34:12來源:zhangting

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

標(biāo)簽:

點(diǎn)贊

分享到:

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

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

中國(guó)傳動(dòng)網(wǎng)版權(quán)與免責(zé)聲明:凡本網(wǎng)注明[來源:中國(guó)傳動(dòng)網(wǎng)]的所有文字、圖片、音視和視頻文件,版權(quán)均為中國(guó)傳動(dòng)網(wǎng)(www.treenowplaneincome.com)獨(dú)家所有。如需轉(zhuǎn)載請(qǐng)與0755-82949061聯(lián)系。任何媒體、網(wǎng)站或個(gè)人轉(zhuǎn)載使用時(shí)須注明來源“中國(guó)傳動(dòng)網(wǎng)”,違反者本網(wǎng)將追究其法律責(zé)任。

本網(wǎng)轉(zhuǎn)載并注明其他來源的稿件,均來自互聯(lián)網(wǎng)或業(yè)內(nèi)投稿人士,版權(quán)屬于原版權(quán)人。轉(zhuǎn)載請(qǐng)保留稿件來源及作者,禁止擅自篡改,違者自負(fù)版權(quán)法律責(zé)任。

網(wǎng)站簡(jiǎn)介|會(huì)員服務(wù)|聯(lián)系方式|幫助信息|版權(quán)信息|網(wǎng)站地圖|友情鏈接|法律支持|意見反饋|sitemap

中國(guó)傳動(dòng)網(wǎng)-工業(yè)自動(dòng)化與智能制造的全媒體“互聯(lián)網(wǎng)+”創(chuàng)新服務(wù)平臺(tái)

網(wǎng)站客服服務(wù)咨詢采購(gòu)咨詢媒體合作

Chuandong.com Copyright ?2005 - 2024 ,All Rights Reserved 版權(quán)所有 粵ICP備 14004826號(hào) | 營(yíng)業(yè)執(zhí)照證書 | 不良信息舉報(bào)中心 | 粵公網(wǎng)安備 44030402000946號(hào)