基于DSP的PCI總線CAN適配器設(shè)計
1 引 言
本文引用地址:http://m.butianyuan.cn/article/89470.htmCAN總線是一種開放式、數(shù)字化、多點通信的串行總線,是一種具有較高性價比、能滿足分布式控制要求的現(xiàn)場總線,在控制領(lǐng)域得到廣泛采用。CAN的速率可達到1 Mb/s/40 M,最大傳輸距離可達10 km/5 kb/s。為了擴展CAN總線的監(jiān)控、管理功能,需要一種實時、可靠的CAN總線PC適配器,實現(xiàn)對CAN總線監(jiān)視、控制和操作。本文利用TMS320LF2407芯片自帶CAN模塊,設(shè)計成CAN的一個特殊節(jié)點。使其即能通過PCI接口同PC機進行數(shù)據(jù)交換,又能獨立與PC機自主運行。
2 適配器的硬件設(shè)計
2.1 CAN接口實現(xiàn)
以往CAN總線適配器多數(shù)采用Intel82527、Philips公司的SJA100等芯片來完成CAN通信控制。本文利用TMS320LF2407內(nèi)嵌的CAN模塊作為CAN通訊控制器,該模塊是一個16位的外設(shè)模塊。他完全支持CAN 2.0B協(xié)議,可工作在標準模式和擴展模式,支持數(shù)據(jù)幀和遠程幀,數(shù)據(jù)收發(fā)采用郵箱方式;有可編程位定時器,可對中斷配置編程,可編程實現(xiàn)總線喚醒功能;能自動回復(fù)遠程請求,有完備的錯誤診斷功能;可進行自測試,有自動收發(fā)功能。PCA82C250是驅(qū)動CAN控制器和物理總線間的接口芯片,與DSP2407的CAN模塊相連,完成DSP對CAN總線的差動發(fā)送和接收功能。
2.2 PCI接口實現(xiàn)
采用H.X公司的PCI9052實現(xiàn)PCI總線接口功能,PCI9052可與多種局部總線相連接,并且可支持相對慢的局部總線,在PCI總線上達到突發(fā)傳輸速率132 m/s。PCI9052擁有讀寫FIFO,32位的字寬,33 M的PCI總線時鐘頻率。主要功能與特性如下:
(1)符合PCI2.1規(guī)范的目標,接口芯片支持低成本從屬適配器;
(2)支持非復(fù)用或多路復(fù)用8位、16位、32位局部總線;
(3)串行E2PROM用于裝載配置信息;
(4)具有5個局部地址空間和4個局部地址空間的片選信號;
(5)支持局域總線與PCI時鐘的異步運行。
2.3 總體設(shè)計思想
適配器采用存儲器共享的方式實現(xiàn)DSP與PC的數(shù)據(jù)交換。其中共享存儲器選用集成雙口RAM IDT7130。IDT7130容量為1 kb,其左口連接DSP2407,右口連接PCI9052,使用存儲器尋址方式。同時,對IDT7130 2個端口的仲裁采用的是中斷線的方式。片上的DSP和PC機通過互發(fā)中斷來讀取IDT7130的數(shù)據(jù)。這樣使IDT7130成為上位機和DSP的數(shù)據(jù)交換中介,DSP能夠?qū)崟r處理從上位機傳來的命令和數(shù)據(jù),同時把各個CAN節(jié)點的信息傳給上位機。利用一塊串行E2PROM(93CA6B)存放適配器的PCI配置信息。上電后訪問93C46B,實現(xiàn)本適配器的自動配置。Altera公司的EPM7064S完成地址譯碼和邏輯控制。適配器原理圖如圖1所示:
2.4 電源、地及噪聲的處理
在本設(shè)計中對電源的處理首先將模擬部分的電源和數(shù)字電路部分的電源進行隔離,即分別供電。模擬電路部分的5 V電源分別取自PCI總線上的12 V電源,經(jīng)線性穩(wěn)壓后,再經(jīng)去耦、濾波后引至專門設(shè)計的模擬電源平面。數(shù)字部分的5 V電源直接取自PCI總線上的5 V電源。數(shù)字部分的3.3 V電源亦取自PCI總線上的5 V電源,經(jīng)穩(wěn)壓后得到。在PCB的層結(jié)構(gòu)設(shè)計中也充分考慮到盡可能地保留完整、大而積的電源平面層。適配器的“地”事實上分為模擬地和數(shù)字地2部分。這2部分最終在電源平面入口處相連。使得模擬地相對干凈。從而減少疊加到信號上的噪聲,有利于提高信噪比。
3 適配器的硬件設(shè)計
適配器的硬件設(shè)計主要包括2部分:PCI適配器驅(qū)動軟件部分和DSP數(shù)據(jù)采集處理軟件部分。
3.1 PCI適配器驅(qū)動程序設(shè)計
由于PCI設(shè)備的中斷,1/0端口、映射內(nèi)存等資源都是動態(tài)分配的,必須編寫驅(qū)動程序管理硬件,才能供用戶編程使用??紤]到適配器的通用性和兼容性,驅(qū)動程序的開發(fā)采用支持Windows XP,Windows 2000,Windows 98的WDM驅(qū)動程序。開發(fā)工具采用Visual C++6.0。WDM(WindowsDriver Model)是NT4.0內(nèi)核模式設(shè)備驅(qū)動程序模型的擴展形式,是為基于Windows 2000的設(shè)備驅(qū)動程序提供的一種新的開發(fā)模型。本設(shè)計使用開發(fā)工具WINDRIVER大大簡化驅(qū)動程序的開發(fā)。通過DiverWizard開發(fā)者很容易生成驅(qū)動程序框架,同時,WINDRIVER和VC有很好的接口。生成驅(qū)動框架后在VC中就可以通過在工程項目中加入9052_lib.c,在應(yīng)用程序開頭直接引用#include"9052lib.h",并0添加特定的驅(qū)動代碼完成驅(qū)動程序的編寫。下面是驅(qū)動程序主函數(shù)的部分代碼:
3.2 PCI適配器驅(qū)動程序設(shè)計
固化在DSP中的應(yīng)用軟件是整個系統(tǒng)實時運行的支撐軟件。主體程序采用ASIC C語言編寫。他主要完成以下功能:
(1)環(huán)境初始化;
(2)從CAN總線接受數(shù)據(jù);
(3)從RAM中讀數(shù);
(4)系統(tǒng)的控制程序;
(5)向CAN總線發(fā)送任務(wù)包;
(6)向PC上傳數(shù)據(jù)。
系統(tǒng)的控制程序根據(jù)用戶系統(tǒng)的需求自主來開發(fā)。由于DSP20417是16位單片機有較強的運算能力和實時控制功能。他要處理所有的CAN數(shù)據(jù)包的解釋,而且能夠滿足分布實時控制的現(xiàn)場總線要求。在實際調(diào)試中發(fā)現(xiàn)下層的控制器向PC機的傳遞數(shù)據(jù)量遠大于PC機下傳的數(shù)據(jù)量,因此在數(shù)據(jù)編碼時將控制信息、采樣數(shù)據(jù)編號信息和控制量、采集量均加載在數(shù)據(jù)字節(jié)里。由此CAN總線通訊協(xié)議的形式為:“ID號+數(shù)據(jù)+校驗”,其中ID號為各DSP采集器編號采用11位標識符的前4位。為了保證通訊的可靠性,在數(shù)據(jù)接受后,都由一個返回幀,以表示確認,其校驗位為發(fā)送端的固定代碼。DSP上傳實時采集數(shù)據(jù)的發(fā)送采用定時查詢的方式,查詢采樣是否結(jié)束并且進行了相應(yīng)的數(shù)據(jù)處理后,立即將數(shù)據(jù)通過CAN控制裝載并發(fā)送到CAN總線上?;玖鞒倘鐖D2所示。
4 應(yīng)用實例
應(yīng)用該CAN通訊適配器對實驗室3臺交流異步電機進行監(jiān)控。系統(tǒng)構(gòu)成原理如圖3所示。在通信時,CAN總線設(shè)為多主結(jié)構(gòu)。PCICAN轉(zhuǎn)換卡地址是1,電機A、電機B、電機C的地址分別為2,3,4。變頻器控制電機A以v0速度左右10%的額定轉(zhuǎn)速范圍內(nèi)線性變化,同時CAN收發(fā)器1發(fā)送電機A轉(zhuǎn)速的數(shù)字量至CAN卡。CAN卡同步實時發(fā)送信號至CAN收發(fā)器2,3,調(diào)節(jié)電機B,C使其分別以速度1.1v0,1.2V0工作。CAN卡同時分別采集每個電機速度發(fā)送至PC機,以便人機監(jiān)控調(diào)整。系統(tǒng)的人機界而是基于Windows平臺用VC”6.0語言開發(fā),DSP內(nèi)部程序用ASIC C語言編寫,實際運行控制結(jié)果表明該系統(tǒng)工作可靠、電機調(diào)節(jié)響應(yīng)速度快。
5 結(jié)語
本文設(shè)計的CAN總線適配器實用性強,并具有良好的可擴展性。在WIN2000系統(tǒng)下經(jīng)過長時間的運行測試,運行穩(wěn)定可靠。他可以適應(yīng)不同的傳輸速率和距離,有效保證工業(yè)控制系統(tǒng)的實時性。DSP芯片一方面對CAN總線各控制節(jié)點的參數(shù)進行高速運算處理,另一方面通過PCI總線進行人機數(shù)據(jù)交互,起封一種CAN總線中主控節(jié)點的作用。
評論