1 引 言
CAN總線" title="CAN總線">CAN總線是一種開放式、數字化、多點通信的串行總線,是一種具有較高性價比、能滿足分布式控制要求的現場總線,在控制領域得到廣泛采用。CAN的速率可達到1 Mb/s/40 M,最大傳輸距離可達10 km/5 kb/s。為了擴展CAN總線的監控、管理功能,需要一種實時、可靠的CAN總線PC適配器" title="適配器">適配器,實現對CAN總線監視、控制和操作。本文利用TMS320LF2407芯片自帶CAN模塊,設計成CAN的一個特殊節點。使其即能通過PCI接口同PC機進行數據交換,又能獨立與PC機自主運行。
2 適配器的硬件設計
2.1 CAN接口實現
以往CAN總線適配器多數采用Intel82527、Philips公司的SJA100等芯片來完成CAN通信控制。本文利用TMS320LF2407內嵌的CAN模塊作為CAN通訊控制器,該模塊是一個16位的外設模塊。他完全支持CAN 2.0B協議,可工作在標準模式和擴展模式,支持數據幀和遠程幀,數據收發采用郵箱方式;有可編程位定時器,可對中斷配置編程,可編程實現總線喚醒功能;能自動回復遠程請求,有完備的錯誤診斷功能;可進行自測試,有自動收發功能。PCA82C250是驅動CAN控制器和物理總線間的接口芯片,與DSP" title="DSP">DSP2407的CAN模塊相連,完成DSP對CAN總線的差動發送和接收功能。
2.2 PCI接口實現
采用H.X公司的PCI9052實現PCI總線" title="PCI總線">PCI總線接口功能,PCI9052可與多種局部總線相連接,并且可支持相對慢的局部總線,在PCI總線上達到突發傳輸速率132 m/s。PCI9052擁有讀寫FIFO,32位的字寬,33 M的PCI總線時鐘頻率。主要功能與特性如下:
(1)符合PCI2.1規范的目標,接口芯片支持低成本從屬適配器;
(2)支持非復用或多路復用8位、16位、32位局部總線;
(3)串行E2PROM用于裝載配置信息;
(4)具有5個局部地址空間和4個局部地址空間的片選信號;
(5)支持局域總線與PCI時鐘的異步運行。
2.3 總體設計思想
適配器采用存儲器共享的方式實現DSP與PC的數據交換。其中共享存儲器選用集成雙口RAM IDT7130。IDT7130容量為1 kb,其左口連接DSP2407,右口連接PCI9052,使用存儲器尋址方式。同時,對IDT7130 2個端口的仲裁采用的是中斷線的方式。片上的DSP和PC機通過互發中斷來讀取IDT7130的數據。這樣使IDT7130成為上位機和DSP的數據交換中介,DSP能夠實時處理從上位機傳來的命令和數據,同時把各個CAN節點的信息傳給上位機。利用一塊串行E2PROM(93CA6B)存放適配器的PCI配置信息。上電后訪問93C46B,實現本適配器的自動配置。Altera公司的EPM7064S完成地址譯碼和邏輯控制。適配器原理圖如圖1所示:
![]() |
2.4 電源、地及噪聲的處理
在本設計中對電源的處理首先將模擬部分的電源和數字電路部分的電源進行隔離,即分別供電。模擬電路部分的5 V電源分別取自PCI總線上的12 V電源,經線性穩壓后,再經去耦、濾波后引至專門設計的模擬電源平面。數字部分的5 V電源直接取自PCI總線上的5 V電源。數字部分的3.3 V電源亦取自PCI總線上的5 V電源,經穩壓后得到。在PCB的層結構設計中也充分考慮到盡可能地保留完整、大而積的電源平面層。適配器的“地”事實上分為模擬地和數字地2部分。這2部分最終在電源平面入口處相連。使得模擬地相對干凈。從而減少疊加到信號上的噪聲,有利于提高信噪比。
3 適配器的硬件設計
適配器的硬件設計主要包括2部分:PCI適配器驅動軟件部分和DSP數據采集處理軟件部分。
3.1 PCI適配器驅動程序設計
由于PCI設備的中斷,1/0端口、映射內存等資源都是動態分配的,必須編寫驅動程序管理硬件,才能供用戶編程使用。考慮到適配器的通用性和兼容性,驅動程序的開發采用支持Windows XP,Windows 2000,Windows 98的WDM驅動程序。開發工具采用Visual C++6.0。WDM(WindowsDriver Model)是NT4.0內核模式設備驅動程序模型的擴展形式,是為基于Windows 2000的設備驅動程序提供的一種新的開發模型。本設計使用開發工具WINDRIVER大大簡化驅動程序的開發。通過DiverWizard開發者很容易生成驅動程序框架,同時,WINDRIVER和VC有很好的接口。生成驅動框架后在VC中就可以通過在工程項目中加入9052_lib.c,在應用程序開頭直接引用#include"9052lib.h",并0添加特定的驅動代碼完成驅動程序的編寫。下面是驅動程序主函數的部分代碼:
![]() |