新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于PCI總線CAN卡設計與實現

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

        作者: 時間:2012-03-14 來源:網絡 收藏

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

        由于P可以啟動局部總線的讀寫,CAN卡不再需要微控制器,采用CAN通信控制器即可,本CAN卡采用S。S支持BasicCAN和PeliCAN模式,具有FIFO、支持熱插拔等功能,不但可以實現C接口功能,而且芯片可以根據晶振的頻率,輸出可編程的CLKOUT信號,該信號正好可作為P的局部總線的總線頻率,節省了器件,方便了設計。C的總線頻率可為12MHz、16MHz或24MHz,P自動實現局部總線與的訪問同步。CAN總線收發器采用82C250。該芯片是CAN總線控制器和物理總線的接口,可以提供對CAN總線的差動發送和接受能力,具有抗瞬間干擾、保護總線的能力,可以通過調整CAN總線上通訊脈沖的邊沿斜率來降低射頻干擾。
        由于PCI設備在計算機中的硬件資源是系統動態分配的,因此在設計出基本的硬件框架后,要進行PCI配置設計。CAN卡的硬件資源為映射S內部寄存器的內存映射空間和一個中斷源。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的92LC46B。用PLX公司提供的開發工具PlxMon可對90LC46B進行讀寫。
        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


        上一頁 1 2 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 文安县| 绥芬河市| 馆陶县| 新宁县| 津南区| 吉木乃县| 剑阁县| 佳木斯市| 临猗县| 沾化县| 大理市| 元阳县| 仁寿县| 高尔夫| 阿克苏市| 满洲里市| 葫芦岛市| 禹州市| 鹰潭市| 怀来县| 华阴市| 清远市| 兖州市| 宜丰县| 多伦县| 罗平县| 定襄县| 若尔盖县| 宁阳县| 丰宁| 吉首市| 桐乡市| 花莲县| 尤溪县| 神木县| 宁武县| 孝义市| 当涂县| 林州市| 石阡县| 汕头市|