新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于USB接口的CAN總線適配器設(shè)計(jì)

基于USB接口的CAN總線適配器設(shè)計(jì)

作者: 時(shí)間:2012-05-05 來(lái)源:網(wǎng)絡(luò) 收藏

SJA1000和PDID12都有完善的中斷機(jī)

微控制器可以通過(guò)讀它們的中斷寄存器獲得總線事件。為了提高固件的運(yùn)行效率,主程序?qū)ο到y(tǒng)進(jìn)行實(shí)始化后開放中斷,在中斷服務(wù)程序中對(duì)事件進(jìn)行分析和必要的處理,并設(shè)置相應(yīng)的變量標(biāo)志和數(shù)據(jù)緩沖區(qū)。主程序則循環(huán)查詢變量標(biāo)志,調(diào)用相應(yīng)的子程序進(jìn)行處理。這種程序結(jié)構(gòu)使得主程序能夠在前臺(tái)處理各種數(shù)據(jù)傳送任務(wù),同時(shí)又可以通過(guò)中斷在后臺(tái)及時(shí)處理總線事件。

2.1.1 CAN協(xié)議實(shí)現(xiàn)

SJA1000支持BasicCAN和PeliCAN兩種協(xié)議模式。在設(shè)計(jì)中采用了BasicCAN模式。中斷設(shè)為電平中斷方式,SJA1000中斷服務(wù)程序框圖如圖2所示。

2.1.2 1.1協(xié)議實(shí)現(xiàn)

PDID12支持所有的四種USB數(shù)據(jù)傳輸方式。在的設(shè)計(jì)中使用了控制傳輸、中斷傳輸和批量傳輸??刂苽鬏斨兄挥脕?lái)傳遞控制信息,固定使用端點(diǎn)0;中斷傳輸使用端點(diǎn)1,用來(lái)傳送CAN網(wǎng)絡(luò)狀態(tài)信息;批量傳輸用來(lái)實(shí)現(xiàn)主機(jī)和CAN網(wǎng)絡(luò)節(jié)點(diǎn)之間的數(shù)據(jù)傳送,使用端點(diǎn)2。圖3是PDIUSBD12中斷服務(wù)程序框圖。

2.2 驅(qū)動(dòng)程序設(shè)計(jì)

USB驅(qū)動(dòng)程序?qū)儆赪DM(Windows driver module)類型。WDM驅(qū)動(dòng)程序是分層的,引入了FDO(Function Device Object)和PDO(Physical Device Object)兩個(gè)新類來(lái)描述硬件,每一個(gè)物理硬件有一個(gè)PDO,但是可以有多個(gè)FDO,在驅(qū)動(dòng)程序中直接操作的是PDO和FDO。系統(tǒng)通過(guò)全局唯一標(biāo)識(shí)符GUID實(shí)現(xiàn)驅(qū)動(dòng)程序的識(shí)別。應(yīng)用程序和WDM驅(qū)動(dòng)程序通信時(shí),系統(tǒng)為每個(gè)用戶請(qǐng)求打包形成一個(gè)I/O請(qǐng)求包發(fā)送到驅(qū)動(dòng)程序。

圖4是Windows中USB的通信層次結(jié)構(gòu)模型。圖4系統(tǒng)軟件方塊中的底部是Windows系統(tǒng)提供的驅(qū)動(dòng)程序,包括主控制器驅(qū)動(dòng)程序(OPENHCI.SYS或者UHCD.SYS)、HUB驅(qū)動(dòng)程序(USBHUB.SYS)是一個(gè)類驅(qū)動(dòng)程序(USBD.SYS)。

Windows2000下驅(qū)動(dòng)程序的設(shè)計(jì)工具是VC++和Win2000DDK,但是直接使用DDK編程有相當(dāng)大的難度。目前有第三方軟件廠商提供了一些驅(qū)動(dòng)程序開發(fā)工具,如Jungo公司的WinDriver、Compuware公司的DriverStudio等。這些工具仍然是基于WindowsDDK的,但是進(jìn)行了新的封裝,提供了驅(qū)動(dòng)程序設(shè)計(jì)向?qū)А?P style="TEXT-INDENT: 30px">

設(shè)計(jì)中采用了DriverStudio作為驅(qū)動(dòng)程序開發(fā)工具。利用其中的DriverWorks一步步地作出選擇并修改少量參數(shù),即可生成驅(qū)動(dòng)程序框架和測(cè)試臺(tái)應(yīng)用程序框架,對(duì)USB設(shè)備的通用性部分支持得很好。在程序框架,對(duì)USB設(shè)備的通用性部分支持得很好。在VC++中對(duì)向?qū)傻拇a作修改,并對(duì)設(shè)備特殊功能部分添加處理代碼,然后用VC++編譯為*.SYS文件,就是一個(gè)完整的驅(qū)動(dòng)程序。SoftIce是DriverStudio的另一個(gè)調(diào)試工具,可以對(duì)驅(qū)動(dòng)程序進(jìn)行操作系統(tǒng)內(nèi)核級(jí)的跟蹤與調(diào)試。

生成驅(qū)動(dòng)程序后,編寫相應(yīng)的INF文件是重要的一步。INF文件在操作系統(tǒng)發(fā)現(xiàn)新硬件之后向系統(tǒng)指明應(yīng)該安裝的驅(qū)動(dòng)程序、系統(tǒng)向設(shè)備提供的服務(wù)以及注冊(cè)表項(xiàng)要修改的內(nèi)容。

基于USB接口的適配器經(jīng)過(guò)試驗(yàn)運(yùn)行證明:在中小規(guī)模和短時(shí)大數(shù)據(jù)塊傳送時(shí),能夠很好地完成網(wǎng)絡(luò)通信任務(wù)。USB接口是計(jì)算機(jī)外設(shè)的發(fā)展趨勢(shì),目前主要用在中低速場(chǎng)合。隨著USB2.0規(guī)范的推出,又逐漸向高速應(yīng)用發(fā)展。因此將現(xiàn)場(chǎng)總線網(wǎng)絡(luò)和計(jì)算機(jī)接口相連的適配器具有廣泛的應(yīng)用前景。


上一頁(yè) 1 2 下一頁(yè)

關(guān)鍵詞: USB CAN總線 固件編程 適配器

評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉