EPP邏輯接口WinDriver底層驅(qū)動的可視化主備CAN監(jiān)控節(jié)的設(shè)計
出處:SD325 發(fā)布于:2007-04-29 09:25:01
EPP邏輯接口WinDriver底層驅(qū)動的可視化主備CAN監(jiān)控節(jié)的設(shè)計
上海豪威IC設(shè)計有限公司(201203) 怯肇乾
隨著CAN總線在通信設(shè)計系統(tǒng)中的應(yīng)用,出現(xiàn)了不少CAN節(jié)點監(jiān)控產(chǎn)品。其中,以EPP并口為接口、以SJAl000做CAN協(xié)議控制器的微機監(jiān)控節(jié)點的產(chǎn)品更是獨樹一幟。這類產(chǎn)品硬件構(gòu)造簡單、DOS監(jiān)控軟件設(shè)計簡潔、通信快速、操作使用方便。本文即以這類產(chǎn)品為課題對其性能做進一步完善:(1)在EPP接口和SJAl000之間做可編程邏輯設(shè)計,使節(jié)點監(jiān)護通信更直截了當(dāng)。(2)在監(jiān)控軟件設(shè)計上用WinDriver做底層驅(qū)動進行可視化編程,以增強人機接口界面,使監(jiān)控更加簡潔方便。(3)擴展單節(jié)點監(jiān)控為主、備雙節(jié)點監(jiān)控,使監(jiān)護全面完善。
1系統(tǒng)總體硬件設(shè)計
系統(tǒng)總體硬件構(gòu)成如圖1所示。其中,2片SJAl000分別用于實現(xiàn)主節(jié)點和備用節(jié)點的CAN總線協(xié)議控制器,且為增強各自的驅(qū)動能力分別使用了1片82C250收發(fā)驅(qū)動器。2片SJAl000共用一套振蕩電路和一套復(fù)位電路,復(fù)位電路為簡單的阻容形式。由于EPP接口控制線己全部用做他用,故微機不能控制SJAl000做硬件復(fù)位,但為了調(diào)試方便,加入了按鈕做意外手動復(fù)位。1片PLD(EPM7032ST-10)用于實現(xiàn)EPP接口和SJAl000之間的通信傳輸控制;電源取自外部CAN總線系統(tǒng)的+5V電源;發(fā)光二極管用做電源和主、備節(jié)點的收發(fā)指示。
2 EPP和SJAl000之間的接口邏輯設(shè)計
在EPP接口和SJAl000之間加入適當(dāng)?shù)倪壿嫿涌?,可以避免傳統(tǒng)設(shè)計中對EPP控制線的重新定義和特殊通信函數(shù)的書寫,縮短并口通信的時間,提高數(shù)據(jù)采集的實時性。這樣,通過EPP讀寫SJAl000時只要讀寫EPP地址和數(shù)據(jù)寄存器就可以了。
按照EPP并口協(xié)議和SJAl000讀寫時序,本設(shè)計以EPP井口的3根控制線/write、/AddStrb、/DataStr的邏輯時序來產(chǎn)生SJAl000讀寫控制的ALE、/wr、/rd邏輯和反饋回EPP的Wait信號邏輯。特別定義EPP接口的/reset控制線做主、備SJAl000的片選信號,低電平選中主SJAl000,高電子選中備用SJAl000。主、備SJAl000的中斷線相"與"后作為中斷信號輸入EPP井口中斷狀態(tài)線(EPP接口協(xié)議和SJAl000的讀寫時序已有不少文章做過介紹,在此不再贅述)。下面給出用Altera公司的AHDL語言書寫的邏輯設(shè)計(采用AHDL語言其目的是借用Altera功能強大的Maxplus II做模擬分析)。
圖2是MaxPlusII模擬分析"微機通過EPP寫SJAl00寄存器結(jié)果"的波形圖。圖中,首先進行地址選通、傳送多鎖存地址;然后是寫操作;一段是SJAl000中斷發(fā)白后,主機響應(yīng)并進行讀操作。
3 WinDriver底層驅(qū)動程序的產(chǎn)生
實時數(shù)據(jù)采集程序的書寫離不開中斷的使用。為了在可視化編程中使用中斷,必須選擇適當(dāng)?shù)墓ぞ邅頃鴮懙讓域?qū)動程序。目前,底層驅(qū)動程序的書寫工具很多,如DDK、SDK、VtoolsD、WinDriver等,這里選用Jungo公司簡單方便的開發(fā)工具WinDriver。
打開WinDriver的驅(qū)動向?qū)?,?chuàng)建一個新的驅(qū)動程序。WinDriver檢測外接硬件設(shè)備,產(chǎn)生連接設(shè)備列表,從中選用parallel port,指定WinDriver在一給定目錄下用C或Pascal語言產(chǎn)生VB、VC++、Dephi或C++Builder工程項目文件。這里選用C語言和C++Builder開發(fā)工具,指定LPT為文件前綴。 在給定目錄下,WinDriver的驅(qū)動向?qū)Э僧a(chǎn)生幾個文件和1個C++Builder子目錄。在產(chǎn)生的文件中,LPT.wdp、LPT_lib.h和LPT_Iib.c是編寫應(yīng)用程序必不可少的。LPT.wdp是WinDriver底層驅(qū)動程序和用戶程序溝通的關(guān)鍵樞紐,LPT_Iib.h和LPT_Iib.c是WinDriver提供的己包裝好的可直接使用的函數(shù)庫。在其他文件中,LPT_diag.h和LPT_diag.c是WinDriver提供的并口傳輸測試程序,可作為書寫應(yīng)用程序的參考。下面給出產(chǎn)生的幾個主要函數(shù)。
4 可視化應(yīng)用程序的設(shè)計
設(shè)計可視化應(yīng)用程序時,要在人機界面窗口中做主備CAN總線選擇和接收對象選擇。下面給出采用C++Builder5.5開發(fā)的部分程序片段(為簡化敘述,這里給出的是總線活動全部接收,按1次接收按鈕只接收1幀數(shù)據(jù)的程序,若總線無活動則定時自動退出)。
4.5程序的編譯與發(fā)行
程序編譯前,為建立起與WinDriver底層驅(qū)動程序的鏈接,必須做到:
(1)在工程項目.cpp文件開始嵌入:
# include<condefs.h>
USEUNIT("..\lpt_lib.c");
(2)在unit.cpp文件開始嵌入:
# include<1pt_1ib.h>
(3)在unit.cpp文件開始定義變量:
LPT_HANDLE hLPT;
程序分發(fā)使用前,對于Windows NT/2000/98/ME,必須把WINDRVR.SYS文件拷貝到C:\WINNT\SYST-EM32\DRIVERS下;對于98/ME,也可以把windrvr.vxd程序拷貝到用戶windows\system\vmm32下,并使用wdreg.exe安裝運行該程序,格式為:wdreg-vxd install。
版權(quán)與免責(zé)聲明
凡本網(wǎng)注明“出處:維庫電子市場網(wǎng)”的所有作品,版權(quán)均屬于維庫電子市場網(wǎng),轉(zhuǎn)載請必須注明維庫電子市場網(wǎng),http://m.58mhw.cn,違反者本網(wǎng)將追究相關(guān)法律責(zé)任。
本網(wǎng)轉(zhuǎn)載并注明自其它出處的作品,目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點或證實其內(nèi)容的真實性,不承擔(dān)此類作品侵權(quán)行為的直接責(zé)任及連帶責(zé)任。其他媒體、網(wǎng)站或個人從本網(wǎng)轉(zhuǎn)載時,必須保留本網(wǎng)注明的作品出處,并自負版權(quán)等法律責(zé)任。
如涉及作品內(nèi)容、版權(quán)等問題,請在作品發(fā)表之日起一周內(nèi)與本網(wǎng)聯(lián)系,否則視為放棄相關(guān)權(quán)利。
- 什么是氫氧燃料電池,氫氧燃料電池的知識介紹2025/8/29 16:58:56
- SQL核心知識點總結(jié)2025/8/11 16:51:36
- 等電位端子箱是什么_等電位端子箱的作用2025/8/1 11:36:41
- 基于PID控制和重復(fù)控制的復(fù)合控制策略2025/7/29 16:58:24
- 什么是樹莓派?一文快速了解樹莓派基礎(chǔ)知識2025/6/18 16:30:52









