期刊VIP學(xué)術(shù)指導(dǎo) 符合學(xué)術(shù)規(guī)范和道德
保障品質(zhì) 保證專業(yè),沒有后顧之憂
來源:期刊VIP網(wǎng)所屬分類:軟件開發(fā)時(shí)間:瀏覽:次
摘要:CAN總線已在變電站自動(dòng)化系統(tǒng)中得到了廣泛應(yīng)用,而SJA1000作為PHILIPS公司最近推出的獨(dú)立CAN器件也已得到了廣泛關(guān)注。本論文的系統(tǒng)采用微控制器+CAN控制器+CAN收發(fā)器,微控制器為MCS-51系列,CAN控制器為PHILIPS公司SJA1000CAN控制器,CAN接收器選用82C250。介紹了SJA1000的基本原理和功能,并給出了SJA1000的典型硬件連接原理圖及初始化程序和部分通信程序。CAN軟件設(shè)計(jì)主要采用匯編語(yǔ)言,最主要的目的是實(shí)現(xiàn)CAN是發(fā)送報(bào)文與接收?qǐng)?bào)文。并與RS485接口進(jìn)行比較,最后試驗(yàn)傳輸率<5KBPS,傳輸距離用仿真電纜模擬是否可以達(dá)到10KM。
關(guān)鍵詞:CAN SJA1000 匯編語(yǔ)言
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
中圖分類號(hào):TM13 文獻(xiàn)標(biāo)識(shí)碼: A 文章編號(hào):
CAN(ControllerAreaNetwork)總線,又稱控制器局域網(wǎng),是Bosch公司在現(xiàn)代汽車技術(shù)中領(lǐng)先推出的一種多主機(jī)局部網(wǎng),由于其卓越的性能,極高的可靠性,獨(dú)特靈活的設(shè)計(jì)和低廉的價(jià)格,現(xiàn)已廣泛應(yīng)用于工業(yè)現(xiàn)場(chǎng)。控制智能大廈,小區(qū)安防,交通工具,醫(yī)療儀器,環(huán)境監(jiān)控等眾多領(lǐng)域CAN,已被公認(rèn)為幾種最有前途的現(xiàn)場(chǎng)總線之一。
RS485僅僅是一種半雙工通信的電氣協(xié)議,其通信介質(zhì)為雙絞線,傳輸?shù)男盘?hào)在雙絞線上呈現(xiàn)一對(duì)正負(fù)相反的電平信號(hào)用來表示邏輯“1”和邏輯“0”。在RS485的通信網(wǎng)絡(luò)中,只能讓一個(gè)節(jié)點(diǎn)向網(wǎng)絡(luò)發(fā)送數(shù)據(jù)。系統(tǒng)中每一個(gè)節(jié)點(diǎn)的RS485驅(qū)動(dòng)器都有一個(gè)發(fā)送使能控制端DE,其作用是驅(qū)動(dòng)器發(fā)送數(shù)據(jù)時(shí),控制該發(fā)送器有效,使其向網(wǎng)絡(luò)發(fā)送數(shù)據(jù);數(shù)據(jù)發(fā)送完后,DE則關(guān)閉發(fā)送器,使其處于高阻值狀態(tài),從而不影響網(wǎng)絡(luò)中其它節(jié)點(diǎn)的數(shù)據(jù)傳送。如果發(fā)生故障,出現(xiàn)幾個(gè)節(jié)點(diǎn)同時(shí)向網(wǎng)絡(luò)發(fā)送數(shù)據(jù),這就等于多個(gè)RS485驅(qū)動(dòng)器同時(shí)向一對(duì)雙絞線上輸出不同的電平信號(hào),結(jié)果使得整個(gè)網(wǎng)絡(luò)呈現(xiàn)短路狀態(tài),最終損壞其節(jié)點(diǎn)的驅(qū)動(dòng)器,使故障范圍進(jìn)一步擴(kuò)大。而CAN總線的傳輸距離遠(yuǎn),通信速率高。
我們的目的就是制作一個(gè)可以在原有的RS485接口的系統(tǒng)上實(shí)現(xiàn)CAN通信的數(shù)字式電路板。使用戶不用改變?cè)械南到y(tǒng)結(jié)構(gòu)就可以實(shí)現(xiàn)具有相當(dāng)優(yōu)勢(shì)的CAN系統(tǒng)通信,提高效率。
1.系統(tǒng)介紹
1.1 CAN總線的應(yīng)用研究
期刊論文提示您,現(xiàn)場(chǎng)總線是安裝在生產(chǎn)現(xiàn)場(chǎng)裝置與控制室內(nèi)自動(dòng)控制裝置之間的數(shù)字式、串行、多點(diǎn)通訊雙向傳輸?shù)臄?shù)據(jù)總線。它的最大優(yōu)點(diǎn)是可以大幅度節(jié)約連接導(dǎo)線、降低安裝和維護(hù)的費(fèi)用;具有精度高、能傳送多個(gè)過程變量,包括儀表的自診斷信息等。在十幾種已出臺(tái)的現(xiàn)場(chǎng)總線中,CAN總線也是一種很有應(yīng)用前景的現(xiàn)場(chǎng)總線之一。
1.2 MAX1487芯片內(nèi)部的結(jié)構(gòu),管腳功能及其工作原理
MAX1487采用+5v電源供電,當(dāng)供電電流約為500ua時(shí),傳輸率達(dá)到2.5MB/S。它適用于半雙工通信。通信傳輸線上最多為±2v-±6v。MAX1487的管腳及內(nèi)部結(jié)構(gòu)框圖如圖所示。
腳1RO:接受器輸出;
腳2RE:接受器使能;
腳3DE:驅(qū)動(dòng)器使能;
腳4DI:驅(qū)動(dòng)器輸入;
腳5GND:地;
腳6A:接收器非反相輸入或驅(qū)動(dòng)器非反相輸出;
腳7B:接收器反相輸入或驅(qū)動(dòng)器反相輸出;
腳8VCC:電源;
MAX1487的輸入腳DI可與單片機(jī)CPU的TXD腳相連,輸出腳RO與單片機(jī)CPU的RXD腳相連。MAX1487內(nèi)部的驅(qū)動(dòng)器與接收器三三太的,通過DE和RE進(jìn)行發(fā)送與接收,發(fā)送與接受的兩種控制信號(hào)是相反的。可將兩者接相同的控制信號(hào),即“1”電平控制發(fā)送,“0”電平控制接收。A,B實(shí)現(xiàn)多機(jī)聯(lián)網(wǎng)。MAX1487的應(yīng)用電路及通訊協(xié)議:在多機(jī)通信中,一般PC機(jī)作為上位機(jī)只有RS232標(biāo)準(zhǔn)的通訊接口,要實(shí)現(xiàn)RS485標(biāo)準(zhǔn)接口通信,須通過RS232/RS485轉(zhuǎn)換接口電路,完成由EIA到TTL電平的轉(zhuǎn)換。可用專門的帶隔離RS232/485轉(zhuǎn)換器來實(shí)現(xiàn)。MAX1487的RE與DE連接同一個(gè)控制信號(hào),如下實(shí)際電路中8031的P3.5,嚴(yán)格保證收發(fā)信號(hào)在時(shí)間上錯(cuò)開通信協(xié)議:MC51中串行控制寄存器SCON設(shè)有多機(jī)通信控制位SM2,在編程前,定義從機(jī)的地址編號(hào),分別為00H,02H等等從機(jī)系統(tǒng)在初始化程序中將串行口編程為約定的接收方式,且置為SM2,允許串行口中斷在主機(jī)和某一從機(jī)通信之前,先向所有從機(jī)發(fā)出所選從機(jī)的地址,以設(shè)置第九位TB8為1表示為地址幀,這時(shí)SN2作為地址監(jiān)聽位,所有從機(jī)當(dāng)接收到的第九位RB8位為1則置為中斷標(biāo)志RI,中斷后判斷主機(jī)送來的地址與本從機(jī)是否一致,若為本地址,則清SM2為0,準(zhǔn)被發(fā)送主機(jī)送來的數(shù)據(jù)幀其他從機(jī)保持SM2為1狀態(tài)。接著主機(jī)發(fā)送數(shù)據(jù)幀,各串行同時(shí)接收該數(shù)據(jù)幀,而只有已選中的從機(jī)才能產(chǎn)生中斷并接受該數(shù)據(jù),其余從機(jī)收到不產(chǎn)生中斷響應(yīng),將數(shù)據(jù)丟失掉。這樣就實(shí)現(xiàn)了多機(jī)一對(duì)一通信。
1.3 8031單片機(jī)系統(tǒng)結(jié)構(gòu)
8031系列的基本結(jié)構(gòu)如下:
l 一個(gè)8位算術(shù)邏輯單元
l 32個(gè)I/O口
l 兩個(gè)16位定時(shí)計(jì)數(shù)器
l 全雙工串行通信。
l 6個(gè)中斷源兩個(gè)中斷優(yōu)先級(jí)
l 128字節(jié)內(nèi)置RAM。
l 獨(dú)立的64K字節(jié)可尋址數(shù)據(jù)和代碼區(qū)。
每個(gè)8031處理周期,包括12個(gè)振蕩周期,每12個(gè)振蕩周期,用來完成一項(xiàng)操作,如取指令和計(jì)算指令執(zhí)行時(shí)間,可把時(shí)鐘頻率除以12,取倒數(shù),然后指令執(zhí)行所須的周期數(shù),因此,如果你的系統(tǒng)時(shí)鐘是11.059MHz,除以12,后就得到了每秒執(zhí)行的指令個(gè)數(shù),為921583條指令,取倒數(shù)將得到每條指令所須的時(shí)間1.085ms。
1.4 看門狗
大多數(shù)31系列單片機(jī)都有看門狗,當(dāng)看門狗沒有被定時(shí)清零時(shí),將引起復(fù)位。這可防止程序跑飛。設(shè)計(jì)者必須清楚看門狗的溢出時(shí)間。以決定在合適的時(shí)候清看門狗。清看門狗也不能太過頻繁,否則會(huì)造成資源浪費(fèi)。X5045中的看門狗對(duì)系統(tǒng)提供了保護(hù)功能。當(dāng)系統(tǒng)發(fā)生故障而超過設(shè)置時(shí)間時(shí),電路中的看門狗將通過RESET信號(hào)向CPU作出反應(yīng)。它所具有的電壓監(jiān)控功能還可以保護(hù)系統(tǒng)免受低電壓的影響,當(dāng)電源電壓降到允許范圍以下時(shí),系統(tǒng)將復(fù)位,直到電源電壓返回到穩(wěn)定值為止。X5045的存儲(chǔ)器與CPU可通過串行通信方式接口,共有4096個(gè)位,可以按512×8個(gè)字節(jié)來放置數(shù)據(jù)。
1.5 SJA1000簡(jiǎn)介
CAN控制模塊的說明
接口管理邏輯接口管理邏輯負(fù)責(zé)解釋來自CPU的命令,控制CAN寄存器的尋址,向主控制器提供中斷信息和狀態(tài)信息。
位流處理器(BSP)位流處理器是在發(fā)送緩沖器、RXFIFO和CAN總線之間控制數(shù)據(jù)流的程序裝置。它還執(zhí)行錯(cuò)誤檢測(cè)、仲裁、總線填充和錯(cuò)誤處理。
位時(shí)序邏輯(BTL)位時(shí)序邏輯監(jiān)視串口的CAN總線和處理與總線有關(guān)的位時(shí)序。它在信息開頭“弱勢(shì)-支配”的總線傳輸時(shí)同步CAN總線位流(硬同步),接收信息時(shí)再次同步下一次傳送(軟同步)。BTL提供了可編程的時(shí)間段來補(bǔ)償傳播延遲時(shí)間、相位轉(zhuǎn)換(如由于振蕩漂移)和定義采樣點(diǎn)及每一位的采樣次數(shù)。
錯(cuò)誤管理邏輯(EML)EML負(fù)責(zé)傳送層中調(diào)制解調(diào)器的錯(cuò)誤管理。它接收BSP的出錯(cuò)報(bào)告,使BSP和IML進(jìn)行錯(cuò)誤統(tǒng)計(jì)。通常情況下,錯(cuò)誤計(jì)數(shù)器計(jì)數(shù)達(dá)到255時(shí),將關(guān)閉總線,并自動(dòng)轉(zhuǎn)入復(fù)位狀態(tài),并產(chǎn)生錯(cuò)誤中斷。經(jīng)過128個(gè)周期的總線空閑后,重新開啟總線。當(dāng)錯(cuò)誤計(jì)數(shù)器計(jì)數(shù)達(dá)到96時(shí)(警告限制),將產(chǎn)生錯(cuò)誤中斷。
2.系統(tǒng)設(shè)計(jì)
8031單片機(jī)的全雙工串行口可編程為4種工作方式,現(xiàn)分述如下:
方式0為移位寄存器輸入/輸出方式。可外接移位寄存器以擴(kuò)展I/O口,也可以外接同步輸入/輸出設(shè)備。8位串行數(shù)據(jù)者是從RXD輸入或輸出,TXD用來輸出同步脈沖。
輸出:串行數(shù)據(jù)從RXD引腳輸出,TXD引腳輸出移位脈沖。CPU將數(shù)據(jù)寫入發(fā)送寄存器時(shí),立即啟動(dòng)發(fā)送,將8位數(shù)據(jù)以fos/12的固定波特率從RXD輸出,低位在前,高位在后。發(fā)送完一幀數(shù)據(jù)后,發(fā)送中斷標(biāo)志TI由硬件置位。
輸入:當(dāng)串行口以方式0接收時(shí),先置位允許接收控制位REN。此時(shí),RXD為串行數(shù)據(jù)輸入端,TXD仍為同步脈沖移位輸出端。當(dāng)(RI)=0和(REN)=1同時(shí)滿足時(shí),開始接收。當(dāng)接收到第8位數(shù)據(jù)時(shí),將數(shù)據(jù)移入接收寄存器,并由硬件置位RI。方式1為波特率可變的10位異步通訊接口方式。發(fā)送或接收一幀信息,包括1個(gè)起始位0,8個(gè)數(shù)據(jù)位和1個(gè)停止位1。
輸出:當(dāng)CPU執(zhí)行一條指令將數(shù)據(jù)寫入發(fā)送緩沖SBUF時(shí),就啟動(dòng)發(fā)送。串行數(shù)據(jù)從TXD引腳輸出,發(fā)送完一幀數(shù)據(jù)后,就由硬件置位TI。
輸入:在(REN)=1時(shí),串行口采樣RXD引腳,當(dāng)采樣到1至0的跳變時(shí),確認(rèn)是開始位0,就開始接收一幀數(shù)據(jù)。只有當(dāng)(RI)=0且停止位為1或者(SM2)=0時(shí),停止位才進(jìn)入RB8,8位數(shù)據(jù)才能進(jìn)入接收寄存器,并由硬件置位中斷標(biāo)志RI;否則信息丟失。所以在方式1接收時(shí),應(yīng)先用軟件清零RI和SM2標(biāo)志。
方式2
方式2:為固定波特率的11位UART方式。它比方式1增加了一位可程控為1或0的第9位數(shù)據(jù)。
輸出:發(fā)送的串行數(shù)據(jù)由TXD端輸出一幀信息為11位,附加的第9位來自SCON寄存器的TB8位,用軟件置位或復(fù)位。它可作為多機(jī)通訊中地址/數(shù)據(jù)信息的標(biāo)志位,也可以作為數(shù)據(jù)的奇偶校驗(yàn)位。當(dāng)CPU執(zhí)行一條數(shù)據(jù)寫入SUBF的指令時(shí),就啟動(dòng)發(fā)送器發(fā)送。發(fā)送一幀信息后,置位中斷標(biāo)志TI。
輸入:在(REN)=1時(shí),串行口采樣RXD引腳,當(dāng)采樣到1至0的跳變時(shí),確認(rèn)是開始位0,就開始接收一幀數(shù)據(jù)。在接收到附加的第9位數(shù)據(jù)后,當(dāng)(RI)=0或者(SM2)=0時(shí),第9位數(shù)據(jù)才進(jìn)入RB8,8位數(shù)據(jù)才能進(jìn)入接收寄存器,并由硬件置位中斷標(biāo)志RI;否則信息丟失。且不置位RI。再過一位時(shí)間后,不管上述條件時(shí)否滿足,接收電路即行復(fù)位,并重新檢測(cè)RXD上從1到0的跳變。
工作方式3
方式3:為波特率可變的11位UART方式。除波特率外,其余與方式2相同。波特率選擇如前所述,在串行通訊中,收發(fā)雙方的數(shù)據(jù)傳送率(波特率)要有一定的約定。在8051串行口的四種工作方式中,方式0和2的波特率是固定的,而方式1和3的波特率是可變的,由定時(shí)器T1的溢出率控制。
方式0式0的波特率固定為主振頻率的1/12。
方式2
方式2的波特率由PCON中的選擇位SMOD來決定,可由下式表示:
波特率=2的SMOD次方除以64再乘一個(gè)fosc,也就是當(dāng)SMOD=1時(shí),波特率為1/32fosc,
當(dāng)SMOD=0時(shí),波特率為1/64fosc方式1和方式3定時(shí)器T1作為波特率發(fā)生器,
其公式如下:波特率定時(shí)器T1溢出率T1溢出率=T1計(jì)數(shù)率/產(chǎn)生溢出所需的周期數(shù)式中T1計(jì)數(shù)率取決于它工作在定時(shí)器狀態(tài)還是計(jì)數(shù)器狀態(tài)。
當(dāng)工作于定時(shí)器狀態(tài)時(shí),T1計(jì)數(shù)率為fosc/12;當(dāng)工作于計(jì)數(shù)器狀態(tài)時(shí),T1計(jì)數(shù)率為外部輸入頻率,此頻率應(yīng)小于fosc/24。產(chǎn)生溢出所需周期與定時(shí)器T1的工作方式、T1的預(yù)置值有關(guān)。
定時(shí)器T1工作于方式0:
溢出所需周期數(shù)=8192-x
定時(shí)器T1工作于方式1:
溢出所需周期數(shù)=65536-x
定時(shí)器T1工作于方式2:溢出所需周期數(shù)=256-x
因?yàn)榉绞?為自動(dòng)重裝入初值的8位定時(shí)器/計(jì)數(shù)器模式,所以用它來做波特率發(fā)生器最恰當(dāng)。當(dāng)時(shí)鐘頻率選用11.0592MHZ時(shí),取易獲得標(biāo)準(zhǔn)的波特率,所以很多單片機(jī)系統(tǒng)選用這個(gè)看起來“怪”的晶振就是這個(gè)道理。
3.主程序設(shè)計(jì)
CAN控制器SJA1000在復(fù)位模式下對(duì)各位寄存器的初始化程序。
程序如下:
MOV DPTR,#CR;控制寄存器CR的地址送DPTR
MOV A,#01H
MOV @DPTR,A;進(jìn)入復(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;總線定時(shí)寄存器BTR0的地址送DPTR
MOV A,#FFH
MOV @DPTR,A
MOV DPTR,#BTR1;總線定時(shí)寄存器BTR1的地址送DPTR
MOV A,#FFH
MOV @DPTR,A
MOV DPTR,#OCR;輸出控制寄存器OCR的地址送DPTR
MOV A,#FFH
MOV @DPTR,A
期刊標(biāo)準(zhǔn)論文格式參考文獻(xiàn)
[1] 張昆藏。IBMPC/XT微型計(jì)算機(jī)接口技術(shù)。北京:清華大學(xué)出版社,1990,281-286。
[2]鄔寬明.CAN總線原理和應(yīng)用系統(tǒng)設(shè)計(jì)[M].北京:北京航空航天大學(xué)出版社,1995.
[3]何立民.MCS-51系列單片機(jī)應(yīng)用與系統(tǒng)設(shè)計(jì),系統(tǒng)配置與接口技術(shù).北京:北京航空航天大學(xué)出版社,1990。