版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、CAN總線系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)在現(xiàn)場(chǎng)總線概念的出現(xiàn)到現(xiàn)在的近20年時(shí)間里,已經(jīng)出現(xiàn)了好幾種現(xiàn)場(chǎng)總線技術(shù)并走向成熟。其中CAN總線已被公認(rèn)為幾種最有前途的現(xiàn)場(chǎng)總線之一。CAN是一種由帶有CAN控制器組成的高性能串行數(shù)據(jù)局域通信網(wǎng)絡(luò),是國(guó)際上應(yīng)用最廣泛的現(xiàn)場(chǎng)總線之一。最初,CAN被設(shè)計(jì)作為汽車環(huán)境中的微控制器通信,在車載各電子控制裝置ECU之間交換信息,形成汽車電子控制網(wǎng)絡(luò)。由于其具有通信速度快、可靠性高和性能價(jià)格比好等突出優(yōu)點(diǎn),它正越拉越廣泛地應(yīng)用于汽車、機(jī)械工業(yè)、紡織機(jī)械、農(nóng)業(yè)用機(jī)械、機(jī)器人、數(shù)控機(jī)床、醫(yī)療器械、家用電器及傳感器等領(lǐng)域。圖1所示是典型的CAN總線節(jié)點(diǎn)的系統(tǒng)框圖。系統(tǒng)硬件設(shè)計(jì)SJA1
2、000獨(dú)立CAN控制器是PHILIPS公司PCA82C200CAN控制器的替代產(chǎn)品,它是在完全兼容PCA82C200的基礎(chǔ)上,增加了一種新的工作模式PeliCAN,SJA1000完全支持具有很多新特性的CAN2.0B協(xié)議。SJA1000的工作模式通過其內(nèi)部的時(shí)鐘分頻寄存器中的CAN模式為來選擇。SJA1000可以支持多種為處理器的時(shí)序特性,如Intel模式或Motorla模式,SJA1000與微處理器的接口非常簡(jiǎn)單,微處理器以訪問外部存儲(chǔ)器的方式來訪問SJA1000。TJA1050是控制器局域網(wǎng)CAN協(xié)議控制器和物理總線之間的接口,TJA1050可以為總線提供不同的發(fā)送性能,為CAN控制器提供
3、不同的接收性能。TJA1050主要有以下特征:完全符合ISO 11898標(biāo)準(zhǔn),最高速到達(dá)1Mb/s,輸入級(jí)3.3V以及5V器件兼容,至少可以連接110個(gè)節(jié)點(diǎn)。本設(shè)計(jì)的微處理器為89C51負(fù)責(zé)初始化SJA1000及通過控制SJA1000實(shí)現(xiàn)數(shù)據(jù)的接收和發(fā)送等通信任務(wù),系統(tǒng)電路圖如圖2所示。CAN控制器SJA1000的數(shù)據(jù)線AD0AD7連接到51單片機(jī)的P0口,連接到基址為0xFA00的外部存儲(chǔ)器片選信號(hào),當(dāng)訪問地址0xFA000xFA31時(shí),CPU可對(duì)SJA1000執(zhí)行相應(yīng)的讀寫操作。SJA1000的、分別與51對(duì)應(yīng)的引腳相連,接51的使51可以通過中斷方式訪問SJA1000。系統(tǒng)軟件設(shè)計(jì)本設(shè)計(jì)
4、的系統(tǒng)由4個(gè)節(jié)點(diǎn)組成,一個(gè)節(jié)點(diǎn)由上位機(jī)通過并口轉(zhuǎn)CAN總線的數(shù)據(jù)收發(fā)器構(gòu)成,另外3個(gè)節(jié)點(diǎn)由圖2所示的單片機(jī)CAN總線收發(fā)系統(tǒng)構(gòu)成。單片機(jī)系統(tǒng)每秒發(fā)送一幀(8個(gè)字節(jié))數(shù)據(jù)。連接上位機(jī)的CAN總線收發(fā)器有相應(yīng)的上位機(jī)測(cè)試軟件支持,本文主要介紹單片機(jī)CAN總線收發(fā)器的程序設(shè)計(jì)。圖3是下位機(jī)軟件的流程圖。系統(tǒng)設(shè)計(jì)的部分代碼如下:main() Sja_1000_Init(); /初始化SJA1000Init_Cpu(); /初始化CPUInit_T0(); /初始化定時(shí)器flag_init=0x00;while(1) if(rcv_flag) /rcv_flag為接受標(biāo)志位,有接收則單片機(jī)進(jìn)行處理 rc
5、v_flag=0; BCAN_DATA_RECEIVE(rcv_data);BCAN_CMD_PRG(0X04); disp_rec(); if(flag_sec) /定時(shí)中斷標(biāo)志為,定時(shí)時(shí)間到則發(fā)送數(shù)據(jù)幀 flag_sec=0; send_data0=0xaa; send_data1=0x08; send_data2=DA1;send_data3=DA2;send_data4=DA3;send_data5=DA4;send_data6=DA5;send_data7=DA6;send_data8=DA7;send_data9=DA8; BCAN_DATA_WRITE(send_data); B
6、CAN_CMD_PRG(0X01); if(err_flag) err_flag=0; disp_err(); Sja_1000_Init(); display(a); /循環(huán)顯示接受數(shù)據(jù)SJA1000的初始化過程包括申請(qǐng)進(jìn)入復(fù)位狀態(tài),設(shè)置總線波特率,設(shè)置輸出方式,開放錯(cuò)誤中斷、接受和發(fā)送中斷。在進(jìn)行數(shù)據(jù)發(fā)送時(shí)數(shù)據(jù)包前兩個(gè)字節(jié)0Xaa、0X08為描述符,包括11位長(zhǎng)的ID(標(biāo)志符)1位RTR4位描述數(shù)據(jù)長(zhǎng)度的DLC共16 位。BCAN_DATA_RECEIVE(rcv_data),為89C51對(duì)SJA1000的讀數(shù)據(jù)函數(shù)其具體函數(shù)定義:bit BCAN_DATA_RECEIVE(unsigne
7、d char *RcvDataBuf) unsigned char TempCount; SJA_BCANAdr = REG_STATUS; /訪問地址指向狀態(tài)寄存器 if(*SJA_BCANAdr&0x01)=0) /判斷報(bào)文是否有效 return 1; SJA_BCANAdr = REG_RxBuffer2; /訪問地址指向接收緩沖區(qū)2 if(*SJA_BCANAdr&0x10)=0) /如果是數(shù)據(jù)幀 TempCount=(*SJA_BCANAdr& 0x0f)+2; /計(jì)算報(bào)文中數(shù)據(jù)的個(gè)數(shù) else TempCount=2; SJA_BCANAdr = REG_RxBuffer1; /訪
8、問地址指向接收緩沖區(qū)1 memcpy(RcvDataBuf, SJA_BCANAdr,TempCount);/讀取接收緩沖區(qū)的報(bào)文 return 0;此函數(shù)僅限于CAN控制器接受數(shù)據(jù),返回值如果為0表示接受成功,如果為1表示接受失敗。BCAN_DATA_WRITE(send_data)函數(shù)是89C51對(duì)SJA1000的寫數(shù)據(jù)函數(shù)其具體定義如下:bit BCAN_DATA_WRITE(unsigned char *SendDataBuf) unsigned char TempCount; SJA_BCANAdr = REG_STATUS; /訪問地址指向狀態(tài)寄存器 if(*SJA_BCANAdr
9、&0x08) = 0) /判斷上次發(fā)送是否完成 return 1; if(*SJA_BCANAdr&0x04)=0) /判斷發(fā)送緩沖區(qū)是否鎖定 return 1; SJA_BCANAdr = REG_TxBuffer1; /訪問地址指向發(fā)送緩沖區(qū)1 if(SendDataBuf1&0x10)=0) /判斷RTR,從而得出是數(shù)據(jù)幀還是遠(yuǎn)程幀 TempCount =(SendData Buf1&0x0f)+2; /輸入數(shù)據(jù)幀 else TempCount =2; /遠(yuǎn)程幀 memcpy(SJA_BCANAdr,SendDataBuf,TempCount); return 0;此函數(shù)將待發(fā)送的特定幀
10、各式的數(shù)據(jù),送入SJA1000發(fā)送緩存區(qū)中,然后啟動(dòng),函數(shù)返回0表示將數(shù)據(jù)成功的送至發(fā)送緩沖區(qū),返回1表示上一次的數(shù)據(jù)正在發(fā)送。系統(tǒng)組網(wǎng)相對(duì)容易只需把各個(gè)節(jié)點(diǎn)掛在同一條雙絞線上即可,啟動(dòng)上位機(jī)的CAN收發(fā)器,用來監(jiān)視總線數(shù)據(jù)狀態(tài)。每當(dāng)啟動(dòng)一個(gè)下位機(jī)CAN收發(fā)器,上位機(jī)的測(cè)試軟件就可以每隔一秒鐘收到由同一CAN收發(fā)器發(fā)送的數(shù)據(jù)幀。實(shí)驗(yàn)結(jié)果顯示當(dāng)3臺(tái)下位機(jī)CAN總線同時(shí)發(fā)數(shù)時(shí)數(shù)據(jù)接收端沒有數(shù)據(jù)丟失和總線沖突現(xiàn)象。結(jié)語現(xiàn)場(chǎng)總線有著巨大的發(fā)展?jié)摿?,它將給自動(dòng)控制領(lǐng)域的變革帶來深遠(yuǎn)的影響。我們?cè)O(shè)計(jì)的CAN總線收發(fā)器具有通用性,在本系統(tǒng)設(shè)計(jì)的基礎(chǔ)上只需要相應(yīng)的修改數(shù)據(jù)傳輸協(xié)議即可應(yīng)用于各個(gè)CAN總線的數(shù)傳系統(tǒng)。參考文獻(xiàn):1 陳立元主編. Visual Basic實(shí)現(xiàn)串并行通信
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 改擴(kuò)建工程施工合同的融資方案3篇
- 插畫師勞動(dòng)合同樣本3篇
- 散熱器招標(biāo)文件的合同簽訂流程指導(dǎo)3篇
- 教育培訓(xùn)項(xiàng)目中標(biāo)合同3篇
- 旅游大巴車租賃合同范本3篇
- 放心供應(yīng)商零件訂購(gòu)合同3篇
- 工業(yè)烤箱安裝工程合同書3篇
- 工業(yè)往來貸款協(xié)議3篇
- 房屋買賣委托書填寫指南3篇
- 旅游合同范本集合3篇
- 組織架構(gòu)圖模板課件講義
- 信用證常用條款中英文對(duì)照
- 拔罐技術(shù)操作流程圖
- 合力為科技hlw8012應(yīng)用設(shè)計(jì)v2.31hlw8012參數(shù)計(jì)算說明
- 《資本經(jīng)營(yíng)》形成性考核作業(yè)1及答案
- 專題講座2022年《英語》新課標(biāo)PPT課件解析《義務(wù)教育英語課程標(biāo)準(zhǔn)(2022年版)》
- 【課件】Unit3ReadingforWriting寫作指導(dǎo)課件課件-2021-2022學(xué)年高中英語人教版(2019)必修第二冊(cè)
- PLC課程設(shè)計(jì)說明書旋轉(zhuǎn)式濾水器電氣控制系統(tǒng)設(shè)計(jì)
- 高效全自動(dòng)凈水器操作使用說明
- 伯努利方程逐段試算法求水庫(kù)回水
- ppt素材――小圖標(biāo) 可直接使用
評(píng)論
0/150
提交評(píng)論