《電子技術應用》
您所在的位置:首頁 > 其他 > 业界动态 > 一种高性价比CAN总线适配卡的设计与实现

一种高性价比CAN总线适配卡的设计与实现

2008-12-17
作者:张素文, 龚 曦, 池宏军

  摘 要: 針對傳統CAN總線設備存在的系統規模大、功耗高、成本高等問題,提出并實現了一種高性價比CAN適配" title="適配">適配卡系統。介紹了系統總體結構,闡述了軟硬件組成及其功能,并給出硬件具體設計方案及驅動程序的實現方法。經實踐證明,該適配卡系統完全可滿足實際需要且結構簡單、能耗低、穩定性能好。
  關鍵詞: CAN總線; 適配卡; 驅動程序; 動態鏈接庫

?

  CAN總線是眾多現場總線中的一種,因其廉價高效的特點在工業生產的各個領域得到極廣泛的應用。目前市場上有很多型號的CAN總線設備,大多數使用并行總線器件和可編程邏輯器件,從而增加了規模和復雜程度,提高了系統功耗和成本。針對以上問題,本文提出一種高性價比CAN適配卡設計方案。該方案采用廉價高性能的16位ARM芯片LPC2212為核心控制器,以低能耗的SPI接口器件MCP2515代替傳統的并行接口器件作為CAN總線控制器,以帶PCI總線控制器的128KB雙口RAM 芯片CY7C09449PV-AC作為上位機" title="上位機">上位機與局部總線" title="局部總線">局部總線的連接中介,免去復雜的時序設計,有效地降低了系統的功耗,縮小了系統的規模,實現了高性價比。
1 系統總體結構
  圖1為適配卡系統結構圖。系統由上位機總線接口和CAN總線接口兩大模塊組成,選擇PCI為與上位機接口的總線。如圖1所示,PCI總線接口由PCI接口控制器和EEPROM組成, PCI接口控制器完成將PCI信號轉換成局部總線信號的功能,EEPROM則存儲PCI總線和局部總線的配置信息,系統上電時,PCI接口控制器會自動讀取完成配置過程[1]。CAN總線接口由微處理器、CAN控制器、CAN收發器和光電隔離器四部分組成[2]。CAN控制器是CAN總線的核心單元,完成CAN通信協議的全部要求。CAN收發器提供對總線的差動發送能力和對控制器的差動接收能力。光電隔離器則實現收發器與控制器之間的電氣隔離,保護控制系統電路。系統采用16位微處理器LPC2212為控制器,主要功能是對CAN控制器的初始化和上行傳輸數據(CAN總線向上位機傳送數據)、下行傳輸數據(CAN總線向下位機傳送數據)的預處理。

?

?


2 系統硬件設計
2.1 PCI總線接口芯片的選擇
  PCI總線功能強大,具有良好的兼容性。但同時它的協議十分復雜,設計上有一定的難度。其接口芯片的選擇最簡單有效的方法就是使用芯片廠商制造的專用PCI總線接口芯片。選擇帶PCI總線控制器的128KB雙口SRAM存儲器CY7C09449PV-AC作為PCI總線和局部總線的橋接芯片。
  CY7C09449PV-AC包含有128KB的共享存儲空間,能提供滿足PCI 2.2規范的主、從模式接口,且具有與局部總線微處理器兼容的接口,是一款優質廉價的PCI總線控制器[3]
  除了完成將兩種總線連接的基本功能外,CY7C09449PV-AC的使用還能夠避免冗余復雜的時序設計。因其含有一個可供PCI總線和局部總線共享的雙口RAM,在需要進行通信時,將通信發起方待發送信息存儲到共享RAM中,再由通信的接收方讀取存儲在RAM中的內容,從而實現通信,避免了CPLD、FPGA等可編程邏輯器件的使用,大大簡化了系統的復雜程度。
2.2 CAN總線接口的實現
  采用16位ARM微處理器芯片LPC2212、獨立CAN控制器MCP2515、高速CAN收發器TJA1050以及光電隔離器6N137共同完成CAN總線接口電路的實現。MCP2515是一款獨立CAN協議控制器,它因帶有兩個驗收屏蔽寄存器和六個驗收濾波寄存器而可以過濾掉不滿足條件的報文,減少微處理器的開銷。此外,它不同于一般的并行總線控制器,MCP2515與微控制器的數據傳輸是通過SPI接口來實現的,大大節省了I/O" title="I/O">I/O口和降低系統功耗[4]。高速CAN收發器TJA1050是傳統CAN總線收發器PCA82C250的后繼產品,能夠實現CAN控制器和通信線路的物理連接,提高CAN總線的驅動能力和穩定性。為了進一步提高系統的抗干擾能力,將MCP2515的TXCAN、RXCAN引腳通過高速光電隔離器6N137后與TJA1050相連,這樣可以使適配卡不受地面環流的影響,有效地實現電氣隔離,確保系統穩定性。
  圖2為CAN接口硬件連接圖。需要特別指出的是:(1)MCP2515的片選信號直接連接到LPC2212任一標準I/O口引腳,在進行數據傳輸時須通過編程將該I/O口引腳的電平拉低,以確保MCP2515時刻被選中,否則傳輸將被終止; (2)同一時刻系統只允許一個主機操作總線,系統配置LPC2212為 SPI主機,根據其使用規則,SSEL引腳必須保持高電平,才能真正執行主機功能[3];(3)圖2(a)是MCP2515的復位電路。MCP2515有兩種復位方式:硬件復位和SPI復位,系統采用在RESET引腳上連一個RC電路實現MCP2515的硬件復位。電路中二極管的作用是在VDD5掉電時幫助電容快速放電。R2的作用是限制從電容流入RESET引腳的電流,以避免RESET引腳因靜電放電或過度電性應力而擊穿,其阻值選取在1kΩ~10kΩ之間。

?


2.3 PCI_CAN總線互連設計
  因CY7C09449PV-AC提供了與局部微處理器兼容的接口,故可直接與LPC2212連接。CY7C09449PV-AC與LPC2212的連接電路圖如圖3所示。READ和WRITE分別是存儲器的讀、寫信號線,LPC2212沒有專門的引腳提供讀寫信號,采用兩個I/O口連接到外部存儲器的讀寫引腳,通過編程產生讀寫信號時序。RDY_IN和RDY_IN是局部總線引腳,表明局部微處理器已準備好進行數據操作,將兩引腳分別上拉和下拉,表示總是有效。IRQ_IN和IRQ_OUT分別是數據存儲器的中斷輸入和中斷輸出引腳,IRQ_IN可以接收來自LPC2212的中斷信息,并通過PCI控制器傳遞到INTA引腳,進而到達上位機;IRQ_OUT可將中斷信息傳送到局部微處理器以便進行數據操作。如圖3所示,將IRQ_OUT連接到LPC2212的P0.3外部中斷1輸入引腳,而配置P1.16為標準I/O口連接到CY7C09449PV-AC的IRQ_IN,并編程實現中斷信號的輸出。RDY_OUT為CY7C09449PV-AC的準備好應答信號,當此引腳電平有效時,說明存儲器已準備進行數據操作,將其與LPC2212的已配置為標準I/O口的P1.17相連,編程查詢存儲器的狀態。MCP2515的片選信號是由LPC2212的部分地址線通過DPLD(地址解碼PLD)邏輯處理后產生。其優點是地址解碼PLD電路不僅提供CY7C09449PV-AC的片選信號還可以提供其他器件的片選信號,給系統留下充分的擴展空間。

?

3 系統軟件設計
3.1 適配卡程序設計

  適配卡程序調度微處理器完成MCP2515的初始化、上行數據傳輸和下行數據傳輸三大功能。MCP2515的初始化主要包括:設置模式、總線時序、中斷使能、標識符表格等,這些設置均通過向其對應的寄存器賦值來完成。進行下行數據傳輸時,由CY7C09449PV-AC接收來自上位機的數據并向LPC2212發出中斷信號,LPC2212讀取共享存儲器中的數據并將其通過CAN控制器MCP2515發送到CAN總線上。進行上行數據傳輸時,MCP2515接收到來自CAN總線的數據并向LPC2212發出中斷信號,LPC2212將存儲在MCP2515接收緩沖器中的數據傳送到共享存儲器,并通過CY7C09449PV-AC向PCI總線發出中斷,上位機程序讀取數據。
  CY7C09449PV-AC作為兩種總線的中介部分,該雙口RAM有16KB的共享空間。以上位機為參照把它分成單個容量為8KB的兩個區間,如圖4所示。0x4000H~0x5fff為發送幀空間,0x6000H~0x7fffH為接收幀空間,0x4E8H是上位機對局部處理器的郵箱HLDATA的地址,0x4F8H是局部處理器對上位機的郵箱LHDATA的地址。把發送空間和接收空間設計成兩個循環分別用兩個指針來控制,在HLDATA中存放上位發送幀地址指針和上位接收幀地址指針,在LHDATA中存放局部發送幀地址指針和局部接收幀地址指針。上位機每接收一個幀,上位接收幀地址加1;每發送一個幀,上位發送幀地址加1。LPC2212每接收一個幀,局部接收幀地址加 1;每發送一個幀,局部發送幀地址加1。這樣能有效直觀地控制共享區間,簡單實用。

?

3.2 上位機軟件設計
  系統上位機軟件包括CAN適配卡驅動程序和應用程序動態鏈接庫" title="動態鏈接庫">動態鏈接庫兩大部分。
3.2.1 CAN適配卡驅動程序設計
  驅動程序主要完成的功能包括:列舉設備、找到所需設備、列舉設備所有資源、鎖定設備資源、訪問設備資源、解鎖設備資源和釋放設備。具體完成如下工作:(1)幫助上位機獲取CAN適配卡上的資源;(2)CAN適配卡的I/O口控制,包括上位機對適配卡的讀寫;(3)CAN適配器的中斷控制,系統只對接收中斷開放,當MCP2515收到來自CAN網絡的數據時通過LPC2212產生中斷信號,驅動程序立即進行中斷處理,將收到的數據放入接收緩沖區。
  采用Windriver開發系統驅動程序,該軟件主要開發ISA、USB、PCI接口的硬件設備驅動,并包含有Windriver Wizard、Windriver發行包、多個公用程序等資源,完全能夠達到設計要求[5]。開發過程如下:(1)使用自帶的Driver Wizard工具查找需要編寫驅動程序的適配卡,并用CREATE INF FILE產生INF文件,然后添加新硬件;(2)設置適配卡上的配置寄存器;(3)對適配卡上的I/O空間、內存空間、中斷資源進行配置,以便驅動程序能獲得這些資源;(4)自動生成源代碼,并人為進行功能代碼的添加,如中斷服務程序等。
3.2.2 動態鏈接庫的設計
  動態鏈接庫是上層應用程序與底層驅動程序的接口,被應用程序調用并借助驅動程序對物理硬件進行數據操作[6]。由于Windows具有與設備無關的特性,如果直接用Windows的API函數或I/O讀寫指令進行訪問和操作,程序運行時往往會產生保護模式錯誤甚至死機,更嚴重的情況會導致系統崩潰。用動態鏈接庫技術可以方便地解決上述問題。將Windows的API函數或I/O讀寫指令的訪問和操作封裝成一個DLL,用CreateFile( )函數打開設備,用I/O管理器構造一個IRP傳送給總線驅動程序,由驅動程序完成該請求或者請求進一步傳送給端口驅動程序,然后返回執行狀態。本系統的動態鏈接庫主要包含以下四個功能函數:(1)PCICAN_Actv:獲取一個用于對適配卡進行讀寫操作的指針;(2)PCICAN_TrnsDat:用于向CAN總線上的節點發送信息;(3)PCICAN_RecvDat:用于接收來自CAN總線上的信息;(4)PCICAN_Deactv:用以關閉CAN通信卡,釋放設備資源。
  本文在充分研究了市場上的CAN總線適配卡的基礎上,成功地設計了一款基于PCI的CAN總線適配卡。將適配卡插在PC機上與一自制CAN總線節點進行通信,該卡在長時間的測試中能保持正常運轉、性能穩定、通信速度快、發熱量低、占用CPU時間少,有較好的可靠性和實時性。且結構簡單、規模小、性價比高,符合當今電子設備的發展趨勢。


參考文獻
[1] ?李貴山,戚得虎. PCI局部總線開發者指南[M]. 西安:西安電子科技大學出版社,2000.
[2] ?鄔寬明.CAN總線原理和應用系統設計[M].北京:北京航空航天大學出版社,1996.
[3] ?Cypress Semiconductor Corporation, CY7C09449PV-AC?data book[S]. 2002.
[4] ?Microchip Technology Inc. MCP2515 data book[S].2005.
[5] ?張熙,王悠. PCI總線高速數據傳輸系統設計[J].微計算機信息,2007,(1):34,142-143.
[6] ?CANT C著.Windows WDM設備驅動程序開發指南[M].孫義,馬莉波,國雪飛,等譯.北京:機械工業出版社,1999.

本站內容除特別聲明的原創文章之外,轉載內容只為傳遞更多信息,并不代表本網站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創文章及圖片等內容無法一一聯系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經濟損失。聯系電話:010-82306118;郵箱:aet@chinaaet.com。
主站蜘蛛池模板: 亚洲自拍中文字幕| 宅男在线精品国产免费观看| 国产精品美女诱惑| 久久九九国产精品怡红院 | 亚洲一区国产精品| 美女精品国产| 日韩精品一区二区三区四| 国产在线高清精品| 国产欧美日韩中文| 日韩免费观看网站| 日韩一二三区不卡在线视频| 宅男在线精品国产免费观看| 99国产在线| 国产精品二区在线观看| 精品无码一区二区三区爱欲| 久久免费99精品久久久久久| 欧洲精品久久久| 亚洲精品蜜桃久久久久久| 国产精品91久久| 国产专区精品视频| 久久久国产精品免费| 欧美韩国日本精品一区二区三区| 日韩一区二区高清视频| 无码中文字幕色专区| 亚洲一卡二卡| 91国产一区在线| 777国产偷窥盗摄精品视频| 国产精品观看在线亚洲人成网| 国产欧美日韩综合精品| 国产欧美精品xxxx另类| 国产精品欧美久久| 国产精品大全| 99精品视频播放| 亚洲中文字幕久久精品无码喷水| 91精品国产91久久久久久久久 | 欧洲国产精品| 亚洲永久激情精品| 青青精品视频播放| 色综合久久中文字幕综合网小说| 国产传媒久久久| 久久99久久99精品|