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

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 利用微控制器進(jìn)行網(wǎng)絡(luò)通信的網(wǎng)卡配置

          利用微控制器進(jìn)行網(wǎng)絡(luò)通信的網(wǎng)卡配置

          作者: 時(shí)間:2008-10-31 來(lái)源:網(wǎng)絡(luò) 收藏
          利用進(jìn)行網(wǎng)絡(luò)通信的關(guān)鍵是驅(qū)動(dòng)和配置網(wǎng)絡(luò)接口卡,而RTL8019是REALTEK公司高集成度的專用以太網(wǎng)接口芯片,支持PnP自動(dòng)探測(cè),并且內(nèi)嵌16K SRAM,有全雙工的通信接口,可以通過(guò)交換機(jī)在雙絞線上同時(shí)發(fā)送和接收數(shù)據(jù),使帶寬從10兆增加到20兆,是用來(lái)進(jìn)行以太網(wǎng)通信的理想芯片。
            RTL8019AS是針對(duì)ISA總線設(shè)計(jì)的,在PC上用來(lái)實(shí)現(xiàn)網(wǎng)絡(luò)的物理層協(xié)議,主要包括網(wǎng)卡與網(wǎng)絡(luò)電纜的物理連接、介質(zhì)訪問(wèn)控制(如CSMA/CD)、數(shù)據(jù)幀的拆裝、幀的發(fā)送與接收、錯(cuò)誤校驗(yàn)、數(shù)據(jù)信號(hào)的編/解碼(如曼徹斯特碼和NRZ碼的轉(zhuǎn)換等)、數(shù)據(jù)的串、并行轉(zhuǎn)換等功能。而要實(shí)現(xiàn)這些功能,必須要對(duì)網(wǎng)絡(luò)接口芯片進(jìn)行正確的配置。
            而大部分微控制器是8位的,所以用8位和RTL8019AS接口時(shí)必須把接口芯片置成8位模式,現(xiàn)用具體代碼來(lái)詳細(xì)說(shuō)明用對(duì)RTL8019AS進(jìn)行配置,從而實(shí)現(xiàn)利用微控制器進(jìn)行網(wǎng)絡(luò)通信。
            RTL8019共有四頁(yè)寄存器組,每頁(yè)寄存器組有16個(gè)寄存器。實(shí)際上網(wǎng)絡(luò)通信也就是對(duì)這些寄存器進(jìn)行設(shè)置。其中CR寄存器是控制命令寄存器,地址是00h,其各個(gè)位的含義如表1所示,這個(gè)寄存器用來(lái)選擇寄存器頁(yè),控制遠(yuǎn)程DMA操作。
            PS1,PS0用來(lái)指定寄存器的頁(yè)。在實(shí)際配置寄存器時(shí),首先要指定要配置的寄存器屬于哪一頁(yè)(就是進(jìn)行PS1和PS0的設(shè)置),然后對(duì)那一頁(yè)中的寄存器寫入配置信息。
          要進(jìn)行網(wǎng)絡(luò)通信必須對(duì)網(wǎng)絡(luò)控制芯片初始化,初始化比較煩瑣,但非常重要,它決定者網(wǎng)絡(luò)通信的一些重要參數(shù),詳細(xì)配置過(guò)程如下。
          表1 CD寄存器各位的含義
          NONAMETYPEBit7Bit6Bit5Bit4Bit3Bit2Bit1Bit0
          00hCDR/WPSIPS0RD2RD1RD0TXRSTASTP


            1.初始化復(fù)位寄存器,地址1fh,代碼如下。
            mov nicIOAddr,#$1F;給出復(fù)位寄存器的地址
            mov w,#0;寫入數(shù)據(jù)0
            call NICWrite;調(diào)寫子程序,把數(shù)據(jù)寫入
            2.選擇RTL8019as為用戶配置模式,然后對(duì)9346CR寄存器進(jìn)行寫使能,再對(duì)RTL8019AS的配置寄存器2進(jìn)行設(shè)置,代碼如下。
            clr nicIOAddr;選CR寄存器
            mov w,#d1h;選第三頁(yè),停止傳輸操作
            call NICWrite;寫入數(shù)據(jù)
            mov nicIOAddr,#$01;選9346CR寄存器
            mov w,#d0h;配置寄存器寫使能
            call NICWrite;寫入數(shù)據(jù)
            mov nicIOAddr,#05h;選配置寄存器2
            mov w,#0h;網(wǎng)絡(luò)連接自動(dòng)檢測(cè)使能(10BaseT)
            call NICWrite;寫入數(shù)據(jù)
            3.配置當(dāng)前頁(yè)寄存器(寫時(shí)選擇第一頁(yè)07h寄存器,讀時(shí)選擇第二頁(yè)07h寄存器)。
            inc nicIOAddr;($07) CURR寄存器指向接收緩沖區(qū)的第一頁(yè)(每頁(yè)256個(gè)字節(jié))
            mov w,#RXBUF_START;把開始地址寫入CUR寄存器中
            call NICWrite;寫入數(shù)據(jù)
            4.配置接收緩沖區(qū)的大?。ㄔ诘谝豁?yè)寄存器組中).
            clr nicIOAddr;選擇第一頁(yè)寄存器
            mov w,#01h;寫入數(shù)據(jù)1
            call NICWrite;寫入數(shù)據(jù)
            inc nicIOAddr;“頁(yè)開始寄存器”($01, PSTART)設(shè)置接收緩沖區(qū)的開始頁(yè)
            mov w,#RXBUF_START
            call NICWrite;寫入數(shù)據(jù)
            inc nicIOAddr;“頁(yè)終止寄存器”($02, PSTOP)設(shè)置接收緩沖區(qū)的終止頁(yè)
            mov w,#RXBUF_END
            call NICWrite;寫入數(shù)據(jù)
            5.設(shè)置邊界寄存器
            inc nicIOAddr;($03)BNRY()用作一個(gè)指針,指向數(shù)據(jù)緩沖區(qū)中的最后一頁(yè)的接收數(shù)據(jù)
            mov w,#RXBUF_START
            call NICWrite;寫入數(shù)據(jù)
            6.設(shè)置中斷寄存器(地址在第一頁(yè)的07h)
            mov nicIOAddr,#$07;ISR中斷寄存器
            mov w,#$FF
            call NICWrite;寫入數(shù)據(jù)
            中斷寄存器各個(gè)位的含義如表2所示。
            8.設(shè)置接收配置寄存器(0C,RCR)
            mov nicIOAddr,#$0C;RCR設(shè)置為扔掉錯(cuò)誤的接收包;不支持多播地址的包;接收少于64字節(jié)的數(shù)據(jù)包;支持廣播地址;物理目的地址必須和在PARO-5的接點(diǎn)地址相匹配;數(shù)據(jù)在存儲(chǔ)器中緩沖;拒絕接收有錯(cuò)誤的包。
            mov w,#%11000110
            call NICWrite;
          表2 中斷寄存器各個(gè)位的含義

          符號(hào)描 述
          7RDCNIC開始時(shí)置"1",開始命令寫入CD時(shí)置"1"當(dāng)包從緩沖區(qū)讀取時(shí)置"0"
          6RDC當(dāng)遠(yuǎn)程DMA操作完成時(shí)置"1"
          5CNT當(dāng)網(wǎng)絡(luò)計(jì)算器被設(shè)置時(shí)置"1"
          4OVW當(dāng)接收緩沖區(qū)用完時(shí)置"1"
          3當(dāng)傳輸包由于網(wǎng)絡(luò)問(wèn)題而掉時(shí)被置"1"
          2RXE當(dāng)有以下情況時(shí)被置"1":CRC校驗(yàn)錯(cuò);
          幀對(duì)起錯(cuò)誤;丟包
          1PTX這個(gè)位指示發(fā)送包沒(méi)有錯(cuò)誤
          0PRX這個(gè)位指示接收包沒(méi)有錯(cuò)誤


            9.設(shè)置發(fā)送配置寄存器(0D,TCR)
            inc nicIOAddr;TCR設(shè)置為包要進(jìn)行地址匹配檢查,CRC校驗(yàn)和幀對(duì)齊校驗(yàn);物理目的地址必須和在PARO-5的接點(diǎn)地址相匹配;不支持多播地址的包;發(fā)送少于64字節(jié)的數(shù)據(jù)包。
            mov w,#%11100000
            call NICWrite
            10.設(shè)置數(shù)據(jù)配置寄存器(0E,DCR)
            inc nicIOAddr;數(shù)據(jù)配置在低8位,每次傳送一個(gè)字節(jié),而不是一個(gè)字
            mov w,#%10111000
            call NICWrite;調(diào)寫子程序,把數(shù)據(jù)寫入
            11.開始接收數(shù)據(jù)
            clr nicIOAddr;選擇CR寄存器
            mov w,#%00000010;Page0,數(shù)據(jù)設(shè)置為開始接收
            call NICWrite;調(diào)寫子程序,把數(shù)據(jù)寫入
            利用單片機(jī)對(duì)網(wǎng)絡(luò)控制器進(jìn)行上述設(shè)置后,再結(jié)合高層的TCP/IP協(xié)議,就可以在以太網(wǎng)上進(jìn)行數(shù)據(jù)傳輸了。
            利用8位微控制器配置網(wǎng)絡(luò)控制卡的寄存器較為煩瑣,上述過(guò)程和代碼只是簡(jiǎn)要的介紹,用戶也可針對(duì)自己的特殊需要進(jìn)行一些特殊設(shè)置,總之,要以提高數(shù)據(jù)傳輸效率為原則。



          評(píng)論


          相關(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); })();