利用EPP并行口實(shí)壩PC機(jī)之間通信的CAN總線設(shè)計(jì)
論文作者:曹瓊 蔡淮 程焱 林敏 摘要: 文章簡要介紹了epp并行口及can獨(dú)立控制器s3^1000。并深入 研究 pc對(duì)sjal000的讀寫。根據(jù)讀寫時(shí)序的產(chǎn)生,設(shè)計(jì)了兩套硬件方案。同時(shí)。結(jié)合在實(shí)踐中遇到的 問題 ,指出了一些在can總線協(xié)議使用上需要注意的地方。
關(guān)鍵詞: epp并行口 can總線 sjal000 網(wǎng)絡(luò) 適配卡 利用epp并行口實(shí)壩pc機(jī)之間通信的can總線設(shè)計(jì)西南 交通 大學(xué) 計(jì)算 機(jī)與通信工程學(xué)院曹瓊 蔡淮 程焱 林敏摘要文章簡要介紹了epp并行口及can獨(dú)立控制器s3^1000。并深入研究pc對(duì)sjal000的讀寫。根據(jù)讀寫時(shí)序的產(chǎn)生,設(shè)計(jì)了兩套硬件方案。同時(shí)。結(jié)合在實(shí)踐中遇到的問題,指出了一些在can總線協(xié)議使用上需要注意的地方。關(guān)鍵詞l引言can(controuer area network)總線作為現(xiàn)場總線的一種,與其他總線相比可靠性高性價(jià)比合理。其主要特點(diǎn)有:(1)多主方式工作,非破壞性的基于優(yōu)先權(quán)的總線仲裁技術(shù);(2)借助接收濾波實(shí)現(xiàn)多地址的幀傳送;(3)短幀結(jié)構(gòu)數(shù)據(jù),受干擾率低;(4)發(fā)送期間丟失仲裁或由于出錯(cuò)而遭破壞的幀可自動(dòng)重發(fā);(5)對(duì)于嚴(yán)重錯(cuò)誤具有自動(dòng)關(guān)閉總線功能,使總線其他操作不受 影響 ;(6)不關(guān)閉總線即可任意掛接或拆除節(jié)點(diǎn),增強(qiáng)了系統(tǒng)的靈活性和可擴(kuò)展性;(7)統(tǒng)一的標(biāo)準(zhǔn)和規(guī)范,使各設(shè)備之間具有較好的互操作性、互換性和通用性等。正是由于can總線的這些優(yōu)良性能, 目前 已 應(yīng)用 于船舶制造、 工業(yè) 控制、建筑保安系統(tǒng)中,而且正成為許多領(lǐng)域的 發(fā)展 方向。2 epp并行口 為了實(shí)現(xiàn)大量數(shù)據(jù)的快速、準(zhǔn)確傳輸,數(shù)據(jù)通信已經(jīng)成為自動(dòng)化系統(tǒng)的關(guān)鍵技術(shù)之一。計(jì)算機(jī)標(biāo)準(zhǔn)串、并行口是pc機(jī)的基本部件之一,利用計(jì)算機(jī)的標(biāo)準(zhǔn)串、并行口來作為pc機(jī)與can總線的通信接口,既方便又 經(jīng)濟(jì) 。但是由于串行通訊口的通訊效率較低,難以完成大量、實(shí)時(shí)性高的數(shù)據(jù)傳輸工作,而傳統(tǒng)的spp并行口只能實(shí)現(xiàn)數(shù)據(jù)的單向傳輸,但高級(jí)并行接口(epp)則可以進(jìn)行高速的雙向數(shù)據(jù)傳輸,是進(jìn)行大量數(shù)據(jù)傳輸?shù)囊环N理想選擇。2.1 epp概述 增強(qiáng)型并行口epp(enhanced parallel port)是一種與標(biāo)準(zhǔn)并行口spp(standard parallel port)兼容的高性能的并行連接口。在實(shí)際應(yīng)用中,由于epp并行口具有8位雙向數(shù)據(jù)端口、狀態(tài)端口和控制端口,因此,epp可作為8位總線,靈活使用。epp協(xié)議又極大地改善了pc機(jī)并行口的數(shù)據(jù)傳輸能力,使得并行口的數(shù)據(jù)傳輸速率可以很容易達(dá)到l一2mbps。epp協(xié)議定義了各種單/雙向信號(hào)以滿足各自的特殊需要!2.2 epp寄存器介紹 epp協(xié)議定義的信號(hào)分別對(duì)應(yīng)三個(gè)不同的寄存器,在pc機(jī)中,并行口l寄存器的基地址一般為378h,該地址包含讀入和讀出兩個(gè)寄存器的雙緩沖寄存器,對(duì)應(yīng)ado…ad7雙向數(shù)據(jù)/地址端口;輸入操作epp信號(hào)的定義及其描述表l 表l列出了epp信號(hào)的定義及其描述。
并行口引腳號(hào)epp信號(hào)數(shù)據(jù)方向定義
l/write輸出低電平寫,高電平讀
2—9ad[o…7]雙向雙向數(shù)據(jù)/地址線
lointr輸入外設(shè)中斷
llwait輸入握手信號(hào)
12用戶定義輸入按不同的外設(shè)自定義
13用戶定義輸入按不同的外設(shè)自定義
14/datastb輸出低電平有效,表示正在進(jìn)行數(shù)據(jù)讀寫
15用戶定義輸入按不同的外設(shè)自定義
16reset輸出低有效,外設(shè)復(fù)位
17/addstb輸出低電平有效,表示正在進(jìn)行地址讀寫
18—25gnd信號(hào)地
注:①輸出,表示由計(jì)算機(jī)發(fā)向外設(shè);輸入,表示由外設(shè)發(fā)向計(jì)算機(jī)。②加“/”表示信號(hào)低電平有效。epp寄存器定義表2
378had7ad6ad4ad4ad3ad2adlado
379hwallrintr自定義自定義自定義無定義無定義無定義
37ah無定義無定義read enableirq enbale/addstb/beste/data/write
時(shí)使用輸入寄存器,輸出操作時(shí)使用輸出寄存器。單向狀態(tài)端口和單向控制端口的寄存器地址分別為379h和37ah,其定義見表2。這三個(gè)寄存器是與標(biāo)準(zhǔn)并行口spp兼容的,但實(shí)際上除了這三個(gè)寄存器之外,epp還定義了其它幾個(gè)寄存器! pp不需要從主機(jī)送來的信號(hào)就能執(zhí)行數(shù)據(jù)交換。當(dāng)主機(jī)把數(shù)據(jù)寫到數(shù)據(jù)緩沖區(qū)時(shí),總線自動(dòng)產(chǎn)生數(shù)據(jù)選通信號(hào)。同樣,從端口讀人數(shù)據(jù)時(shí)也是自動(dòng)產(chǎn)生數(shù)據(jù)選通信號(hào)來表示系統(tǒng)正準(zhǔn)備接收下一批數(shù)據(jù)。3 can獨(dú)立控制器sjal000sjal000是一種獨(dú)立控制器,主要用于移動(dòng)目標(biāo)和一般工業(yè)環(huán)境中的區(qū)域網(wǎng)絡(luò)控制(can),是philips半導(dǎo)體pca82c200 can控制器(basiecan)的替代產(chǎn)品。其基本特性有:(1)引腳與pca82c200獨(dú)立can控制器兼容。(2)有擴(kuò)展的接收緩沖器64字節(jié),先進(jìn)先出(fifo);(3)支持can2.0a和can2.0b協(xié)議;(4)通信位速率可達(dá)imbps。而且它增加了一種新的工作模式(pelican),這種模式支持具有很多新特性的can2.0b協(xié)議。4can總線收發(fā)器pca82c250pca82c250是can控制器和物理總線間的接口。器件可以提供對(duì)總線差動(dòng)發(fā)送、接收的能力。采用雙線差分驅(qū)動(dòng),有助于抑制汽車等惡劣電氣環(huán)境下的瞬間干擾。其主要特性有:(1)與iso/dis 11898標(biāo)準(zhǔn)全兼容;(2)高速性,最高可達(dá)imbps;(3)具有抗汽車環(huán)境下的瞬間干擾能力,保護(hù)總線能力;(4)降低射頻干擾的斜率控制;(5)熱保護(hù);(6)總線與電源及地之間的短路保護(hù);(7)低電流待機(jī)方式;(8)掉電自動(dòng)關(guān)閉輸出;(9)可支持多達(dá)110個(gè)節(jié)點(diǎn)相連接等。 5 適配卡設(shè)計(jì) can總線的卓越性能為 工業(yè) 控制提供了一種可靠的數(shù)據(jù)通信,為了擴(kuò)展can總線的監(jiān)控和管理功能,應(yīng)設(shè)計(jì)一塊適配卡,連接pc機(jī)的并行口,該卡上具備can接口和pc接口特性,它完成的任務(wù)主要是pc機(jī)與總線之間的通信! 榇,適配卡的主要組成有:can總線控制器(sjal000)、can總線驅(qū)動(dòng)器(pca82c250)、epp并行端口。sjal000是集成的獨(dú)立can控制器,它負(fù)責(zé)完成can總線通信協(xié)議的物理層和數(shù)據(jù)鏈路層的功能。sjal000片含有控制寄存器、命令寄存器、狀態(tài)寄存器、中斷寄存器和收發(fā)寄存器。pc機(jī)通過讀寫這些寄存器來實(shí)現(xiàn)對(duì)sjal000的控制;芯片的tx0、txl、rx0、rxl引腳用于與can總線的接口。pca82c250是專門用于can總線收發(fā)驅(qū)動(dòng)的9腳芯片,txd、rxd引腳分別接收和發(fā)送驅(qū)動(dòng)后的信號(hào);canh、canl引腳接至雙絞線或同軸電纜等傳輸介質(zhì)。使用pca82c250可以擴(kuò)大通信距離,能提高系統(tǒng)的抗干擾能力,保護(hù)總線,降低射頻干擾,實(shí)現(xiàn)熱防護(hù)等。sjal000的中斷輸出信號(hào)/int接到epp的intr中斷后,通過中斷方式實(shí)現(xiàn)pc機(jī)與can控制器的通信。由于sjal000的中斷輸出信號(hào)是低電平有效,而epp的中斷信號(hào)是高電平有效,所以在他們的連線之間必須加一個(gè)反向器。根據(jù)通信讀寫時(shí)序的產(chǎn)生,設(shè)計(jì)了一種由軟件產(chǎn)生讀寫時(shí)序的電路和一種由硬件產(chǎn)生讀寫時(shí)序的電路。5.1軟件產(chǎn)生讀寫時(shí)序電路 連線說明:sjal000的ado~ad7直接與epp并行口的ado~ad7相連;ale直接與nwrite相連;/rd,/wr分別與naddstrobe和ndatastrobe相連;/int的引線反向后與epp的intr相連(如圖l所示)。 此種電路設(shè)計(jì)需要軟件產(chǎn)生訪問外設(shè)芯片所需的讀寫時(shí)序。在我們的 應(yīng)用 程序中,對(duì)sjal000的讀寫函數(shù)分別為readreg和setreg,用匯編語言實(shí)現(xiàn)如下(如表3所示):5.2硬件產(chǎn)生讀寫時(shí)序 連線說明:nwait信號(hào)為外設(shè)發(fā)送給pc的握手信號(hào),以便pc在訪問慢速外設(shè)時(shí)插入等待周期。
讀寫函數(shù)表表3
void setreg(im port,int value)//通過雙向口向sjal000發(fā)送數(shù)據(jù),port為sjal000寄存器的地址,value為要設(shè)置的值im readreg(int port)//讀取sjal000寄存器的值,port為sjal000寄存器的地址,返回的值為該寄存器的值
{_sflm}mov esx,0//臨時(shí)寄存器清零mov dx,37ahmov al,0dshout dx,al//write高,ale低電平,地址選通mov dx,378hmov eax,portout dx,al//將要訪問的sial000寄存器地址放上數(shù)據(jù)線mov dx,37ahmov a1,0d4hout dx,al//write高。ale高,將地址信號(hào)鎖存mov a1,0d5hout dx,al//write高,ale為低電平,地址選通mov dx,378hmdv eax,valueout dx,al//把要寫的數(shù)據(jù)送上數(shù)據(jù)總線mov dx.37a}imov a1.0ddhout山.且j//write低,可寫,ale低,地址選通,將數(shù)據(jù)寫入sjal000mov ai,0d5hout(1x,al//復(fù)位,write為低,ale低}}}int retumcode=0:asm}mo~e,sx,0mov dx,37alimov a1,0d5hout dx,al//read為低電平,ale低,地址選通lnov dx,378hmov e.sx,portout dx,al//將要訪問的sjal000寄存器地址放上數(shù)據(jù)線mov(b,37ahmov a1,0d4hout dx,al//read低,ale高,將地址鎖存mov a1.0d5hout dx.a(chǎn)l//read低,ale低,地址選通mov dx.37ailmov a1.0d7h//read為低,ale低,數(shù)據(jù)被送上數(shù)據(jù)線out cb,almov a1.0f7hout dx.a(chǎn)l/,lreadenable為1.允許數(shù)據(jù)讀入mov eax.0mov dx,378h.m al,dx,//從效據(jù)總線讀人寄存器mov returneode。eax[nov dx,37ahmov a1,0f5hout dx,al//read高,ale低mov a1,0d5hout dx,al//恢復(fù),關(guān)掉readenble}ieturn retumcode;}
注:向控.i端口37ah的addstb,datastb,write位寫入1時(shí),并行口17、14和1;i腳均為低電平;相反寫入0時(shí),三個(gè)引腳均為高電平! jal000的訪問時(shí)間在40ns以內(nèi),所以pc在訪問sjal000時(shí)完全可以不用插入等待周期。nwait可由naddrstrobe和ndatastrobe信號(hào)經(jīng)過一個(gè)與非門后產(chǎn)生。由于sjal000的ale是下降鎖存地址信號(hào),所以將naddrstrobe反相后與ale相連。在epp的數(shù)據(jù)讀/寫周期時(shí),sjal000的rd和wr控制信號(hào)應(yīng)該有效,而在地址讀/寫周期時(shí)應(yīng)該無效。sjal000的reset腳與并行端口的nreset腳相連,由pc機(jī)向sjal000提供復(fù)位信號(hào)。。 地址/數(shù)據(jù)讀寫說明:握手信號(hào)nwait由naddrstrobe和ndatastrobe信號(hào)經(jīng)過一個(gè)與非門后再延遲一段時(shí)間產(chǎn)生,然后可利用epp并行口的數(shù)據(jù)/地址周期來產(chǎn)生sjal000芯片的讀寫時(shí)序。sjal000芯片的讀寫時(shí)序分為地址鎖存和數(shù)據(jù)讀寫。地址鎖存解決的是地址的寫入和地址鎖存信號(hào)的產(chǎn)生;數(shù)據(jù)讀寫是數(shù)據(jù)的讀寫以及相應(yīng)的讀寫控制信號(hào)的產(chǎn)生。所以,可以利用epp的地址寫周期來產(chǎn)生sjal000讀寫時(shí)序的地址鎖存部分,并用epp并行口的數(shù)據(jù)讀寫周期來產(chǎn)生sjal000讀寫時(shí)序的數(shù)據(jù)讀寫部分! (shù)據(jù)寫周期的時(shí)序如圖3所示,其步驟如下:
(1)程序向epp的data端口發(fā)送一個(gè)i/o寫周期命令;(2)插入nwrite信號(hào),同時(shí)數(shù)據(jù)出現(xiàn)在并行端口數(shù)據(jù)線上;(3)當(dāng)nwait信號(hào)變成低電平之后,插人數(shù)據(jù)選通信號(hào);(4)端口等待來自外設(shè)的應(yīng)答信號(hào)(取消nwalt信號(hào));(5)取消數(shù)據(jù)選通信號(hào),epp周期結(jié)束;數(shù)據(jù)讀周期的時(shí)序如圖4所示,其讀數(shù)據(jù)的步驟如下:
(1)程序中向eppdata端口發(fā)送一個(gè)i/o讀周期命令;(2)當(dāng)nwait信號(hào)變成低電平之后,插入數(shù)據(jù)選通信號(hào);(3)端口讀取數(shù)據(jù)位,取消數(shù)據(jù)選通信號(hào);(4)端口等待來自外設(shè)的應(yīng)答信號(hào)(取消nwait信號(hào));(5)epp周期結(jié)束;(6)isa周期結(jié)束! 〉刂穼懞偷刂纷x周期除了把ndatastrobe信號(hào)替換成naddstrobe之外完全一樣。相關(guān)引腳直值表如表4所示。5.3兩種設(shè)計(jì)的比較 實(shí)驗(yàn)表明,采用軟件產(chǎn)生讀寫時(shí)序設(shè)計(jì)的硬件比較簡單,便于調(diào)試,但是程序編寫比較復(fù)雜(需編寫程序產(chǎn)生sjal000的讀寫時(shí)序);用硬件產(chǎn)生讀寫時(shí)序設(shè)計(jì)的硬件稍微復(fù)雜,硬件調(diào)試也復(fù)雜一些,但是應(yīng)用程序的編寫要簡單一些(不用編寫程序產(chǎn)生sjal000的讀寫時(shí)序),而且端口讀寫的速度也快得多。6 設(shè)計(jì)中存在的幾個(gè) 問題 (1)pca82c250第8腳與地之間的電阻rs稱為斜率電阻,它的取值決定了系統(tǒng)處于高速工作方式還是斜率控制方式。把該引腳直接與地相連,系統(tǒng)將處于高速工作方式。在這種方式下,為避免射頻干擾,建議使相關(guān)引腳的真值表表4
/ndata/naddr/nwrite/wr/rdale備注
0l00l0數(shù)據(jù)讀,地址鎖存
olllo0數(shù)據(jù)寫,地址鎖存
l000ll地址寫,地址選通
lo1l0l地址讀,地址選通
1l0ll0地址數(shù)據(jù)均無效.等待
llllll地址數(shù)據(jù)均無效,等待
注:①標(biāo)加“/”表示低電平有效。加字母“n”表示是并行口的引腳。②因?yàn)榈刂泛蛿?shù)據(jù)不能同時(shí)被選通,所以,真值表中就不列出它們同時(shí)被選通的情況。用屏蔽電纜作總線;而在波特率較低、總線較短時(shí),一般采用斜率控制方式,上升和下降的斜率取決于rs的阻值。實(shí)驗(yàn)數(shù)據(jù)表明,15~200k為rj較理想的取值范圍。在這種方式下,可以使用平行線或雙絞線作總線。(2)sjal000的txl引腳懸空,rxl引腳的電位必須維持在約o.5vce上,否則將不能形成can協(xié)議所要求的電平邏輯。如果系統(tǒng)傳輸距離近,環(huán)境干擾小,可以不用電流隔離,這樣可以直接把pca82c250的vrff端(約為0.5vcc)與rxl腳相連,從而簡化電路。(3)必須將sjal000的中斷信號(hào)取反之后才能接到pc機(jī)并行口的中斷引腳上,這樣才能保證硬件中斷的正確觸發(fā)。7 通信控制程序 根據(jù)系統(tǒng)要求和硬件設(shè)計(jì)原理,編寫的通信控制程序應(yīng)該完成以下功能:在通信控制主界面中可以加載并行口驅(qū)動(dòng)程序,初始化sjal000;發(fā)送、接收數(shù)據(jù);監(jiān)測寄存器的變化;軟件復(fù)位等附加功能。8 結(jié)束語 在此設(shè)計(jì)中,我們掌握了有關(guān)can總線和epp并行口的基本知識(shí),設(shè)計(jì)了一個(gè)基于epp協(xié)議的用于pc機(jī)間通信的can總線適配卡。編寫了相應(yīng)的驅(qū)動(dòng)程序(有關(guān)配套軟件的具體問題,不在此介紹),經(jīng)實(shí)踐證明,兩種方案均可行。為了進(jìn)一步滿足應(yīng)用的需要,在完善組網(wǎng)設(shè)計(jì)和功能管理方面,can還有很多 理論 和技術(shù)方面的問題有待解決。其中包括標(biāo)準(zhǔn)的開放式應(yīng)用層協(xié)議的制定、更靈活的 網(wǎng)絡(luò) 拓?fù)浣Y(jié)構(gòu)的提出和使用,更簡單、 經(jīng)濟(jì) 的單片式can芯片的研制等等。 參考 文獻(xiàn) 1鄔寬明.can總線原理和應(yīng)用系統(tǒng)設(shè)計(jì).北京航空航天大學(xué)出版社。19962陽憲惠.現(xiàn)場總線技術(shù)及其應(yīng)用.清華大學(xué)出版社, 19993 sjal000 stand-alone can controller data sheet. philips公司產(chǎn)品說明書。19974 pca82c250 can controller interface data sheet。 philips公司產(chǎn)品說明書,20005安格斯生.《并行端口大全》 中國 電力出版社,20016饒家明.can總線智能節(jié)點(diǎn)的設(shè)計(jì)和實(shí)現(xiàn).《工業(yè)儀表與自動(dòng)化裝置》.2002;57張培仁.采用epp協(xié)議的can總線監(jiān)控節(jié)點(diǎn)的設(shè)計(jì)與實(shí)現(xiàn).《 計(jì)算 機(jī)應(yīng)用》第21卷。第2期論文出處(作者):曹瓊 蔡淮 程焱 林
高校新校區(qū)智能化建設(shè)常見問題探討
標(biāo)準(zhǔn)化編程的IEC1131-3在DCS中應(yīng)用分析
【利用EPP并行口實(shí)壩PC機(jī)之間通信的CAN總線設(shè)計(jì)】相關(guān)文章:
光纖CAN總線自愈環(huán)網(wǎng)的研究06-01
土石壩畢業(yè)設(shè)計(jì)開題報(bào)告10-18
基于web的異地并行設(shè)計(jì)與制造系統(tǒng)研究06-02
用PC測量交變磁場05-11
論通信設(shè)計(jì)質(zhì)量的科學(xué)控制方法論文11-11
DS2438及其在單總線微網(wǎng)中的應(yīng)用05-31
用Verilog HDL實(shí)現(xiàn)I2C總線功能06-01
土地可持續(xù)利用探析05-27
通信技術(shù)論文11-21
施肥機(jī)的開題報(bào)告10-20