基于DM9000A的以太網(wǎng)接口設(shè)計與實現(xiàn)
摘要:為了實現(xiàn)DSP與外圍設(shè)備進(jìn)行以太網(wǎng)數(shù)據(jù)通信,采用了一種基于網(wǎng)絡(luò)控制芯片DM9000A的DSP以太網(wǎng)接口實現(xiàn)方式。它以TI公司的DSP處理器和DM9000A網(wǎng)絡(luò)芯片為硬件平臺,通過DSP總線控制DM9000A內(nèi)部寄存器,完成DM9000A的初始化以及底層以太網(wǎng)數(shù)據(jù)的發(fā)送接收,并對TCP/IP協(xié)議進(jìn)行裁剪,包括IP,ARP,ICMP,UDP和TCP等協(xié)議,實現(xiàn)了適用于DSP設(shè)備的以太網(wǎng)數(shù)據(jù)通信功能。
本文引用地址:http://www.ex-cimer.com/article/234974.htmDSP(Digital Signal Processor)是一種獨特的微處理器,是以數(shù)字信號來處理大量信息的器件。它強大的數(shù)據(jù)處理能力和高運行速度,是最值得稱道的兩大特色。隨著網(wǎng)絡(luò)技術(shù)的發(fā)展,在工業(yè)控制、智能儀器、智能家庭等領(lǐng)域,越來越多的DSP設(shè)備要求具有以太網(wǎng)通信功能,以便與外部網(wǎng)絡(luò)設(shè)備進(jìn)行數(shù)據(jù)通信。以太網(wǎng)控制芯片是以太網(wǎng)接口的核心器件,其性能是影響網(wǎng)絡(luò)性能的關(guān)鍵因素之一,如何正確使用網(wǎng)絡(luò)控制器是設(shè)計以太網(wǎng)接口的關(guān)鍵。本文采用處理器+以太網(wǎng)控制芯片+TCP/IP協(xié)議的DSP以太網(wǎng)接入方式,設(shè)計并實現(xiàn)了基于DSP的精簡TCP /IP協(xié)議棧,并固化在DSP內(nèi),無需操作系統(tǒng)也可運行。
1 總體設(shè)計
本系統(tǒng)使用32位DSP處理器TMS320F28335和以太網(wǎng)控制芯片DM9000A為核心,DSP控制整個系統(tǒng)的運行,DM9000A實現(xiàn)網(wǎng)絡(luò)傳輸?shù)牡讓庸δ?。并對TCP/IP協(xié)議棧自行裁剪,構(gòu)成了DSP的以太網(wǎng)接口,實現(xiàn)了網(wǎng)絡(luò)通信。其系統(tǒng)總體框圖如圖1所示。
2 系統(tǒng)硬件設(shè)計
2.1 DM9000A功能結(jié)構(gòu)
DM9000A是DAVICOM公司推出的一款高度集成、低成本的快速以太網(wǎng)控制器,實現(xiàn)以太網(wǎng)媒體介質(zhì)訪問層(MAC)和物理層(PHY)的功能。該芯片具有通用的處理器接口,片內(nèi)集成了10/100M自適應(yīng)的PHY,內(nèi)部含有16 KB SRAM用于接收/發(fā)送的FIFO緩存,3.3 V供電,并且支持IEEE 802.3以太網(wǎng)傳輸和8/16接口的兩種主機工作模式協(xié)議。功能結(jié)構(gòu)如圖2所示。
2.2 接口電路的連接
接口電路主要由DSP、以太網(wǎng)控制芯片DM9000A、隔離變壓器和RJ-45構(gòu)成。DSP控制整個系統(tǒng)的運行,DM9000A實現(xiàn)以太網(wǎng)數(shù)據(jù)的底層傳輸。隔離變壓器的主要作用:其一,可以增強信號,使其傳輸距離更遠(yuǎn);其二,使芯片端與外部隔離,增強抗干擾能力,并對芯片端起保護(hù)作用;其三,當(dāng)接到不同電平(如有的PHY芯片是2.5 V,有的PHY芯片是3.3 V)的網(wǎng)口時,不會對彼此設(shè)備造成影響。RJ-45接口可用于連接RJ-45接頭,適用于由雙絞線構(gòu)建的網(wǎng)絡(luò),這種是最常見的以太網(wǎng)接口。DM9000A采用16位接口模式,數(shù)據(jù)地址復(fù)用總線D0~D15與DSP總線XD0~XD15相連;DM9000A的寫信號引腳與DSP的XWE0n相連;讀信號引腳與DSP的讀引腳相連;DM9000A的片選信號引腳與DSP的CS0n相連;DM9000A的訪問類型引腳CMD與DSP的普通I/O口GPIO61相連,高電平訪問DM9000A的數(shù)據(jù)端口,低電平訪問地址端口;DM9000A的復(fù)位引腳與DSP的GPIO 60相連;DM9000A的物理層接口TX+,TX-,RX+,RX-通過隔離變壓器連接RJ-45至以太網(wǎng)。其以太網(wǎng)接口硬件連接如圖3所示。
3 系統(tǒng)軟件設(shè)計
網(wǎng)絡(luò)接口的軟件主要有DM9000A驅(qū)動程序設(shè)計和上層通信協(xié)議程序設(shè)計兩個部分。DM9000A驅(qū)動程序設(shè)計主要是通過TMS320F28335控制總線配置DM9000A內(nèi)部寄存器,完成對DM9000A初始化、以太網(wǎng)數(shù)據(jù)幀的發(fā)送和以太網(wǎng)數(shù)據(jù)幀的接收三部分。上層通信協(xié)議程序設(shè)計是對TCP/IP棧裁剪移植,主要完成對接收到的以太網(wǎng)數(shù)據(jù)幀進(jìn)行解析并處理,并把要發(fā)送的數(shù)據(jù)封裝成以太網(wǎng)數(shù)據(jù),然后發(fā)送。
3.1 DM9000A驅(qū)動程序設(shè)計
3.1.1 DM9000A初始化
DM9000A正常工作需要在上電后對內(nèi)部寄存器進(jìn)行初始化,具體流程如下:
(1)啟動PHY。設(shè)置通用寄存器GPR(1FH)的GEPIO0=0。
(2)進(jìn)行兩次軟啟動。設(shè)置網(wǎng)絡(luò)控制寄存器NCR(00H)的RST=1,10μs后RST=0,同樣的操作進(jìn)行兩次。
(3)選擇網(wǎng)絡(luò)模式。設(shè)置NCR的LBK=00,設(shè)置網(wǎng)絡(luò)工作模式為正常模式。
(4)清除發(fā)送標(biāo)志。設(shè)置網(wǎng)絡(luò)狀態(tài)寄存器NSR(01H)WAKEST=1,TX2END=1,TX1END=1。
(5)寫6 B的以太網(wǎng)節(jié)點地址到物理地址寄存器PAR(10H~15H)中。
(6)設(shè)置中斷屏蔽寄存器IMR(FFH)的PAR=1,使能指針自動跳回,當(dāng)SRAM讀/寫指針超過SRAM的大小時,指針自動跳回起始位置;PRI=1,使能數(shù)據(jù)包接收中斷。
(7)設(shè)置接收控制寄存器RCR(05H)的WTDIS=1,看門狗定時禁止;DSI_LONG=1,丟棄長數(shù)據(jù)包;DIS_CRC=1丟棄CRC校驗錯誤的數(shù)據(jù)包;RXEN=1,使能接收功能。
初始化流程如圖4所示。
完成上述初始化步驟后,DM9000A就處于正常工作狀態(tài),可以收發(fā)數(shù)據(jù)包。若有異常發(fā)生,就需要重復(fù)上述步驟,重啟DM9000A以使芯片恢復(fù)到正常狀態(tài)。
3.1.2 數(shù)據(jù)幀發(fā)送
DM9000A內(nèi)部有16 KB的SRAM作為接收/發(fā)送數(shù)據(jù)的緩存區(qū),其中前3 KB的空間,地址從0x0000H~0x0BFFH,用來緩存需要發(fā)送的數(shù)據(jù)。
數(shù)據(jù)發(fā)送的具體步驟如下:
(1)利用寫操作寄存器MWCMD(F8H),將需要發(fā)送的數(shù)據(jù)幀寫入DM9000A的發(fā)送緩存區(qū)。
(2)將數(shù)據(jù)幀長度寫入長度寄存器TXPLL(FCH)和TXPLH(FDH)。
(3)設(shè)置發(fā)送控制寄存器TCR(02H),TXREQ=1,數(shù)據(jù)幀開始發(fā)送。
(4)檢查網(wǎng)絡(luò)狀態(tài)寄存器NSR(01H)的TX2END和TX1END位,判斷此幀數(shù)據(jù)是否發(fā)送完。
數(shù)據(jù)幀發(fā)送流程圖如圖5所示。
tcp/ip相關(guān)文章:tcp/ip是什么
雙絞線傳輸器相關(guān)文章:雙絞線傳輸器原理
評論