版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、基于CAN總線的樓宇智能環(huán)境智能監(jiān)測系統(tǒng)設(shè)計某樓宇有多個房間(如下圖所示),其中一個房間可作為集中監(jiān)控室,每個房間都安裝溫度和濕度傳感器,并通過CAN總線監(jiān)測到的溫度、濕度信號發(fā)送到監(jiān)控室中的上位機PC用于隨時監(jiān)控各房間的環(huán)境狀況。1) 介紹CAN總線網(wǎng)絡(luò)層次結(jié)構(gòu)。CAN總線與簡單總線邏輯不同,CAN是一種復(fù)雜邏輯的總線結(jié)構(gòu)。參照ISO/OSI標(biāo)準(zhǔn)模型,CAN分為數(shù)據(jù)鏈路層和物理層。而數(shù)據(jù)鏈路層又包括邏輯鏈路子層LLC(Logic Link Control)和媒體訪問控制子層MAC(Medium Access Control)。CAN的通信參考模型如圖一所示。1. 物理層在物理層中定義實際信號
2、的傳輸方法,包括位的編碼和解碼、位的定時和同步等內(nèi)容,作用是定義不同節(jié)點之間根據(jù)電氣屬性如何進行位的實際傳輸。在物理連接上,CAN總線結(jié)構(gòu)提供兩個引腳-CANH和CANL,總線通過CANH和CANL之間的差分電壓完成信號的位傳輸。2. 邏輯鏈路子層LLC邏輯鏈路子層LLC的主要功能是,對總線上傳輸?shù)膱笪膶嵭薪邮諡V波,判斷總線上傳輸?shù)膱笪氖欠衽c本節(jié)點有關(guān),哪些報文應(yīng)該為本節(jié)點接收;對報文的接收予以確認(rèn);為數(shù)據(jù)傳送和遠程數(shù)據(jù)請求提供服務(wù);當(dāng)丟失仲裁或被出錯干擾時,邏輯鏈路子層具有自動重發(fā)的恢復(fù)管理功能等。3. 媒體訪問控制子層MACMAC子層是CAN協(xié)議的核心。它負責(zé)執(zhí)行總線仲裁、報文成幀、出錯檢
3、測、錯誤標(biāo)定等傳輸控制規(guī)則。數(shù)據(jù)鏈路層邏輯鏈路子層LLC接收濾波超載通州恢復(fù)管理媒體訪問控制層MAC數(shù)據(jù)封裝/拆裝幀編碼(填充/解除填充)媒體訪問管理錯誤檢測出錯標(biāo)定應(yīng)答串行化/解除串行化物理層位編碼/解碼位定時同步驅(qū)動器/接收器特性連接器圖一 CAN的通信參考模型2) 介紹CAN總線通訊協(xié)議的報文格式。根據(jù)CAN報文幀的不同用途,可以把CAN報文幀劃分為以下4種類型,數(shù)據(jù)幀,遠程幀,出錯幀,超載幀。1. 數(shù)據(jù)幀數(shù)據(jù)幀攜帶數(shù)據(jù)從發(fā)送器至接收器??偩€上傳輸?shù)拇蠖嗍沁@種幀,從標(biāo)識符長度上,又可以把數(shù)據(jù)幀分為標(biāo)準(zhǔn)幀(11位標(biāo)識符)和擴展幀(29位標(biāo)識符)。數(shù)據(jù)幀由7個不同的位場組成:幀起始、仲裁場、
4、控制場、數(shù)據(jù)場、CRC 場、應(yīng)答場、幀結(jié)束。其中,數(shù)據(jù)場的長度為08個字節(jié)。標(biāo)識符位于仲裁場中,報文接收節(jié)點通過標(biāo)識符進行報文濾波。數(shù)據(jù)幀結(jié)構(gòu)如圖二所示。圖二 數(shù)據(jù)幀結(jié)構(gòu)2. 遠程幀由總線上的節(jié)點發(fā)出,用于請求其他節(jié)點發(fā)送具有同一標(biāo)識符的數(shù)據(jù)幀。當(dāng)某個節(jié)點需要數(shù)據(jù)時,可以發(fā)送遠程幀請求另一節(jié)點發(fā)送相應(yīng)數(shù)據(jù)幀。與數(shù)據(jù)幀相比,遠程幀沒有數(shù)據(jù)場。遠程幀結(jié)構(gòu)如圖三所示。圖三 遠程幀結(jié)構(gòu)3. 出錯幀任何單元,一旦檢測到總線錯誤就發(fā)出錯誤幀。錯誤幀由兩個不同的場組成,第一個場是由不同站提供的錯誤標(biāo)志的疊加(錯誤標(biāo)志),第二個場是錯誤界定符。出錯幀結(jié)構(gòu)如圖四所示。圖四 出錯幀結(jié)構(gòu)4. 超載幀超載幀用于在先行
5、的和后續(xù)的數(shù)據(jù)幀(或遠程幀)之間提供附加延時。超載幀包括兩個場:超載標(biāo)志和超載界定符。超載幀結(jié)構(gòu)如圖五所示。圖五 超載幀結(jié)構(gòu)3) 在總線上傳輸?shù)膱笪囊詭Y(jié)構(gòu)進行傳輸,與CAN總線傳輸相關(guān)的關(guān)鍵技術(shù)術(shù)是什么?實現(xiàn)過程是什么?答:在CAN系統(tǒng)中為保證報文傳輸?shù)恼_性,需要對通信過程進行差錯控制。目前常用的方法是反饋重發(fā),即一旦收到接收端發(fā)出的出錯信息,發(fā)送端便自動重發(fā),此時的差錯控制只需要檢錯功能。常用的檢錯碼有兩類:奇偶校驗碼和循環(huán)冗余校驗碼。奇偶校驗碼是一種最常見的檢錯碼,其實現(xiàn)方法簡單,但檢錯能力較差;循環(huán)冗余校驗碼的編碼也很簡單且誤判率低,所以在通信系統(tǒng)中獲得了廣泛的應(yīng)用。下面介紹網(wǎng)絡(luò)中循
6、環(huán)冗余校驗碼(即CRC碼)的原理和實現(xiàn)方法。1、 CRC碼檢錯的工作原理CRC碼檢錯是將被處理報文的比特序列當(dāng)作一個二進制多項式A(×)的系數(shù),該系數(shù)除以發(fā)送方和接收方預(yù)先約定好的生成多項式g(×)后,將求得的余數(shù)p(×)作為CRC校驗碼附加到原始的報文上,并一起發(fā)給接收方。接收方用同樣的g(×)去除收到的報文B(×),如果余數(shù)等于p(×),則傳輸無誤(此時A(×)和B(×)相同);否則傳輸過程中出錯,由發(fā)送端重發(fā),重新開始CRC校驗,直到無誤為止。 上述校驗過程中有幾點需注意:在進行CRC計算時,采用二進制(模2
7、)運算法,即加法不進位,減法不借位,其本質(zhì)就是兩個操作數(shù)進行邏輯異或運算;在進行CRC計算前先將發(fā)送報文所表示的多項式A(×)乘以×n,其中為生成多項式g(×)的最高冪值。對二進制乘法來講,A(×)·×n就是將A(×)左移位,用來存放余數(shù)(×),所以實際發(fā)送的報文就變?yōu)?×)·×np(×);生成多項式g(×)的首位和最后一位的系數(shù)必須為。 目前已經(jīng)有多種生成多項式被列入國際標(biāo)準(zhǔn)中,如:CRC-4、CRC-12、CRC-16、CCITT-16、CRC-32等。CAN總
8、線中采用的生成多項式為g(×)×15+×14+×10+×8+×7+4+×3+1??梢钥闯?,CAN總線中的CRC校驗采用的多項式能夠校驗七級,比一般CRC校驗(CRC-4、CRC-12、CRC-16等)的級數(shù)(二五級)要高許多,因而它的檢錯能力很強,誤判率極低,成為提高數(shù)據(jù)傳輸質(zhì)量的有效檢錯手段。2、 CRC序列計算方法多項式g(×)除法的余數(shù)就是發(fā)送到總線上的CRC序列。為了實現(xiàn)這個功能,可以使用15位的移位寄存器-CRC_RG(14 : 0)。如果NXTBIT指示位流的下一位,那么從幀的起始到
9、數(shù)據(jù)末尾都由沒有填充的位順序給定。CRC序列的計算如下:CRC_RG=0; /初始化移位寄存器 REPEAT CRCNXT = NXTBIT EXOR CRC_RG(14); /異或運算 CRC_RG(14 : 1)= CRC_RG(13 : 0); /寄存器左移1位 CRC_RG(0)=0; IF CRCNXT THEN CRC_RG(14 : 0)=CRC_RG(14 : 0)EXOR(H) END IFUNTIL(CRC序列開始或有一錯誤條件)4) 進行測量結(jié)點的硬件設(shè)計(基于AT89S51、SJA1000的CAN總線智能結(jié)點的總體設(shè)計)。SJA1000在電路中是一個總線接口芯片,通過它
10、實現(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總線上傳給上位機進行分析。AT89S51是CAN總線接口電路的核心,其承擔(dān)CAN控制器的初始化、CAN的收發(fā)控制等任務(wù)。1、 單片機AT89S51的選取:1) 4k Bytes Flash片內(nèi)程序存儲器;2)128 bytes的隨機存取數(shù)據(jù)存儲器(RAM);3)32個外部雙向輸入/輸出(I/O)口;4)6個中斷源;5)2個16
11、位可編程定時器/計數(shù)器;6)2個全雙工串行通信口;7)片內(nèi)振蕩器和時鐘電路;8)全靜態(tài)工作:0Hz-33MHz;9)可編程串行通道;10) 低功耗的閑置和掉電模式。在設(shè)計電路時要注意:總線兩端必須接涼的終端匹配電阻;SJA1000的TX1引腳的電位必須維持在約0.5V上;將SJA1000的CLOCKOUT的時鐘信號接至AT89S51的時鐘電路輸入端。故其中的部分接線按以下說明來接:CAN總線控制器SJA1000 AD0AD7連接到AT89S51的P0口,片選段CS非連接到AT89S51的P2.7,P2.7為1時,CPU外存儲器可選中SJA1000,CPU通過這些地址就可對SJA1000執(zhí)行相應(yīng)
12、的讀/寫操作。SJA1000的RD非、WR非、ALE分別于單片機AT89S51對應(yīng)的引腳相連。由于SJA1000是低電平復(fù)位,單片機AT89S51是高電平復(fù)位,因此兩者的復(fù)位電路的設(shè)計也不同。SJA1000的11腳接高電平,選擇Intel的二分頻模式。16腳的中斷INT非接到單片機相應(yīng)的外部中斷0的輸入腳INT0非。5) 進行硬件設(shè)計,包括AT89S51編程,CAN通訊協(xié)議等(CAN結(jié)點初始化,報文發(fā)送和報文接收三部分的設(shè)計作一個描述)。1、串口初始化:1)、確定T1的工作方式(方式2:編程TMOD=0x20)。2)、計算T1的初值,裝載TH1,TL1(T1:0xFD)。3)、啟動T1(編程T
13、CON中的TR1位)。4)、確定串行口控制(編程SCON寄存器);5)、在中斷方式工作時,要進行中斷設(shè)置(編程IE,IP寄存器)。2、程序1)、主程序(單片機)#include<reg52.h>Unsigned char has_r,rec_c;Void main()TMOD=0x20; /設(shè)T1工作方式位方式2TH1=0xFD; TL1=0xFD;TR1=1; /打開T1REN=1; /串口允許接收SM0=0; /設(shè)置方式1SM1=1;SM2=0;EA=1; /開串行總中斷ES=1; /開串行中斷While(1)if(has_r=1)ES=0; /關(guān)串行中斷has_r=0;SBU
14、F=rec_c;while(!TI)TI=0;ES=1;Void ser() interrupt 4 /接收中斷RI=0; /接收中斷標(biāo)志位清0Rec_c=SBUF;Has_r=1; /接收完成標(biāo)志2)、CAN控制器SJA1000的初始化程序MOV DPTR,#MODE ;模式寄存器MOV A,#09H ;進入復(fù)位模式,對SJA1000進行初始化MOV DPTR,AMOV DPTR,#CDR ;時鐘分頻寄存器MOV A,#88HMOVX DPTR,ANOV DPTR,#IFR ;中斷允許寄存器MOV A,#0DH ;開放發(fā)送中斷、溢出中斷MOVX DPTR,AMOV DPTR,#AMR ;驗收
15、屏蔽寄存器MOV R6,#4MOV R0,#DAMRAMRINI: MOV A,R0MOVX DPTR,A ;驗收屏蔽寄存器賦初值INC DPTRDJNZ R6,AMRINIMOV DPTR,#ACR ;驗收代碼寄存器MOV R6,#4MOV R0,#DACRACRINI: MOV A,R0MOVX DPTR,A ;驗收代碼寄存器賦初值INC DPTRDJNZ R6,ACRINIMOV DPTR,#BTR0 ;總線定時寄存器0MOV A,#03HMOVX DPTR,AMOV DPTR,#BTR1 ;總線定時寄存器1MOV A,#0FFH ;設(shè)置波特率MOVX DPTR,AMOV DPTR,#0
16、CH ;輸出控制寄存器MOV A,#0AAHMOVX DPTR,AMOV A,#0 ;設(shè)置接收緩存器起始地址MOVX DPTR,AMOV DPTR,#TXERR ;發(fā)送錯誤計數(shù)寄存器MOV A,#0 ;清除發(fā)送錯誤計數(shù)寄存器MOVX DPTR,AMOV DPTR,#ECC ;錯誤代碼捕捉寄存器MOVX A,DPTR ;清除錯誤代碼捕捉寄存器MOV DPTR,#MODE ;模式寄存器MOV A,#08H ;設(shè)置單濾波接收方式,并返回MOVX DPTR,AREI3)、SJA1000發(fā)送程序Void CanSend (unsigned char * buf DATA; Unsigned char d
17、atalen) /Can設(shè)備發(fā)送函數(shù)unsigned int sja_addr;unsigned char j=0,temp;unsigned int n;sja_addr=SJA_EFF;SendBufInfo=datalen;WR_SJA(sja_addr.+; sendBufInfo)for(j=0, j<2, j+)WR_SJA(sja_addr+j,*(SendBufId+j);unsigned char sendBufId2=0x07,0x20 ; for(j=0, j<datalen, j+)WR_SJA(sja_addr+2+j,*(bufDATA+j); WR_S
18、JA(sja_CMR,0x03);for(n=0,n<m SendDelay,n+)temp=RD_SJA(SJA_SR);#define SJA_SR 2 if(temp 8c 0x08)=0x08)for (n=0,n<300,n+); break;Void WR_SJA(unsigned char sja_addr,unsigned char sja_date)ALE_CAN=1 /開啟地址鎖存允許將I/O口的地址鎖存P0=sja_addr;delay2 (3);ALE_CAN=0 /關(guān)閉地址鎖存,改為發(fā)送數(shù)據(jù)有效delay2 (1);CS_CAN=0;WR_CAN=0;P0=sja_dataDelay2 (4)WR_CAN=1; /恢復(fù)到操作前的狀態(tài),避免影響單片機對SJA1000的該操作CS_CAN=1;ALE_CAN=0; 4)、SJA1000中斷接收程序Void can_rx_isr(void)interr
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 智能辦公時代下的教師技能需求分析
- 老年人家庭醫(yī)療護理常識全解析
- 跨領(lǐng)域合作學(xué)校對外交流的多元發(fā)展
- 智慧教育如何用科技助力小學(xué)生閱讀
- 構(gòu)建和諧家園關(guān)系共筑孩子美好未來
- 茶文化在小學(xué)教育中的價值體現(xiàn)及實踐路徑
- 2025年襄陽職業(yè)技術(shù)學(xué)院高職單招高職單招英語2016-2024歷年頻考點試題含答案解析
- 綜合教育與技術(shù)支持下的學(xué)生視力保健實踐方案
- 2025年珠海城市職業(yè)技術(shù)學(xué)院高職單招職業(yè)適應(yīng)性測試近5年??及鎱⒖碱}庫含答案解析
- 2025年漳州理工職業(yè)學(xué)院高職單招數(shù)學(xué)歷年(2016-2024)頻考點試題含答案解析
- 加油站廉潔培訓(xùn)課件
- 2022版義務(wù)教育(生物學(xué))課程標(biāo)準(zhǔn)(附課標(biāo)解讀)
- 2023屆上海市松江區(qū)高三下學(xué)期二模英語試題(含答案)
- 誡子書教案一等獎?wù)]子書教案
- 《民航服務(wù)溝通技巧》教案第16課民航服務(wù)人員平行溝通的技巧
- 深圳市物業(yè)專項維修資金管理系統(tǒng)操作手冊(電子票據(jù))
- 2023年鐵嶺衛(wèi)生職業(yè)學(xué)院高職單招(數(shù)學(xué))試題庫含答案解析
- 起重機械安裝吊裝危險源辨識、風(fēng)險評價表
- 華北理工兒童口腔醫(yī)學(xué)教案06兒童咬合誘導(dǎo)
- 中國建筑項目管理表格
- 高一3班第一次月考總結(jié)班會課件
評論
0/150
提交評論