在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

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

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

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


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

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


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



            評論


            相關(guān)推薦

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

            關(guān)閉