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

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

2009-02-12
作者:季厭浮

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

?

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

?


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

?

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

?


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

?

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


參考文獻
[1] 張延宇,曹云俠. 基于USB的CAN適配卡的設計與實現[J].微計算機信息,2006,22(1):6-8.
[2] ?高強,任恩恩,張濤. CAN總線的PCI接口通信卡設計[J].電子技術應用,2007,33(7):122-124.
[3] ?周立功. PDIUSBD12固件編程與驅動開發[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接口適配器的設計[J].化工自動化及儀表,2007,34(4):49-52.
[7] ?張紅彩,賴聯琨,姜學東.USB總線在CAN接口卡上的應用與設計[J].自動化與儀表,2006,(3):27-30.
[8] ?CANT C. Windows WDM 設備驅動程序開發指南[M].北京:機械工業出版社,2000.

本站內容除特別聲明的原創文章之外,轉載內容只為傳遞更多信息,并不代表本網站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創文章及圖片等內容無法一一聯系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經濟損失。聯系電話:010-82306118;郵箱:aet@chinaaet.com。
主站蜘蛛池模板: 深夜a | 草草视频手机在线观看视频 | 91日本| 成人黄色在线播放 | 成人国产亚洲 | 成人亚洲网站www在线观看 | 日韩精品一级毛片 | 欧美国产成人精品一区二区三区 | 亚洲图区综合网 | 天天狠天天透天天伊人 | 中文字幕在线免费播放 | www亚洲成人| 色哟哟在线网站 | 一级特黄aa毛片免费观看 | 超91视频 | 亚洲第一视频在线 | 中文字幕手机在线播放 | 亚洲国产欧美精品 | 日日夜夜人人 | 成人免费专区 | 黄 色 免 费 网站在线观看 | 成年视频网站免费观看 | 人人干视频在线观看 | 91无套极品外围在线播放 | 波多野结衣福利 | 青草草在线观看免费视频 | 91欧美| 免费的一级片 | 毛片段 | 本道久久综合88全国最大色 | 亚洲性人人天天夜夜摸 | 成人福利在线视频免费观看 | 亚洲人人看 | 日韩视频在线免费观看 | 国产欧美一区视频在线观看 | jizz国产丝袜18老师美女 | 宠溺高h共妻 | 五月六月丁香 | 看的免费污污网站 | 97影院午夜午夜伦不卡 | 成人免费看黄网址 |