新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于PCI總線CAN卡設(shè)計(jì)與實(shí)現(xiàn)

基于PCI總線CAN卡設(shè)計(jì)與實(shí)現(xiàn)

作者: 時(shí)間:2012-03-14 來源:網(wǎng)絡(luò) 收藏

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

由于P可以啟動(dòng)局部總線的讀寫,CAN卡不再需要微控制器,采用CAN通信控制器即可,本CAN卡采用S。S支持BasicCAN和PeliCAN模式,具有FIFO、支持熱插拔等功能,不但可以實(shí)現(xiàn)C接口功能,而且芯片可以根據(jù)晶振的頻率,輸出可編程的CLKOUT信號,該信號正好可作為P的局部總線的總線頻率,節(jié)省了器件,方便了設(shè)計(jì)。C的總線頻率可為12MHz、16MHz或24MHz,P自動(dòng)實(shí)現(xiàn)局部總線與的訪問同步。CAN總線收發(fā)器采用82C250。該芯片是CAN總線控制器和物理總線的接口,可以提供對CAN總線的差動(dòng)發(fā)送和接受能力,具有抗瞬間干擾、保護(hù)總線的能力,可以通過調(diào)整CAN總線上通訊脈沖的邊沿斜率來降低射頻干擾。
由于PCI設(shè)備在計(jì)算機(jī)中的硬件資源是系統(tǒng)動(dòng)態(tài)分配的,因此在設(shè)計(jì)出基本的硬件框架后,要進(jìn)行PCI配置設(shè)計(jì)。CAN卡的硬件資源為映射S內(nèi)部寄存器的內(nèi)存映射空間和一個(gè)中斷源。PCI9052提供5個(gè)局部地址空間,可以選用其中的一個(gè)作為SJA1000的地址空間,分配32個(gè)8位地址。同時(shí)設(shè)置相應(yīng)的初始化,PCI配置寄存器中的寄存器PCIBAR2設(shè)置為0XFFFFFFE0,向系統(tǒng)請求分配內(nèi)存的數(shù)量為32,類型為不可預(yù)讀,其它寄存器的值可設(shè)置為0。設(shè)置局部地址空間的范圍為0X00000000~0X00000020。PCI9052提供2個(gè)局部中斷源,利用LINTi1即可,注意的是:LINTi1信號線沒有驅(qū)動(dòng)能力,SJA1000的INT引腳也沒有驅(qū)動(dòng)能力,因此該信號線必須加上拉電阻,否則該信號線的電平不確定,工作肯定不正常。SJA1000提供電平觸發(fā)中斷信號,因此PCI9052的中斷觸發(fā)模式設(shè)置為電平觸發(fā)。利用PCI9052的局部設(shè)備片選CS0#作為SJA1000的片選信號。CS0#片選信號的起始地址和地址范圍由CS0 Base Address寄存器設(shè)置,值為0X00000002。另外,PCI9052的LRDYi#信號為局部總線數(shù)據(jù)準(zhǔn)備信號,SJA1000的寄存器地址映射成地址,數(shù)據(jù)傳輸不存在延遲等待,因此LRDYi#引腳可接地,表示SJA1000的寄存器總是立即可讀寫。PCI9052寄存器的初始值由串行EEPROM提供,在PCI9052加電后讀取。EEPROM必須采用支持連讀功能的芯片,本設(shè)計(jì)采用Microchip的92LC46B。用PLX公司提供的開發(fā)工具PlxMon可對90LC46B進(jìn)行讀寫。
PCI9052的硬件調(diào)試可采用PlxMon。利用它可以對PCI設(shè)備的配置資源進(jìn)行檢驗(yàn)。利用PLX提供的SDK,可以對PCI9052的局部寄存器、局部總線及EEPROM進(jìn)行讀寫,這樣可以調(diào)試硬件。借助開發(fā)工具,不必開發(fā)PCI設(shè)備的調(diào)試軟件,可節(jié)省很多時(shí)間。同時(shí),SDK也為驅(qū)動(dòng)程序的開發(fā)提供了程序框架,加快了開發(fā)進(jìn)度。
CAN卡的電路框圖如圖1所示。 2 軟件設(shè)計(jì)
軟件設(shè)計(jì)包括驅(qū)動(dòng)程序的設(shè)計(jì)和COM組件程序設(shè)計(jì)。
由于PCI設(shè)備的中斷、I/O端口、映射內(nèi)存等資源都是動(dòng)態(tài)分配的,必須編寫驅(qū)動(dòng)程序管理硬件,才能供用戶編程使用。為了通用性和兼容性,CAN卡驅(qū)動(dòng)程序的開發(fā)采用支持Windows XP、Windows2000和Windows98的WDM驅(qū)動(dòng)程序。開發(fā)工具采用Visual C++6.0和Win2000 DDK。由于CAN卡上沒有微控制器,因此對CAN總線端口的所有操作都是由驅(qū)動(dòng)程序來完成的。這不僅可以由計(jì)算機(jī)來實(shí)現(xiàn)復(fù)雜的功能,例如,錯(cuò)誤檢測、斷點(diǎn)續(xù)傳等,同時(shí)節(jié)省了硬件,而且有利于CAN卡的升級--只要更換驅(qū)動(dòng)程序即可。驅(qū)動(dòng)程序的功能主要是配置SJA1000的CAN接口、收發(fā)CAN總線上的數(shù)據(jù)、對CAN總線進(jìn)行實(shí)時(shí)監(jiān)測、接收用戶程序的收發(fā)命令。收發(fā)數(shù)據(jù)和CAN總線錯(cuò)誤均采用中斷處理,驅(qū)動(dòng)程序可以快速響應(yīng),通過事件(Event)內(nèi)核對象直接通知給用戶程序。由于WDM驅(qū)動(dòng)程序運(yùn)行在系統(tǒng)的內(nèi)核態(tài),編寫非常復(fù)雜,限于篇幅,僅給出軟件的框圖(見圖2)。為了方便用戶的使用,還應(yīng)編寫相應(yīng)的API函數(shù)或ActiveX控件等其它應(yīng)用層的程序提供給用戶。由于ActiveX控件基于先進(jìn)的COM技術(shù),具有良好的封裝性、使用靈活性等特點(diǎn),可使用戶編程簡單、方便,因此在CAN卡的設(shè)計(jì)中編寫了ActiveX控件。ActiveX控件負(fù)責(zé)與驅(qū)動(dòng)程序的通信,通過控件的事件把CAN卡接收的數(shù)據(jù)通知給用戶程序,利用控件的屬性設(shè)置CAN通信控制器,按照設(shè)置的方法發(fā)送用戶程序的數(shù)據(jù)。
根據(jù)以上的設(shè)計(jì),開發(fā)了名為Can1000的CAN卡。經(jīng)使用證明,該卡設(shè)計(jì)簡單明了、性能較高、成本低廉、驅(qū)動(dòng)程序和ActiveX控件使用方便,達(dá)到了設(shè)計(jì)和用戶的要求。

參考文獻(xiàn)
1 PCI 9052 Data Book. PLX公司,2001
2 Winows2000 DDK Documents. 微軟公司,2000
3 Chris Cant著,孫義等譯.Windows WDM設(shè)備驅(qū)動(dòng)程序開發(fā)指南.北京:機(jī)械工業(yè)出版社,
2000
4 陽憲惠. 現(xiàn)場總線技術(shù)及其應(yīng)用.北京:清華大學(xué)出版社1999


上一頁 1 2 下一頁

關(guān)鍵詞: PCI總線 CI9052 AN總線 JA1000

評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉