《電子技術應用》
您所在的位置:首頁 > 其他 > 業界動態 > 基于PCI總線的CAN卡的設計與實現

基于PCI總線的CAN卡的設計與實現

2008-11-04
作者:柳 泉 羅耀華1 柳華偉2

??? 摘? 要: 介紹了PCI橋接口芯片" title="接口芯片">接口芯片PCI9052和CAN接口芯片SJA1000,給出了基于PCI總線的CAN總線適配卡軟硬件的設計思路、過程及實現方法。?

??? 關鍵詞: PCI總線? PCI9052? CAN總線? SJA1000

?

??? 現場總線CAN(Controller Area Network控制器局域網絡)以其高性能、高可靠性及獨特的設計,越來越受到人們的重視和青睞,不但在汽車行業中應用廣泛,而且在工業控制、機器人、醫療器械、傳感器等領域發展迅速。為了擴展CAN總線的功能,與計算機相連,可設計具有CAN接口和PC接口的CAN適配卡,用來收集CAN總線上各個節點的信息,轉發給PC機,并可將PC機的命令和數據轉發給各個節點以及完成對CAN總線上的用戶系統的部分監控和管理工作。?

??? PCI總線是Intel公司推出的一種先進的高性能32/64位局部總線" title="局部總線">局部總線,可同時支持多組外圍設備,不受制于處理器,數據吞吐量大 (33MHz總線頻率、32位傳輸時峰值可高達132MB/s)。目前PCI是處于主流的計算機總線。以往的CAN卡一般都是基于ISA總線的,由于ISA總線傳輸速率低,CAN卡必須增加中繼控制功能,才能夠適應CAN的高速傳輸,導致造價高、體積大、傳輸速率低,不利于CAN總線的推廣應用。由于PCI總線傳輸速度快,而且支持熱插拔、電源管理等功能,不但能滿足CAN總線的高速數據傳輸,性能高、功能強,而且體積小、價格低、使用方便、應用范圍廣。?

??? CAN卡的設計包括硬件設計和軟件設計。?

1 硬件設計?

??? PCI總線是一種獨立于CPU的局部總線,不同于傳統的ISA總線。由于PCI總線規范定義了嚴格的電氣特性和時序要求,開發難度比ISA總線的開發難度大。實現PCI接口的方案一般有兩種:采用可編程邏輯器件和專用總線接口器件" title="接口器件">接口器件。采用可編程邏輯器件實現PCI接口的最大好處是比較靈活,可把PCI時序模塊和功能模塊結合在一起,可以利用的器件也比較多(如Altera公司的CPLD器件、Xilinx公司的FPGA器件等),還可以購買由廠家提供的用VHDL、AHDL等硬件描述語言編制的PCI核心設計模塊,但其設計難度還是很高,因為PCI總線對負載要求、傳輸數據的建立時間的要求都比較苛刻,同時還需要器件內部實現用于配置的各類寄存器,以及完成邏輯校驗、地址譯碼等工作的寄存器(大致需要15000個門電路)。此外,還需加入FIFO、用戶寄存器組和后端設備接口等部分。設計這種PCI總線接口會導致將大量的人力、物力投入到復雜的邏輯驗證和時序分析的工作上,開發周期較長。采用專用接口器件雖然沒有采用可編程邏輯器件那么靈活,但能夠有效地降低接口設計的難度,縮短開發時間。專用接口器件具有較低的成本和很高的通用性,能夠優化數據傳輸,提供配置空間,具備用于突發傳輸功能的片內FIFO,提供擴展局部總線等優點,并且許多公司還提供配套的開發工具" title="開發工具">開發工具(例如評估板或驅動程序開發軟件),使用很方便,開發周期短。目前市場上常見的有PLX、AMCC、Cypress等公司的PCI橋芯片,各個型號的PCI接口芯片的大致特點如表1所示。?

?

?

??? PCI設備可分為主模式和從模式。主模式橋芯片可以進行DMA操作,而從模式只能接受讀寫操作。根據PCI提供的傳輸數據帶寬(最大132MB/s)和CAN總線(最大1Mbps)的要求,加上經濟和開發難度與周期上的考慮(主模式橋芯片較昂貴,開發難度較大),又因不需要DMA功能,采用從模式橋芯片足以滿足傳輸數據的需要。此外,選擇芯片不僅考慮性能和經濟上的要求,而且還需要考慮硬件開發和驅動程序開發的難易。如果不提供足夠的芯片說明和應用樣例及開發工具,將大大增加開發難度和延長開發周期。因此,采用PLX公司的PCI總線目標接口芯片PCI9052作為CAN卡中的PCI接口芯片,負責與計算機之間的數據通信。

??? PCI9052是PLX公司開發的低價格PCI總線從模式接口芯片,低功耗,符合PCI2.1規范,提供的局部總線(Local Bus)可通過編程設置為8/16/32位的(非)復用總線。其主要特點有:?

??? (1)直接數據轉換模式? PCI9052支持PCI到Local Bus的內存映射和I/O" title="I/O">I/O映射的突發讀寫。?

??? (2)ISA接口邏輯? PCI9052支持通過8/16位內存映射或I/O映射從PCI到ISA總線的單周期讀、寫訪問。方便從ISA卡向PCI卡的轉換。?

??? (3)中斷產生器? 由Local Bus的兩個中斷信號可以產生一個PCI中斷信號:INTA#。?

??? (4)局部總線? PCI9052提供的局部總線不但可編程,而且與PCI總線的時鐘相互獨立運行,可實現異步操作,總線操作自動實現時序同步。兩總線的異步運行方便了高、低速設備的兼容。局部的運行時鐘頻率范圍0~40MHz、TTL電平,可由PCI提供或由用戶自行提供;PCI的運行時鐘頻率范圍0~33MHz。?

??? (5)串行EEPROM? 用于存放PCI BUS和Local Bus的部分配置信息。?

??? (6)4個局部設備片選? 基址和地址范圍可以由串行EEPROM或主控設備進行設置。?

??? (7)5個局部地址空間? 基址和地址范圍及其映射可以由串行EEPROM或主控設備進行設置。?

??? (8)Big/Little Endian模式的字節交換? 適合不同計算機體系。?

??? (9)局部總線等待狀態? 除了等待信號LRDYi#用于握手之外,PCI9052還有一個內部等待產生器(包括地址到數據周期、數據到數據周期和數據到地址周期的等待)。?

??? (10)延遲讀模式? PCI9052支持PCI2.1規范的延遲讀模式。?

??? (11)FIFO? PCI9052包括一個64Byte的寫FIFO和一個32Byte的讀FIFO,從而支持預取模式、即突發操作。?

??? (12)PCI鎖定機制? 主控設備可以通過鎖定信號占有對PCI9052的唯一訪問權。?

??? 由于CAN總線的迅猛發展,許多芯片廠商開發了很多系列的CAN通信控制器芯片。如表2所示。?

?

?

??? 由于PCI9052可以啟動局部總線的讀寫,CAN卡不再需要微控制器,采用CAN通信控制器即可,本CAN卡采用SJA1000。SJA1000支持BasicCAN和PeliCAN模式,具有FIFO、支持熱插拔等功能,不但可以實現CAN總線接口功能,而且芯片可以根據晶振的頻率,輸出可編程的CLKOUT信號,該信號正好可作為PCI9052的局部總線的總線頻率,節省了器件,方便了設計。CAN總線的總線頻率可為12MHz、16MHz或24MHz,PCI9052自動實現局部總線與PCI總線的訪問同步。CAN總線收發器采用82C250。該芯片是CAN總線控制器和物理總線的接口,可以提供對CAN總線的差動發送和接受能力,具有抗瞬間干擾、保護總線的能力,可以通過調整CAN總線上通訊脈沖的邊沿斜率來降低射頻干擾。?

??? 由于PCI設備在計算機中的硬件資源是系統動態分配的,因此在設計出基本的硬件框架后,要進行PCI配置設計。CAN卡的硬件資源為映射SJA1000內部寄存器的內存映射空間和一個中斷源。PCI9052提供5個局部地址空間,可以選用其中的一個作為SJA1000的地址空間,分配32個8位地址。同時設置相應的初始化,PCI配置寄存器中的寄存器PCIBAR2設置為0XFFFFFFE0,向系統請求分配內存的數量為32,類型為不可預讀,其它寄存器的值可設置為0。設置局部地址空間的范圍為0X00000000~0X00000020。PCI9052提供2個局部中斷源,利用LINTi1即可,注意的是:LINTi1信號線沒有驅動能力,SJA1000的INT引腳也沒有驅動能力,因此該信號線必須加上拉電阻,否則該信號線的電平不確定,工作肯定不正常。SJA1000提供電平觸發中斷信號,因此PCI9052的中斷觸發模式設置為電平觸發。利用PCI9052的局部設備片選CS0#作為SJA1000的片選信號。CS0#片選信號的起始地址和地址范圍由CS0 Base Address寄存器設置,值為0X00000002。另外,PCI9052的LRDYi#信號為局部總線數據準備信號,SJA1000的寄存器地址映射成地址,數據傳輸不存在延遲等待,因此LRDYi#引腳可接地,表示SJA1000的寄存器總是立即可讀寫。PCI9052寄存器的初始值由串行EEPROM提供,在PCI9052加電后讀取。EEPROM必須采用支持連讀功能的芯片,本設計采用Microchip的93LC46B。用PLX公司提供的開發工具PlxMon可對93LC46B進行讀寫。?

??? PCI9052的硬件調試可采用PlxMon。利用它可以對PCI設備的配置資源進行檢驗。利用PLX提供的SDK,可以對PCI9052的局部寄存器、局部總線及EEPROM進行讀寫,這樣可以調試硬件。借助開發工具,不必開發PCI設備的調試軟件,可節省很多時間。同時,SDK也為驅動程序的開發提供了程序框架,加快了開發進度。?

??? CAN卡的電路框圖如圖1所示。?

?

?

2 軟件設計?

??? 軟件設計包括驅動程序的設計和COM組件程序設計。?

??? 由于PCI設備的中斷、I/O端口、映射內存等資源都是動態分配的,必須編寫驅動程序管理硬件,才能供用戶編程使用。為了通用性和兼容性,CAN卡驅動程序的開發采用支持Windows XP、Windows2000和Windows98的WDM驅動程序。開發工具采用Visual C++6.0和Win2000 DDK。由于CAN卡上沒有微控制器,因此對CAN總線端口的所有操作都是由驅動程序來完成的。這不僅可以由計算機來實現復雜的功能,例如,錯誤檢測、斷點續傳等,同時節省了硬件,而且有利于CAN卡的升級——只要更換驅動程序即可。驅動程序的功能主要是配置SJA1000的CAN接口、收發CAN總線上的數據、對CAN總線進行實時監測、接收用戶程序的收發命令。收發數據和CAN總線錯誤均采用中斷處理,驅動程序可以快速響應,通過事件(Event)內核對象直接通知給用戶程序。由于WDM驅動程序運行在系統的內核態,編寫非常復雜,限于篇幅,僅給出軟件的框圖(見圖2)。?

?

?

??? 為了方便用戶的使用,還應編寫相應的API函數或ActiveX控件等其它應用層的程序提供給用戶。由于ActiveX控件基于先進的COM技術,具有良好的封裝性、使用靈活性等特點,可使用戶編程簡單、方便,因此在CAN卡的設計中編寫了ActiveX控件。ActiveX控件負責與驅動程序的通信,通過控件的事件把CAN卡接收的數據通知給用戶程序,利用控件的屬性設置CAN通信控制器,按照設置的方法發送用戶程序的數據。?

??? 根據以上的設計,開發了名為Can1000的CAN卡。經使用證明,該卡設計簡單明了、性能較高、成本低廉、驅動程序和ActiveX控件使用方便,達到了設計和用戶的要求。?

參考文獻?

1 PCI 9052 Data Book. PLX公司,2001?

2 Winows2000 DDK Documents. 微軟公司,2000?

3 Chris Cant著,孫義等譯.Windows WDM設備驅動程序開發指南.北京:機械工業出版社,2000?

4 陽憲惠. 現場總線技術及其應用.北京:清華大學出版社,1999

本站內容除特別聲明的原創文章之外,轉載內容只為傳遞更多信息,并不代表本網站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創文章及圖片等內容無法一一聯系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經濟損失。聯系電話:010-82306118;郵箱:aet@chinaaet.com。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
国产日本欧美一区二区三区在线| 亚洲精选一区| 欧美精品v日韩精品v韩国精品v| 久久激情五月丁香伊人| 亚洲欧美日韩网| 亚洲一区二区黄| 在线亚洲欧美视频| 一区二区国产在线观看| 日韩视频一区二区三区在线播放| 亚洲电影免费观看高清完整版在线| 午夜久久资源| 午夜精品久久一牛影视| 亚洲女优在线| 亚洲欧美成人网| 亚洲欧美在线x视频| 亚洲综合色激情五月| 亚洲免费中文字幕| 午夜视频一区在线观看| 性久久久久久久久| 欧美在线影院| 久久精品女人| 亚洲国产精品高清久久久| 91久久精品一区二区别| 亚洲精品免费电影| 一本色道久久88精品综合| 一本久道久久综合狠狠爱| 亚洲网站视频| 午夜精品视频一区| 久久精品国产久精国产爱| 久久久久国产成人精品亚洲午夜| 久久视频在线视频| 欧美成人精品在线观看| 欧美精品福利| 欧美色中文字幕| 国产精品一区免费观看| 国产一区二区三区四区五区美女 | 欧美亚州韩日在线看免费版国语版| 欧美网站在线| 国产亚洲精品激情久久| 亚洲国产国产亚洲一二三| 亚洲另类黄色| 亚洲免费中文字幕| 亚洲高清激情| 亚洲视频在线观看网站| 欧美中文日韩| 欧美韩国一区| 国产精品久久久久秋霞鲁丝 | 久久激情网站| 99re6热只有精品免费观看| 亚洲欧美日韩视频二区| 久久久水蜜桃| 欧美日韩国产成人精品| 国产视频观看一区| 亚洲国产一区在线| 亚洲午夜精品国产| 久久国产福利国产秒拍| 一本色道久久88综合亚洲精品ⅰ| 亚洲欧美日本日韩| 久久午夜羞羞影院免费观看| 欧美日韩国产一区精品一区 | 午夜国产精品视频| 亚洲精品在线三区| 欧美中文在线视频| 欧美日本国产| 国产综合色精品一区二区三区| 亚洲精品乱码久久久久久蜜桃麻豆| 亚洲亚洲精品在线观看 | 欧美激情第二页| 国产精品一区视频网站| 亚洲国产日韩在线一区模特| 亚洲在线免费观看| 亚洲乱码精品一二三四区日韩在线 | 国产精品99久久久久久www| 久久香蕉国产线看观看av| 欧美丝袜一区二区三区| 影音先锋中文字幕一区二区| 亚洲一区二区3| 夜夜爽av福利精品导航| 久久这里有精品视频| 国产精品美女久久久久久久| 亚洲国产日韩综合一区| 午夜免费日韩视频| 亚洲免费在线看| 欧美黄在线观看| 激情成人在线视频| 亚洲午夜久久久久久尤物| 亚洲乱码视频| 免费成人美女女| 国产尤物精品| 亚洲欧美精品| 亚洲欧美日韩在线观看a三区| 欧美激情一二区| 黄色成人av| 香蕉国产精品偷在线观看不卡| 亚洲在线网站| 欧美日韩国产片| 亚洲电影中文字幕| 久久精品欧美日韩精品| 久久精品一区二区三区四区 | 国产亚洲aⅴaaaaaa毛片| 在线视频欧美一区| 在线一区二区三区四区五区| 欧美福利视频一区| 在线欧美影院| 亚洲激情一区二区三区| 久久人人爽人人爽| 国产午夜亚洲精品不卡| 亚洲欧美日韩精品久久亚洲区| 亚洲女人小视频在线观看| 欧美日韩一区二区三区在线视频| 最新日韩在线| 99亚洲一区二区| 欧美极品影院| 亚洲开发第一视频在线播放| 日韩一级大片在线| 欧美精品久久99久久在免费线| 亚洲国产精品一区制服丝袜| 亚洲欧洲在线一区| 欧美顶级艳妇交换群宴| 亚洲国产精品视频| 亚洲伦伦在线| 欧美另类在线播放| 亚洲毛片在线观看| 中文精品视频| 国产精品xvideos88| 亚洲视频每日更新| 羞羞答答国产精品www一本| 国产区亚洲区欧美区| 欧美一二区视频| 久久久久久国产精品mv| 韩国成人精品a∨在线观看| 久久国产免费| 欧美成人福利视频| 亚洲看片一区| 亚洲欧美一区二区激情| 国产精品丝袜白浆摸在线| 午夜国产一区| 久热这里只精品99re8久| 亚洲国产精品成人久久综合一区| 日韩视频在线一区| 欧美三级电影一区| 亚洲欧美日韩中文播放| 久久久亚洲精品一区二区三区 | 在线一区二区三区四区五区| 欧美亚洲第一区| 亚洲欧美日产图| 久久午夜精品一区二区| 亚洲黑丝一区二区| 亚洲自拍高清| 国产有码一区二区| 亚洲精品一区二区三区婷婷月 | 日韩亚洲欧美一区| 亚洲欧美一区二区视频| 国产在线不卡| 亚洲美女精品成人在线视频| 欧美视频福利| 欧美专区第一页| 欧美精品系列| 亚洲欧美视频在线观看视频| 蜜臀久久99精品久久久久久9 | 亚洲理论在线观看| 国产精品久久久久久久久久免费 | 亚洲欧美日韩精品一区二区| 国内精品免费午夜毛片| 日韩一区二区免费高清| 国产精品一区二区a| 91久久精品国产91久久| 国产精品高清一区二区三区| 亚洲国产黄色片| 欧美视频一区二区| 欧美在线观看日本一区| 欧美日一区二区在线观看| 羞羞色国产精品| 欧美日韩高清在线播放| 欧美一区二区三区免费观看视频 | 国产精品成人va在线观看| 亚洲二区视频| 国产精品多人| 亚洲人成人77777线观看| 国产伦精品一区二区三区高清| 亚洲欧洲日本国产| 国产精品女人毛片| 亚洲免费成人av| 国产综合视频| 亚洲欧美另类中文字幕| 亚洲激情小视频| 久久久久久亚洲精品中文字幕| 日韩一区二区电影网| 久久婷婷色综合| 亚洲香蕉在线观看| 欧美人与禽猛交乱配视频| 久久爱www久久做| 国产精品嫩草99av在线| 亚洲最新视频在线播放| 狠狠入ady亚洲精品| 篠田优中文在线播放第一区| 日韩午夜电影| 欧美国产日韩精品免费观看| 久久se精品一区二区| 国产精品一级|