<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于DSP的CAN和以太網(wǎng)接口設(shè)計(jì)

          基于DSP的CAN和以太網(wǎng)接口設(shè)計(jì)

          作者: 時間:2014-03-19 來源:網(wǎng)絡(luò) 收藏

          摘要:浮點(diǎn)型以豐富的外設(shè),較高的主頻在工業(yè)控制領(lǐng)域得到廣泛的應(yīng)用,總線設(shè)備構(gòu)成的現(xiàn)場總線與以太網(wǎng)構(gòu)成的高速通信網(wǎng)絡(luò)已成為工業(yè)控制領(lǐng)域的發(fā)展趨勢。介紹了一種基于的總線與以太網(wǎng)互聯(lián)系統(tǒng)的設(shè)計(jì)方法,給出了系統(tǒng)各組成部分的硬件及軟件的設(shè)計(jì)與實(shí)現(xiàn)??刂撇糠植捎肨I公司的TMS320F28335,總線接口模塊采用TI公司的0,以太網(wǎng)接口模塊控制芯片采用Realtek公司的RTL8019AS。該設(shè)計(jì)具有可擴(kuò)展性好和性價(jià)比高的優(yōu)點(diǎn)。

          本文引用地址:http://www.ex-cimer.com/article/234981.htm

          0 引言

          工業(yè)現(xiàn)場設(shè)備復(fù)雜化,單一的串行通信使系統(tǒng)越來越復(fù)雜,總線控制也成為控制系統(tǒng)的主流,而CAN總線以其高速率,高抗干擾性成為最有前途的總線之一?;谝蕴W(wǎng)的工業(yè)控制網(wǎng)絡(luò)具有數(shù)據(jù)傳輸率高,可靠性好,易維護(hù),可遠(yuǎn)程傳輸?shù)葍?yōu)點(diǎn)。隨著互聯(lián)網(wǎng)技術(shù)的普及與推廣,以太網(wǎng)通信速率的提高,交換技術(shù)的發(fā)展,使得它受到了全球的擁護(hù)和軟硬件的支持,因此,基于以太網(wǎng)的工業(yè)控制網(wǎng)絡(luò)是工業(yè)控制系統(tǒng)的發(fā)展趨勢。本文通過主流控制器TMS320F28335在已有豐富外設(shè)的基礎(chǔ)上,擴(kuò)展了CAN總線和以太網(wǎng)接口,具有重要的工程價(jià)值。

          1 系統(tǒng)硬件設(shè)計(jì)

          TMS320F28335型單精度浮點(diǎn)主頻可達(dá)150 MHz,內(nèi)核電壓1.9 V,I/O電壓3.3 V;片上帶有256 KB的16位FLASH和34 KB的16位SAR AM,并有128位安全密碼鑰匙鎖,保護(hù)FLASH防止固件反向工程。片上通信端口豐富,集成有3個SCI串口輸出通道,并帶有16 B的FIFO,2個多通道McBSP串口,2個增強(qiáng)型CAN,1個SPI總線。還帶有16通道的12位A/D轉(zhuǎn)換器等資源口(具體原理圖限于篇幅只畫CAN和以太網(wǎng)部分)。

          CAN驅(qū)動器選用TI公司的,供電電壓為3.3 V,CAN接口部分原理圖如圖1所示。

           

           

          以太網(wǎng)控制器選用Realtek公司的RTL8019AS,其具有集成度高,支持全雙工通信,與NE2000相兼容等特性,具有廣泛應(yīng)用場合。以太網(wǎng)接口部分原理圖如圖2所示。

           

           

          2 系統(tǒng)軟件設(shè)計(jì)

          本文中的軟件設(shè)計(jì)主要包括三個部分:CAN驅(qū)動通信程序,RTL8019AS驅(qū)動程序和以太網(wǎng)協(xié)議棧移植。程序的編寫在集成開發(fā)環(huán)境CCS 3.3下完成。

          2.1 CAN總線驅(qū)動

          2.1.1 初始化

          CAN模塊使用前必須初始化,初始化需要完成的主要工作有:引腳配置;郵箱配置;波特率配置;中段功能設(shè)置。限于篇幅,初始化程序從略。

          2.1.2 CAN發(fā)送

          本文采用郵箱0進(jìn)行數(shù)據(jù)的發(fā)送,郵箱0的ID在初始化函數(shù)中已設(shè)置(程序解釋以注釋的形式給出,下文同):

           

           

          2.1.3 CAN接收

          為保證數(shù)據(jù)能及時接收,像其他串行通信一樣,接收一般在中斷中完成:

           

           

           

          基于TMS320F28335的CAN和以太網(wǎng)接口設(shè)計(jì)

           

          實(shí)際工作中通過PCCAN軟件觀察到的CAN發(fā)送和接收數(shù)據(jù),如圖3所示。

           

           

          2.2 以太網(wǎng)驅(qū)動

          RTL8019AS工作在網(wǎng)絡(luò)中的數(shù)據(jù)鏈路層,完成數(shù)據(jù)鏈路層及網(wǎng)絡(luò)層的協(xié)議轉(zhuǎn)換,數(shù)據(jù)的發(fā)送和接收等任務(wù),主要有兩個基本函數(shù):數(shù)據(jù)幀的發(fā)送和接收函數(shù)。

          2.2.1 初始化函數(shù)

          RTL8019AS的初始化函數(shù)操作步驟依次為:

          (1)使芯片處于停止工作模式;

          (2)選中PAGE1,設(shè)置組播和MAC地址;

          (3)選中PAGE0,使芯片處于正常工作模式;

          (4)啟動芯片,開始工作并清除所有中斷標(biāo)志。

          2.2.2 數(shù)據(jù)包發(fā)送

          RTL8019AS發(fā)送數(shù)據(jù)包遵循IEEE 802.3協(xié)議,發(fā)送數(shù)據(jù)函數(shù)操作步驟依次為:

          (1)設(shè)置以太網(wǎng)協(xié)議類型,目的地址、源地址;

          (2)將數(shù)據(jù)幀發(fā)送到RTL8019AS發(fā)送緩沖區(qū);

          (3)進(jìn)行數(shù)據(jù)包發(fā)送。

          如圖4所示,完成了從源(192.168.0.250)到目的(192.168.0.160)的TCP傳輸。

           

           

          2.2.3 數(shù)據(jù)包接收

          RTL8019AS接收數(shù)據(jù)函數(shù)操作步驟依次為:

          (1)進(jìn)行中斷服務(wù)程序設(shè)置;

          (2)產(chǎn)生中斷后,查看RTL8019AS寄存器得知接收數(shù)據(jù)長度、存放地址等信息;

          (3)使用遠(yuǎn)程DMA將接收數(shù)據(jù)從RTL8019AS內(nèi)部RAM移植到TMS320F28335內(nèi)部RAM。

          3 結(jié)語

          本文使用通用控制器TMS320F28335在自帶眾多串行接口的基礎(chǔ)上外擴(kuò)了CAN和以太網(wǎng)接口,既能根據(jù)工程實(shí)際需要使用某一兩種外設(shè),又能完成各種協(xié)議的轉(zhuǎn)換,是一種低成本、應(yīng)用性強(qiáng)的CAN總線和以太網(wǎng)設(shè)計(jì)方案。



          關(guān)鍵詞: DSP CAN

          評論


          相關(guān)推薦

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

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();