<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 基于DSP的PCI總線(xiàn)CAN適配器設計

基于DSP的PCI總線(xiàn)CAN適配器設計

作者:關(guān)洪亮,張金柱,杜東禮 時(shí)間:2008-11-13 來(lái)源:現代電子技術(shù) 收藏

1 引 言

本文引用地址:http://dyxdggzs.com/article/89470.htm

  CAN總線(xiàn)是一種開(kāi)放式、數字化、多點(diǎn)通信的串行總線(xiàn),是一種具有較高性?xún)r(jià)比、能滿(mǎn)足分布式控制要求的現場(chǎng)總線(xiàn),在控制領(lǐng)域得到廣泛采用。CAN的速率可達到1 Mb/s/40 M,最大傳輸距離可達10 km/5 kb/s。為了擴展CAN總線(xiàn)的監控、管理功能,需要一種實(shí)時(shí)、可靠的CAN總線(xiàn)PC適配器,實(shí)現對CAN總線(xiàn)監視、控制和操作。本文利用TMS320LF2407芯片自帶CAN模塊,設計成CAN的一個(gè)特殊節點(diǎn)。使其即能通過(guò)PCI接口同PC機進(jìn)行數據交換,又能獨立與PC機自主運行。

2 適配器的硬件設計

2.1 CAN接口實(shí)現

  以往CAN總線(xiàn)適配器多數采用Intel82527、Philips公司的SJA100等芯片來(lái)完成CAN通信控制。本文利用TMS320LF2407內嵌的CAN模塊作為CAN通訊控制器,該模塊是一個(gè)16位的外設模塊。他完全支持CAN 2.0B協(xié)議,可工作在標準模式和擴展模式,支持數據幀和遠程幀,數據收發(fā)采用郵箱方式;有可編程位定時(shí)器,可對中斷配置編程,可編程實(shí)現總線(xiàn)喚醒功能;能自動(dòng)回復遠程請求,有完備的錯誤診斷功能;可進(jìn)行自測試,有自動(dòng)收發(fā)功能。PCA82C250是驅動(dòng)CAN控制器和物理總線(xiàn)間的接口芯片,與2407的CAN模塊相連,完成對CAN總線(xiàn)的差動(dòng)發(fā)送和接收功能。

2.2 PCI接口實(shí)現

  采用H.X公司的PCI9052實(shí)現PCI總線(xiàn)接口功能,PCI9052可與多種局部總線(xiàn)相連接,并且可支持相對慢的局部總線(xiàn),在PCI總線(xiàn)上達到突發(fā)傳輸速率132 m/s。PCI9052擁有讀寫(xiě)FIFO,32位的字寬,33 M的PCI總線(xiàn)時(shí)鐘頻率。主要功能與特性如下:

  (1)符合PCI2.1規范的目標,接口芯片支持低成本從屬適配器;

  (2)支持非復用或多路復用8位、16位、32位局部總線(xiàn);

  (3)串行E2PROM用于裝載配置信息;

  (4)具有5個(gè)局部地址空間和4個(gè)局部地址空間的片選信號;

  (5)支持局域總線(xiàn)與PCI時(shí)鐘的異步運行。

2.3 總體設計思想

  適配器采用存儲器共享的方式實(shí)現與PC的數據交換。其中共享存儲器選用集成雙口RAM IDT7130。IDT7130容量為1 kb,其左口連接DSP2407,右口連接PCI9052,使用存儲器尋址方式。同時(shí),對IDT7130 2個(gè)端口的仲裁采用的是中斷線(xiàn)的方式。片上的DSP和PC機通過(guò)互發(fā)中斷來(lái)讀取IDT7130的數據。這樣使IDT7130成為上位機和DSP的數據交換中介,DSP能夠實(shí)時(shí)處理從上位機傳來(lái)的命令和數據,同時(shí)把各個(gè)CAN節點(diǎn)的信息傳給上位機。利用一塊串行E2PROM(93CA6B)存放適配器的PCI配置信息。上電后訪(fǎng)問(wèn)93C46B,實(shí)現本適配器的自動(dòng)配置。Altera公司的EPM7064S完成地址譯碼和邏輯控制。適配器原理圖如圖1所示:

 

2.4 電源、地及噪聲的處理

  在本設計中對電源的處理首先將模擬部分的電源和數字電路部分的電源進(jìn)行隔離,即分別供電。模擬電路部分的5 V電源分別取自PCI總線(xiàn)上的12 V電源,經(jīng)線(xiàn)性穩壓后,再經(jīng)去耦、濾波后引至專(zhuān)門(mén)設計的模擬電源平面。數字部分的5 V電源直接取自PCI總線(xiàn)上的5 V電源。數字部分的3.3 V電源亦取自PCI總線(xiàn)上的5 V電源,經(jīng)穩壓后得到。在PCB的層結構設計中也充分考慮到盡可能地保留完整、大而積的電源平面層。適配器的“地”事實(shí)上分為模擬地和數字地2部分。這2部分最終在電源平面入口處相連。使得模擬地相對干凈。從而減少疊加到信號上的噪聲,有利于提高信噪比。

3 適配器的硬件設計

  適配器的硬件設計主要包括2部分:PCI適配器驅動(dòng)軟件部分和DSP數據采集處理軟件部分。

3.1 PCI適配器驅動(dòng)程序設計

  由于PCI設備的中斷,1/0端口、映射內存等資源都是動(dòng)態(tài)分配的,必須編寫(xiě)驅動(dòng)程序管理硬件,才能供用戶(hù)編程使用??紤]到適配器的通用性和兼容性,驅動(dòng)程序的開(kāi)發(fā)采用支持Windows XP,Windows 2000,Windows 98的WDM驅動(dòng)程序。開(kāi)發(fā)工具采用Visual C++6.0。WDM(WindowsDriver Model)是NT4.0內核模式設備驅動(dòng)程序模型的擴展形式,是為基于Windows 2000的設備驅動(dòng)程序提供的一種新的開(kāi)發(fā)模型。本設計使用開(kāi)發(fā)工具WINDRIVER大大簡(jiǎn)化驅動(dòng)程序的開(kāi)發(fā)。通過(guò)DiverWizard開(kāi)發(fā)者很容易生成驅動(dòng)程序框架,同時(shí),WINDRIVER和VC有很好的接口。生成驅動(dòng)框架后在VC中就可以通過(guò)在工程項目中加入9052_lib.c,在應用程序開(kāi)頭直接引用#include"9052lib.h",并0添加特定的驅動(dòng)代碼完成驅動(dòng)程序的編寫(xiě)。下面是驅動(dòng)程序主函數的部分代碼:

 

3.2 PCI適配器驅動(dòng)程序設計

  固化在DSP中的應用軟件是整個(gè)系統實(shí)時(shí)運行的支撐軟件。主體程序采用ASIC C語(yǔ)言編寫(xiě)。他主要完成以下功能:

  (1)環(huán)境初始化;

  (2)從CAN總線(xiàn)接受數據;

  (3)從RAM中讀數;

  (4)系統的控制程序;

  (5)向CAN總線(xiàn)發(fā)送任務(wù)包;

  (6)向PC上傳數據。

  系統的控制程序根據用戶(hù)系統的需求自主來(lái)開(kāi)發(fā)。由于DSP20417是16位單片機有較強的運算能力和實(shí)時(shí)控制功能。他要處理所有的CAN數據包的解釋?zhuān)夷軌驖M(mǎn)足分布實(shí)時(shí)控制的現場(chǎng)總線(xiàn)要求。在實(shí)際調試中發(fā)現下層的控制器向PC機的傳遞數據量遠大于PC機下傳的數據量,因此在數據編碼時(shí)將控制信息、采樣數據編號信息和控制量、采集量均加載在數據字節里。由此CAN總線(xiàn)通訊協(xié)議的形式為:“ID號+數據+校驗”,其中ID號為各DSP采集器編號采用11位標識符的前4位。為了保證通訊的可靠性,在數據接受后,都由一個(gè)返回幀,以表示確認,其校驗位為發(fā)送端的固定代碼。DSP上傳實(shí)時(shí)采集數據的發(fā)送采用定時(shí)查詢(xún)的方式,查詢(xún)采樣是否結束并且進(jìn)行了相應的數據處理后,立即將數據通過(guò)CAN控制裝載并發(fā)送到CAN總線(xiàn)上?;玖鞒倘鐖D2所示。

 

4 應用實(shí)例

  應用該CAN通訊適配器對實(shí)驗室3臺交流異步電機進(jìn)行監控。系統構成原理如圖3所示。在通信時(shí),CAN總線(xiàn)設為多主結構。PCICAN轉換卡地址是1,電機A、電機B、電機C的地址分別為2,3,4。變頻器控制電機A以v0速度左右10%的額定轉速范圍內線(xiàn)性變化,同時(shí)CAN收發(fā)器1發(fā)送電機A轉速的數字量至CAN卡。CAN卡同步實(shí)時(shí)發(fā)送信號至CAN收發(fā)器2,3,調節電機B,C使其分別以速度1.1v0,1.2V0工作。CAN卡同時(shí)分別采集每個(gè)電機速度發(fā)送至PC機,以便人機監控調整。系統的人機界而是基于Windows平臺用VC”6.0語(yǔ)言開(kāi)發(fā),DSP內部程序用ASIC C語(yǔ)言編寫(xiě),實(shí)際運行控制結果表明該系統工作可靠、電機調節響應速度快。

 

5 結語(yǔ)

  本文設計的CAN總線(xiàn)適配器實(shí)用性強,并具有良好的可擴展性。在WIN2000系統下經(jīng)過(guò)長(cháng)時(shí)間的運行測試,運行穩定可靠。他可以適應不同的傳輸速率和距離,有效保證工業(yè)控制系統的實(shí)時(shí)性。DSP芯片一方面對CAN總線(xiàn)各控制節點(diǎn)的參數進(jìn)行高速運算處理,另一方面通過(guò)PCI總線(xiàn)進(jìn)行人機數據交互,起封一種CAN總線(xiàn)中主控節點(diǎn)的作用。



關(guān)鍵詞: DSP

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>