基于PCI總線的CAN卡的設(shè)計與實現(xiàn)
(12)PCI鎖定機(jī)制 主控設(shè)備可以通過鎖定信號占有對PCI9052的唯一訪問權(quán)。
由于CAN總線的迅猛發(fā)展,許多芯片廠商開發(fā)了很多系列的CAN通信控制器芯片。如表2所示。
由于PCI9052可以啟動局部總線的讀寫,CAN卡不再需要微控制器,采用CAN通信控制器即可,本CAN卡采用SJA1000。SJA1000支持BasicCAN和PeliCAN模式,具有FIFO、支持熱插拔等功能,不但可以實現(xiàn)CAN總線接口功能,而且芯片可以根據(jù)晶振的頻率,輸出可編程的CLKOUT信號,該信號正好可作為PCI9052的局部總線的總線頻率,節(jié)省了器件,方便了設(shè)計。CAN總線的總線頻率可為12MHz、16MHz或24MHz,PCI9052自動實現(xiàn)局部總線與PCI總線的訪問同步。CAN總線收發(fā)器采用82C250。該芯片是CAN總線控制器和物理總線的接口,可以提供對CAN總線的差動發(fā)送和接受能力,具有抗瞬間干擾、保護(hù)總線的能力,可以通過調(diào)整CAN總線上通訊脈沖的邊沿斜率來降低射頻干擾。
由于PCI設(shè)備在計算機(jī)中的硬件資源是系統(tǒng)動態(tài)分配的,因此在設(shè)計出基本的硬件框架后,要進(jìn)行PCI配置設(shè)計。CAN卡的硬件資源為映射SJA1000內(nèi)部寄存器的內(nèi)存映射空間和一個中斷源。PCI9052提供5個局部地址空間,可以選用其中的一個作為SJA1000的地址空間,分配32個8位地址。同時設(shè)置相應(yīng)的初始化,PCI配置寄存器中的寄存器PCIBAR2設(shè)置為0XFFFFFFE0,向系統(tǒng)請求分配內(nèi)存的數(shù)量為32,類型為不可預(yù)讀,其它寄存器的值可設(shè)置為0。設(shè)置局部地址空間的范圍為0X00000000~0X00000020。PCI9052提供2個局部中斷源,利用LINTi1即可,注意的是:LINTi1信號線沒有驅(qū)動能力,SJA1000的INT引腳也沒有驅(qū)動能力,因此該信號線必須加上拉電阻,否則該信號線的電平不確定,工作肯定不正常。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è)計采用Microchip的93LC46B。用PLX公司提供的開發(fā)工具PlxMon可對93LC46B進(jìn)行讀寫。
PCI9052的硬件調(diào)試可采用PlxMon。利用它可以對PCI設(shè)備的配置資源進(jìn)行檢驗。利用PLX提供的SDK,可以對PCI9052的局部寄存器、局部總線及EEPROM進(jìn)行讀寫,這樣可以調(diào)試硬件。借助開發(fā)工具,不必開發(fā)PCI設(shè)備的調(diào)試軟件,可節(jié)省很多時間。同時,SDK也為驅(qū)動程序的開發(fā)提供了程序框架,加快了開發(fā)進(jìn)度。
評論