2019亚洲日韩新视频_97精品在线观看_国产成人精品一区二区_91精品网站在线观看

CAN總線與RS-485轉(zhuǎn)換電路板的設(shè)計

來源:期刊VIP網(wǎng)所屬分類:軟件開發(fā)時間:瀏覽:

  摘要:CAN總線已在變電站自動化系統(tǒng)中得到了廣泛應(yīng)用,而SJA1000作為PHILIPS公司最近推出的獨立CAN器件也已得到了廣泛關(guān)注。本論文的系統(tǒng)采用微控制器+CAN控制器+CAN收發(fā)器,微控制器為MCS-51系列,CAN控制器為PHILIPS公司SJA1000CAN控制器,CAN接收器選用82C250。介紹了SJA1000的基本原理和功能,并給出了SJA1000的典型硬件連接原理圖及初始化程序和部分通信程序。CAN軟件設(shè)計主要采用匯編語言,最主要的目的是實現(xiàn)CAN是發(fā)送報文與接收報文。并與RS485接口進行比較,最后試驗傳輸率<5KBPS,傳輸距離用仿真電纜模擬是否可以達到10KM。

  關(guān)鍵詞:CAN SJA1000 匯編語言

  Abstract:The principle and function of SJA1000 stand–alone CAN controller are introduced; the hardware connection diagram and the communication program of SJA1000 are given. The Design the system introduced in the book adopt the tiny controller + the controller of CAN+ the transceiver of CAN, the tiny controller is serieses MCS-51s, The CAN controller is SJA1000 of PHILIPS company .The CAN software design is main to adopt to edit collected materials the language, the purpose of the most is to realizes the CAN is to send out the report text with receive the report text.

  Key words:CAN; SJA1000;assemble; language

  中圖分類號:TM13 文獻標識碼: A 文章編號:

  CAN(ControllerAreaNetwork)總線,又稱控制器局域網(wǎng),是Bosch公司在現(xiàn)代汽車技術(shù)中領(lǐng)先推出的一種多主機局部網(wǎng),由于其卓越的性能,極高的可靠性,獨特靈活的設(shè)計和低廉的價格,現(xiàn)已廣泛應(yīng)用于工業(yè)現(xiàn)場。控制智能大廈,小區(qū)安防,交通工具,醫(yī)療儀器,環(huán)境監(jiān)控等眾多領(lǐng)域CAN,已被公認為幾種最有前途的現(xiàn)場總線之一。

  RS485僅僅是一種半雙工通信的電氣協(xié)議,其通信介質(zhì)為雙絞線,傳輸?shù)男盘栐陔p絞線上呈現(xiàn)一對正負相反的電平信號用來表示邏輯“1”和邏輯“0”。在RS485的通信網(wǎng)絡(luò)中,只能讓一個節(jié)點向網(wǎng)絡(luò)發(fā)送數(shù)據(jù)。系統(tǒng)中每一個節(jié)點的RS485驅(qū)動器都有一個發(fā)送使能控制端DE,其作用是驅(qū)動器發(fā)送數(shù)據(jù)時,控制該發(fā)送器有效,使其向網(wǎng)絡(luò)發(fā)送數(shù)據(jù);數(shù)據(jù)發(fā)送完后,DE則關(guān)閉發(fā)送器,使其處于高阻值狀態(tài),從而不影響網(wǎng)絡(luò)中其它節(jié)點的數(shù)據(jù)傳送。如果發(fā)生故障,出現(xiàn)幾個節(jié)點同時向網(wǎng)絡(luò)發(fā)送數(shù)據(jù),這就等于多個RS485驅(qū)動器同時向一對雙絞線上輸出不同的電平信號,結(jié)果使得整個網(wǎng)絡(luò)呈現(xiàn)短路狀態(tài),最終損壞其節(jié)點的驅(qū)動器,使故障范圍進一步擴大。而CAN總線的傳輸距離遠,通信速率高。

  我們的目的就是制作一個可以在原有的RS485接口的系統(tǒng)上實現(xiàn)CAN通信的數(shù)字式電路板。使用戶不用改變原有的系統(tǒng)結(jié)構(gòu)就可以實現(xiàn)具有相當(dāng)優(yōu)勢的CAN系統(tǒng)通信,提高效率。

  1.系統(tǒng)介紹

  1.1 CAN總線的應(yīng)用研究

  期刊論文提示您,現(xiàn)場總線是安裝在生產(chǎn)現(xiàn)場裝置與控制室內(nèi)自動控制裝置之間的數(shù)字式、串行、多點通訊雙向傳輸?shù)臄?shù)據(jù)總線。它的最大優(yōu)點是可以大幅度節(jié)約連接導(dǎo)線、降低安裝和維護的費用;具有精度高、能傳送多個過程變量,包括儀表的自診斷信息等。在十幾種已出臺的現(xiàn)場總線中,CAN總線也是一種很有應(yīng)用前景的現(xiàn)場總線之一。

  1.2 MAX1487芯片內(nèi)部的結(jié)構(gòu),管腳功能及其工作原理

  MAX1487采用+5v電源供電,當(dāng)供電電流約為500ua時,傳輸率達到2.5MB/S。它適用于半雙工通信。通信傳輸線上最多為±2v-±6v。MAX1487的管腳及內(nèi)部結(jié)構(gòu)框圖如圖所示。

  腳1RO:接受器輸出;

  腳2RE:接受器使能;

  腳3DE:驅(qū)動器使能;

  腳4DI:驅(qū)動器輸入;

  腳5GND:地;

  腳6A:接收器非反相輸入或驅(qū)動器非反相輸出;

  腳7B:接收器反相輸入或驅(qū)動器反相輸出;

  腳8VCC:電源;

  MAX1487的輸入腳DI可與單片機CPU的TXD腳相連,輸出腳RO與單片機CPU的RXD腳相連。MAX1487內(nèi)部的驅(qū)動器與接收器三三太的,通過DE和RE進行發(fā)送與接收,發(fā)送與接受的兩種控制信號是相反的。可將兩者接相同的控制信號,即“1”電平控制發(fā)送,“0”電平控制接收。A,B實現(xiàn)多機聯(lián)網(wǎng)。MAX1487的應(yīng)用電路及通訊協(xié)議:在多機通信中,一般PC機作為上位機只有RS232標準的通訊接口,要實現(xiàn)RS485標準接口通信,須通過RS232/RS485轉(zhuǎn)換接口電路,完成由EIA到TTL電平的轉(zhuǎn)換。可用專門的帶隔離RS232/485轉(zhuǎn)換器來實現(xiàn)。MAX1487的RE與DE連接同一個控制信號,如下實際電路中8031的P3.5,嚴格保證收發(fā)信號在時間上錯開通信協(xié)議:MC51中串行控制寄存器SCON設(shè)有多機通信控制位SM2,在編程前,定義從機的地址編號,分別為00H,02H等等從機系統(tǒng)在初始化程序中將串行口編程為約定的接收方式,且置為SM2,允許串行口中斷在主機和某一從機通信之前,先向所有從機發(fā)出所選從機的地址,以設(shè)置第九位TB8為1表示為地址幀,這時SN2作為地址監(jiān)聽位,所有從機當(dāng)接收到的第九位RB8位為1則置為中斷標志RI,中斷后判斷主機送來的地址與本從機是否一致,若為本地址,則清SM2為0,準被發(fā)送主機送來的數(shù)據(jù)幀其他從機保持SM2為1狀態(tài)。接著主機發(fā)送數(shù)據(jù)幀,各串行同時接收該數(shù)據(jù)幀,而只有已選中的從機才能產(chǎn)生中斷并接受該數(shù)據(jù),其余從機收到不產(chǎn)生中斷響應(yīng),將數(shù)據(jù)丟失掉。這樣就實現(xiàn)了多機一對一通信。

  1.3 8031單片機系統(tǒng)結(jié)構(gòu)

  8031系列的基本結(jié)構(gòu)如下:

  l 一個8位算術(shù)邏輯單元

  l 32個I/O口

  l 兩個16位定時計數(shù)器

  l 全雙工串行通信。

  l 6個中斷源兩個中斷優(yōu)先級

  l 128字節(jié)內(nèi)置RAM。

  l 獨立的64K字節(jié)可尋址數(shù)據(jù)和代碼區(qū)。

  每個8031處理周期,包括12個振蕩周期,每12個振蕩周期,用來完成一項操作,如取指令和計算指令執(zhí)行時間,可把時鐘頻率除以12,取倒數(shù),然后指令執(zhí)行所須的周期數(shù),因此,如果你的系統(tǒng)時鐘是11.059MHz,除以12,后就得到了每秒執(zhí)行的指令個數(shù),為921583條指令,取倒數(shù)將得到每條指令所須的時間1.085ms。

  1.4 看門狗

  大多數(shù)31系列單片機都有看門狗,當(dāng)看門狗沒有被定時清零時,將引起復(fù)位。這可防止程序跑飛。設(shè)計者必須清楚看門狗的溢出時間。以決定在合適的時候清看門狗。清看門狗也不能太過頻繁,否則會造成資源浪費。X5045中的看門狗對系統(tǒng)提供了保護功能。當(dāng)系統(tǒng)發(fā)生故障而超過設(shè)置時間時,電路中的看門狗將通過RESET信號向CPU作出反應(yīng)。它所具有的電壓監(jiān)控功能還可以保護系統(tǒng)免受低電壓的影響,當(dāng)電源電壓降到允許范圍以下時,系統(tǒng)將復(fù)位,直到電源電壓返回到穩(wěn)定值為止。X5045的存儲器與CPU可通過串行通信方式接口,共有4096個位,可以按512×8個字節(jié)來放置數(shù)據(jù)。

  1.5 SJA1000簡介

  CAN控制模塊的說明

  接口管理邏輯接口管理邏輯負責(zé)解釋來自CPU的命令,控制CAN寄存器的尋址,向主控制器提供中斷信息和狀態(tài)信息。

  位流處理器(BSP)位流處理器是在發(fā)送緩沖器、RXFIFO和CAN總線之間控制數(shù)據(jù)流的程序裝置。它還執(zhí)行錯誤檢測、仲裁、總線填充和錯誤處理。

  位時序邏輯(BTL)位時序邏輯監(jiān)視串口的CAN總線和處理與總線有關(guān)的位時序。它在信息開頭“弱勢-支配”的總線傳輸時同步CAN總線位流(硬同步),接收信息時再次同步下一次傳送(軟同步)。BTL提供了可編程的時間段來補償傳播延遲時間、相位轉(zhuǎn)換(如由于振蕩漂移)和定義采樣點及每一位的采樣次數(shù)。

  錯誤管理邏輯(EML)EML負責(zé)傳送層中調(diào)制解調(diào)器的錯誤管理。它接收BSP的出錯報告,使BSP和IML進行錯誤統(tǒng)計。通常情況下,錯誤計數(shù)器計數(shù)達到255時,將關(guān)閉總線,并自動轉(zhuǎn)入復(fù)位狀態(tài),并產(chǎn)生錯誤中斷。經(jīng)過128個周期的總線空閑后,重新開啟總線。當(dāng)錯誤計數(shù)器計數(shù)達到96時(警告限制),將產(chǎn)生錯誤中斷。

  2.系統(tǒng)設(shè)計

  8031單片機的全雙工串行口可編程為4種工作方式,現(xiàn)分述如下:

  方式0為移位寄存器輸入/輸出方式。可外接移位寄存器以擴展I/O口,也可以外接同步輸入/輸出設(shè)備。8位串行數(shù)據(jù)者是從RXD輸入或輸出,TXD用來輸出同步脈沖。

  輸出:串行數(shù)據(jù)從RXD引腳輸出,TXD引腳輸出移位脈沖。CPU將數(shù)據(jù)寫入發(fā)送寄存器時,立即啟動發(fā)送,將8位數(shù)據(jù)以fos/12的固定波特率從RXD輸出,低位在前,高位在后。發(fā)送完一幀數(shù)據(jù)后,發(fā)送中斷標志TI由硬件置位。

  輸入:當(dāng)串行口以方式0接收時,先置位允許接收控制位REN。此時,RXD為串行數(shù)據(jù)輸入端,TXD仍為同步脈沖移位輸出端。當(dāng)(RI)=0和(REN)=1同時滿足時,開始接收。當(dāng)接收到第8位數(shù)據(jù)時,將數(shù)據(jù)移入接收寄存器,并由硬件置位RI。方式1為波特率可變的10位異步通訊接口方式。發(fā)送或接收一幀信息,包括1個起始位0,8個數(shù)據(jù)位和1個停止位1。

  輸出:當(dāng)CPU執(zhí)行一條指令將數(shù)據(jù)寫入發(fā)送緩沖SBUF時,就啟動發(fā)送。串行數(shù)據(jù)從TXD引腳輸出,發(fā)送完一幀數(shù)據(jù)后,就由硬件置位TI。

  輸入:在(REN)=1時,串行口采樣RXD引腳,當(dāng)采樣到1至0的跳變時,確認是開始位0,就開始接收一幀數(shù)據(jù)。只有當(dāng)(RI)=0且停止位為1或者(SM2)=0時,停止位才進入RB8,8位數(shù)據(jù)才能進入接收寄存器,并由硬件置位中斷標志RI;否則信息丟失。所以在方式1接收時,應(yīng)先用軟件清零RI和SM2標志。

  方式2

  方式2:為固定波特率的11位UART方式。它比方式1增加了一位可程控為1或0的第9位數(shù)據(jù)。

  輸出:發(fā)送的串行數(shù)據(jù)由TXD端輸出一幀信息為11位,附加的第9位來自SCON寄存器的TB8位,用軟件置位或復(fù)位。它可作為多機通訊中地址/數(shù)據(jù)信息的標志位,也可以作為數(shù)據(jù)的奇偶校驗位。當(dāng)CPU執(zhí)行一條數(shù)據(jù)寫入SUBF的指令時,就啟動發(fā)送器發(fā)送。發(fā)送一幀信息后,置位中斷標志TI。

  輸入:在(REN)=1時,串行口采樣RXD引腳,當(dāng)采樣到1至0的跳變時,確認是開始位0,就開始接收一幀數(shù)據(jù)。在接收到附加的第9位數(shù)據(jù)后,當(dāng)(RI)=0或者(SM2)=0時,第9位數(shù)據(jù)才進入RB8,8位數(shù)據(jù)才能進入接收寄存器,并由硬件置位中斷標志RI;否則信息丟失。且不置位RI。再過一位時間后,不管上述條件時否滿足,接收電路即行復(fù)位,并重新檢測RXD上從1到0的跳變。

  工作方式3

  方式3:為波特率可變的11位UART方式。除波特率外,其余與方式2相同。波特率選擇如前所述,在串行通訊中,收發(fā)雙方的數(shù)據(jù)傳送率(波特率)要有一定的約定。在8051串行口的四種工作方式中,方式0和2的波特率是固定的,而方式1和3的波特率是可變的,由定時器T1的溢出率控制。

  方式0式0的波特率固定為主振頻率的1/12。

  方式2

  方式2的波特率由PCON中的選擇位SMOD來決定,可由下式表示:

  波特率=2的SMOD次方除以64再乘一個fosc,也就是當(dāng)SMOD=1時,波特率為1/32fosc,

  當(dāng)SMOD=0時,波特率為1/64fosc方式1和方式3定時器T1作為波特率發(fā)生器,

  其公式如下:波特率定時器T1溢出率T1溢出率=T1計數(shù)率/產(chǎn)生溢出所需的周期數(shù)式中T1計數(shù)率取決于它工作在定時器狀態(tài)還是計數(shù)器狀態(tài)。

  當(dāng)工作于定時器狀態(tài)時,T1計數(shù)率為fosc/12;當(dāng)工作于計數(shù)器狀態(tài)時,T1計數(shù)率為外部輸入頻率,此頻率應(yīng)小于fosc/24。產(chǎn)生溢出所需周期與定時器T1的工作方式、T1的預(yù)置值有關(guān)。

  定時器T1工作于方式0:

  溢出所需周期數(shù)=8192-x

  定時器T1工作于方式1:

  溢出所需周期數(shù)=65536-x

  定時器T1工作于方式2:溢出所需周期數(shù)=256-x

  因為方式2為自動重裝入初值的8位定時器/計數(shù)器模式,所以用它來做波特率發(fā)生器最恰當(dāng)。當(dāng)時鐘頻率選用11.0592MHZ時,取易獲得標準的波特率,所以很多單片機系統(tǒng)選用這個看起來“怪”的晶振就是這個道理。

  3.主程序設(shè)計

  CAN控制器SJA1000在復(fù)位模式下對各位寄存器的初始化程序。

  程序如下:

  MOV DPTR,#CR;控制寄存器CR的地址送DPTR

  MOV A,#01H

  MOV @DPTR,A;進入復(fù)位模式

  MOV DPTR,#IR;中斷控制寄存器IR的地址送DPTR

  MOV A,#03H

  MOV @DPTR,A

  MOV DPTR,#ACR;接受代碼寄存器ACR的地址送DPTR

  MOV A,#FFH

  MOV @DPTR,A

  MOV DPTR,#AMR;接收屏蔽寄存器AMR的地址送DPTR

  MOV A,#FFH

  MOV @DPTR,A

  MOV DPTR,#BTR0;總線定時寄存器BTR0的地址送DPTR

  MOV A,#FFH

  MOV @DPTR,A

  MOV DPTR,#BTR1;總線定時寄存器BTR1的地址送DPTR

  MOV A,#FFH

  MOV @DPTR,A

  MOV DPTR,#OCR;輸出控制寄存器OCR的地址送DPTR

  MOV A,#FFH

  MOV @DPTR,A

  期刊標準論文格式參考文獻

  [1] 張昆藏。IBMPC/XT微型計算機接口技術(shù)。北京:清華大學(xué)出版社,1990,281-286。

  [2]鄔寬明.CAN總線原理和應(yīng)用系統(tǒng)設(shè)計[M].北京:北京航空航天大學(xué)出版社,1995.

  [3]何立民.MCS-51系列單片機應(yīng)用與系統(tǒng)設(shè)計,系統(tǒng)配置與接口技術(shù).北京:北京航空航天大學(xué)出版社,1990。

主站蜘蛛池模板: 沭阳县| 尖扎县| 河东区| 桐乡市| 满城县| 邯郸市| 兴仁县| 濮阳市| 孝义市| 阳朔县| 桐乡市| 洞口县| 忻城县| 唐山市| 长治县| 中牟县| 中阳县| 宁河县| 五峰| 漳浦县| 游戏| 股票| 湖南省| 定结县| 叙永县| 会东县| 浦江县| 广饶县| 濮阳县| 麟游县| 静安区| 石楼县| 平南县| 嘉荫县| 贵南县| 调兵山市| 达孜县| 磴口县| 定南县| 汉川市| 富川|