《電子技術(shù)應用》
您所在的位置:首頁 > 其他 > 業(yè)界動態(tài) > 基于USB的CAN總線智能適配卡的軟硬件設(shè)計

基于USB的CAN總線智能適配卡的軟硬件設(shè)計

2009-02-12
作者:季厭浮

  摘 要: 采用SJA1000作為CAN控制芯片,使用PDIUSBD12作為USB的控制芯片,并利用AT89C52作為微控制器,設(shè)計了基于USB的CAN總線智能適配卡的硬件結(jié)構(gòu)。在此基礎(chǔ)上,設(shè)計了適配卡的軟件實現(xiàn)方案。針對CAN總線容易受到外界干擾的弱點,使用6N137進行信號隔離。
  關(guān)鍵詞: USB接口;CAN總線;微控制器;智能適配卡

?

  隨著信息技術(shù)的飛速發(fā)展,各種數(shù)據(jù)的實時采集和處理在現(xiàn)代工業(yè)控制中已經(jīng)成為必不可少的部分,這就要求現(xiàn)場設(shè)計的接口簡單靈活且具有較高的數(shù)據(jù)傳輸率。控制器局域網(wǎng)CAN(Controller Area Network)總線屬于現(xiàn)場總線的范疇,是一種具有高可靠性、支持分布式控制和實時控制的串行通信總線標準。傳統(tǒng)的適配卡設(shè)計方案中,CAN總線網(wǎng)絡(luò)與計算機的連接通常采用的是RS232、ISA或者PCI接口,但是隨著計算機接口技術(shù)的迅速發(fā)展,ISA接口已經(jīng)逐漸被淘汰。RS232接口數(shù)據(jù)傳輸率太低,PCI接口雖然可以實現(xiàn)高速傳輸,但其主要缺點是占用有限的系統(tǒng)資源,設(shè)計復雜,并且無法用于便攜式計算機的擴展,必須有高質(zhì)量的驅(qū)動程序保證系統(tǒng)的穩(wěn)定。USB技術(shù)正是順應接口技術(shù)發(fā)展而提出的一種快速、雙向、同步傳輸、廉價的并且可以進行熱插拔的通用串行總線。
  本文設(shè)計了基于USB接口的CAN總線適配卡的硬件結(jié)構(gòu)和軟件實現(xiàn)方案。該適配卡既可以對數(shù)據(jù)起到轉(zhuǎn)發(fā)的作用,即收集CAN總線上各個節(jié)點的數(shù)據(jù),轉(zhuǎn)發(fā)給上位機,并把上位機的命令和數(shù)據(jù)發(fā)給各節(jié)點;也可以完成對CAN總線上的用戶系統(tǒng)的部分監(jiān)控管理工作,故又被稱為智能適配卡[1]。通過在礦井等特殊現(xiàn)場環(huán)境下的實踐應用,證明該適配卡具有良好的抗干擾能力和高速的傳輸性能。
1 智能適配卡的硬件結(jié)構(gòu)
  適配卡的硬件電路主要由微控制器、CAN總線接口、USB總線接口和信號隔離模塊等部分組成,如圖1所示。

?


1.1 AT89C52微控制電路
  AT89C52是一個低電壓、高性能CMOS 8位單片機,片中內(nèi)置有8KB可反復擦寫的Flash存儲單元和256B隨機存取數(shù)據(jù)存儲器RAM,功能強大。AT89C52是該接口電路的控制核心,其中P0、P2口用作16位數(shù)據(jù)I/O口,P1、P3口用作控制。
  微控制器負責對USB設(shè)備控制器和CAN控制器進行控制。在微控制器內(nèi)部駐留有USB通信協(xié)議和CAN通信協(xié)議,完成USB通信協(xié)議和CAN總線通信協(xié)議轉(zhuǎn)換,實現(xiàn)USB接口和CAN接口通信數(shù)據(jù)的透明傳輸[2]
1.2 USB接口電路
  本設(shè)計中USB控制芯片采用Philips公司的PDIUSBD12。該芯片是一款性價比很高的USB器件,內(nèi)部集成了串行接口引擎SIE、存儲器管理單元MMU、集成RAM、模擬收發(fā)器以及電壓調(diào)整器,可與任何外部微控制器實現(xiàn)高速數(shù)據(jù)傳輸?shù)牟⑿薪涌冢?MB/s)。提供3個端點,其中主端點(端點2)的雙緩沖配置增加了數(shù)據(jù)吞吐量并輕松實現(xiàn)實時數(shù)據(jù)傳輸。
  PDIUSBD12與微控制器的接口有二種方式:多路地址/數(shù)據(jù)總線方式、單地址/數(shù)據(jù)總線方式。在本設(shè)計中,采用的是前一種方式,即使用了AT89C52的INT0、ALE、WR、RD和P0口,A0腳接地,當PDIUSBD12接收到主機的有效信息時,會產(chǎn)生一個中斷通知AT89C52進行處理。若微控制器的輸出地址為奇數(shù),則表示對PDIUSBD12發(fā)送指令;若輸出地址為偶數(shù),則表示對PDIUSBD12進行數(shù)據(jù)傳輸。AT89C52將數(shù)據(jù)經(jīng)PDIUSBD12的并行接口送入FIFO存儲器。對微控制器而言,PDIUSBD12看起來就像1個帶8位數(shù)據(jù)總線和1個地址位的存儲器件。由于在USB的信號傳遞過程中會摻雜進瞬間的高壓噪聲,這些噪聲對USB口的收發(fā)電路將產(chǎn)生致命的危害,因此需要對這些噪聲電壓進行抑制。在USB接口電路設(shè)計中,使用了SN75240,它可以對USB接口中的不正常電壓進行有效的抑制,以保證硬件設(shè)備的安全[3]
1.3 CAN總線電路
  在本設(shè)計中,CAN總線控制器采用Philips公司生產(chǎn)的SJA1000,它作為一個發(fā)送、接收緩沖器,實現(xiàn)主控制器和總線之間的數(shù)據(jù)傳輸。CAN總線控制器接口芯片采用PCA82C250,它是CAN總線控制器和物理總線的接口,可以對總線提供不同的發(fā)送能力和對CAN控制器提供不同的接收能力。為了增強CAN總線的抗干擾能力,SJA1000的TX0和RX0并不是直接與PCA82C250的TXD和RXD相連,而是通過高速光電耦合器6N137后與PCA82C250相連。這樣就很好地實現(xiàn)了總線上各CAN節(jié)點間的電氣隔離,如圖2所示。不過應注意:光耦部分電路所采用的兩個電源Vcc和Vdd必須完全隔離,否則采用光耦就會失去意義。電源的完全隔離可采用小功率電源隔離模塊,或帶+5V隔離輸出的開關(guān)電源模塊實現(xiàn)。

?

2 智能適配卡的軟件設(shè)計
  適配卡的軟件設(shè)計主要包括CAN通信軟件設(shè)計、USB設(shè)備端通信軟件設(shè)計、USB設(shè)備驅(qū)動程序設(shè)計和應用程序設(shè)計四大部分。
2.1 CAN通信軟件設(shè)計
  CAN通信軟件設(shè)計主要包括三大部分:初始化CAN控制器SJA1000、發(fā)送數(shù)據(jù)模塊和接收數(shù)據(jù)模塊。同時還包括一些數(shù)據(jù)溢出中斷及幀出錯的處理。初始化CAN控制器SJA1000主要用來實現(xiàn)CAN控制器工作時的參數(shù)設(shè)置,這些初始化的內(nèi)容包括硬件使能CAN控制器、設(shè)置CAN報警界限、設(shè)置CAN總線波特率、設(shè)置中斷工作方式、設(shè)置CAN驗收過濾器的工作方式、設(shè)置CAN控制器的工作模式等[4]。這些功能主要是通過設(shè)置各寄存器予以實現(xiàn)。
  微控制器AT89C52將USB總線送來的數(shù)據(jù)轉(zhuǎn)換為符合CAN發(fā)送幀格式的數(shù)據(jù),通過調(diào)用CAN發(fā)送數(shù)據(jù)模塊將該數(shù)據(jù)從CAN控制器SJA1000轉(zhuǎn)發(fā)。微控制器AT89C52調(diào)用CAN接收數(shù)據(jù)模塊接收來自CAN總線的數(shù)據(jù),并把數(shù)據(jù)轉(zhuǎn)換為符合USB發(fā)送幀格式的數(shù)據(jù),將該數(shù)據(jù)通過PDIUSBD12進行轉(zhuǎn)發(fā)[5]。CAN通信軟件整體工作流程如圖3所示。

?


2.2 USB設(shè)備端通信軟件設(shè)計
  USB設(shè)備端通信軟件設(shè)計主要包括PDIUSBD12的硬件驅(qū)動層、USB接口控制驅(qū)動層、USB協(xié)議層和USB應用層軟件設(shè)計[6]
2.2.1 PDIUSBD12的硬件驅(qū)動層軟件設(shè)計
  PDIUSBD12硬件驅(qū)動層主要任務(wù)是初始化PDIUSBD12與AT89C52連接的配置,復位PDIUSBD12并建立PDIUSBD12與AT89C52的通信函數(shù)。
2.2.2 USB接口控制驅(qū)動層軟件設(shè)計
  USB接口控制驅(qū)動層的主要任務(wù)是實現(xiàn)PDIUSBD12的各種功能,包括地址使能、讀取端點數(shù)據(jù)、向端點寫入數(shù)據(jù)和設(shè)置DMA等,該層中的功能函數(shù)通過調(diào)用PDIUSBD12硬件驅(qū)動層的各函數(shù)予以實現(xiàn)。
2.2.3 USB協(xié)議層軟件設(shè)計
  USB協(xié)議層的主要任務(wù)是處理標準的USB設(shè)備請求以及特殊的廠商請求。USB主機通過標準USB設(shè)備請求,可設(shè)定和獲取USB設(shè)備的有關(guān)信息,完成USB設(shè)備的枚舉。所有的請求都是通過PDIUSBD12的端點0接收和發(fā)送SETUP包來完成。
2.2.4 USB應用層軟件設(shè)計
  PDIUSBD12支持所有的四種USB數(shù)據(jù)傳輸方式。本文適配卡的設(shè)計中使用了控制傳輸、中斷傳輸和批量傳輸。控制傳輸只用來傳遞控制信息,固定使用端點0;中斷傳輸使用端點1,用來傳送CAN網(wǎng)絡(luò)狀態(tài)信息;批量傳輸使用端點2,用來實現(xiàn)主機和CAN網(wǎng)絡(luò)節(jié)點之間的數(shù)據(jù)傳送。
  PDIUSBD12具有完善的中斷機制,微控制器AT89C52可以通過讀PDIUSBD12的中斷寄存器獲得總線事件。為了提高USB應用層軟件的運行效率,主程序?qū)ο到y(tǒng)進行初始化后開放中斷,在中斷服務(wù)程序中對事件進行分析和必要的處理,并設(shè)置相應的變量標志和數(shù)據(jù)緩沖區(qū)。主程序則循環(huán)查詢變量標志,調(diào)用相應的子程序進行處理。這種程序結(jié)構(gòu)使得主程序能夠在前臺處理各種數(shù)據(jù)傳送任務(wù),同時又可以通過中斷在后臺及時處理總線事件,有力地確保了最佳的傳輸速率和更好的軟件結(jié)構(gòu),同時簡化了編程和調(diào)試[7]。PDIUSBD12中斷服務(wù)程序如圖4所示。

?

2.3 USB設(shè)備驅(qū)動程序設(shè)計
  USB設(shè)備驅(qū)動程序采用的是WDM( Windows Driver Mode)
  類型。WDM屬于操作系統(tǒng)的內(nèi)核模式,其驅(qū)動程序由運行于內(nèi)核模式的系統(tǒng)代碼組成。WDM設(shè)備驅(qū)動模型與先前的VXD型驅(qū)動程序相比,降低了所需驅(qū)動程序的數(shù)量和復雜性,簡化了驅(qū)動程序的開發(fā)[8]
  本文采用DriverStudio開發(fā)工具進行開發(fā)。DriverStudio包含VtoolsD、softICE和DriverWork等工具,通過DriverWorks的開發(fā)向?qū)river Wizard生成驅(qū)動程序框架,在其生成的代碼框架中再加入對設(shè)備上LED燈的控制操作,實現(xiàn)一個完整的USB設(shè)備驅(qū)動程序。在生成驅(qū)動程序的同時,可以同時生成驅(qū)動程序的測試程序。編譯運行DriverWorks生成的驅(qū)動測試程序,能夠發(fā)現(xiàn)此設(shè)備驅(qū)動運行是否良好,并能夠?qū)崿F(xiàn)對設(shè)備上的LED燈的控制。
2.4 應用程序設(shè)計
  對于廣大用戶而言,與系統(tǒng)的交互是通過應用程序?qū)崿F(xiàn),而且整個系統(tǒng)的主要數(shù)據(jù)處理都在這里完成。因此,運行效率高、界面友好、具有強大數(shù)據(jù)分析和處理的應用程序的設(shè)計,也是系統(tǒng)設(shè)計上一個不容忽視的關(guān)鍵因素。應用程序設(shè)計的關(guān)鍵是實現(xiàn)從USB外設(shè)讀取或發(fā)送特定數(shù)量的數(shù)據(jù),本設(shè)計中采用Visual C++6.0作為應用程序的開發(fā)環(huán)境。
  CAN總線與USB總線作為流行的、先進的總線技術(shù)都具有廣泛的應用和發(fā)展前途。本設(shè)計通過結(jié)合USB與CAN的優(yōu)點連接擴展了USB在工業(yè)控制中的功能,同時大大簡化了工業(yè)控制與PC機之間的數(shù)據(jù)通信,具有十分廣泛的應用價值。本設(shè)計已經(jīng)完成,并在礦井下數(shù)據(jù)傳輸中得到應用,取得了良好的現(xiàn)場應用效果。


參考文獻
[1] 張延宇,曹云俠. 基于USB的CAN適配卡的設(shè)計與實現(xiàn)[J].微計算機信息,2006,22(1):6-8.
[2] ?高強,任恩恩,張濤. CAN總線的PCI接口通信卡設(shè)計[J].電子技術(shù)應用,2007,33(7):122-124.
[3] ?周立功. PDIUSBD12固件編程與驅(qū)動開發(fā)[M]. 北京:北京航空航天大學出版社,2003.
[4] ?律德才,馬峰. CAN總線控制器SJA1000的原理及應用[J].電測與儀表,2002,(4):57-59.
[5] ?CENA G, VALENZANO A.FastCAN: A high-performance?enhance CAN-like network[J]. IEEE Transactions on
Industrial? Electronics, 2000,47(4):951-952.
[6] ?高軍,劉曉莉,趙延明.基于LPC2292的CAN總線USB接口適配器的設(shè)計[J].化工自動化及儀表,2007,34(4):49-52.
[7] ?張紅彩,賴聯(lián)琨,姜學東.USB總線在CAN接口卡上的應用與設(shè)計[J].自動化與儀表,2006,(3):27-30.
[8] ?CANT C. Windows WDM 設(shè)備驅(qū)動程序開發(fā)指南[M].北京:機械工業(yè)出版社,2000.

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經(jīng)濟損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。
主站蜘蛛池模板: 国产亚洲欧美日本一二三本道 | 国产高清不卡一区二区 | 精品成人在线观看 | 欧美精品18xxxhd4k | 狠狠色狠狠色综合日日32 | 91国内外精品自在线播放 | 久久婷婷色 | 成人毛片在线 | 人成18亚洲资源在线 | 欧美激情亚洲精品日韩1区2区 | 麻豆回家视频区一区二 | 国产精品正在播放 | 你懂的 在线视频 | 香蕉精品一本大道在线观看 | 大又大又黄又爽免费毛片 | 久久久噜久噜久久综合 | 欧美 日韩 中文 | 大学生一级特黄的免费大片视频 | 九九成人| 国产精品久久久天天影视香蕉 | 在线观看www| 国产免费叼嘿网站免费 | 羞羞免费网站 | 手机看片一区二区 | 在线看色片| 麻豆国产精品一二三在线观看 | 午夜网站入口 | 国产精品视频一区二区三区不卡 | 成人在线一区二区三区 | 在线观看国产日本 | 国产美女在线一区二区三区 | 夭天曰天天躁天天摸在线观看 | 成人免费视频国产 | 精品国产亚洲一区二区在线3d | 国产成人精品视频 | 欧美专区亚洲专区 | 天堂中文资源在线观看 | 久久久久久久九九九九 | 国产 中文 制服丝袜 另类 | 国产成人在线播放 | 五月天婷婷在线观看高清 |