利用微控制器進行網絡通信的網卡配置
RTL8019AS是針對ISA總線設計的,在PC上用來實現網絡的物理層協議,主要包括網卡與網絡電纜的物理連接、介質訪問控制(如CSMA/CD)、數據幀的拆裝、幀的發(fā)送與接收、錯誤校驗、數據信號的編/解碼(如曼徹斯特碼和NRZ碼的轉換等)、數據的串、并行轉換等功能。而要實現這些功能,必須要對網絡接口芯片進行正確的配置。
而大部分微控制器是8位的,所以用8位單片機和RTL8019AS接口時必須把接口芯片置成8位模式,現用具體代碼來詳細說明用單片機對RTL8019AS進行配置,從而實現利用微控制器進行網絡通信。
RTL8019共有四頁寄存器組,每頁寄存器組有16個寄存器。實際上網絡通信也就是對這些寄存器進行設置。其中CR寄存器是控制命令寄存器,地址是00h,其各個位的含義如表1所示,這個寄存器用來選擇寄存器頁,控制遠程DMA操作。
PS1,PS0用來指定寄存器的頁。在實際配置寄存器時,首先要指定要配置的寄存器屬于哪一頁(就是進行PS1和PS0的設置),然后對那一頁中的寄存器寫入配置信息。
要進行網絡通信必須對網絡控制芯片初始化,初始化比較煩瑣,但非常重要,它決定者網絡通信的一些重要參數,詳細配置過程如下。
表1 CD寄存器各位的含義
NO | NAME | TYPE | Bit7 | Bit6 | Bit5 | Bit4 | Bit3 | Bit2 | Bit1 | Bit0 |
00h | CD | R/W | PSI | PS0 | RD2 | RD1 | RD0 | TXR | STA | STP |
1.初始化復位寄存器,地址1fh,代碼如下。
mov nicIOAddr,#$1F;給出復位寄存器的地址
mov w,#0;寫入數據0
call NICWrite;調寫子程序,把數據寫入
2.選擇RTL8019as為用戶配置模式,然后對9346CR寄存器進行寫使能,再對RTL8019AS的配置寄存器2進行設置,代碼如下。
clr nicIOAddr;選CR寄存器
mov w,#d1h;選第三頁,停止傳輸操作
call NICWrite;寫入數據
mov nicIOAddr,#$01;選9346CR寄存器
mov w,#d0h;配置寄存器寫使能
call NICWrite;寫入數據
mov nicIOAddr,#05h;選配置寄存器2
mov w,#0h;網絡連接自動檢測使能(10BaseT)
call NICWrite;寫入數據
3.配置當前頁寄存器(寫時選擇第一頁07h寄存器,讀時選擇第二頁07h寄存器)。
inc nicIOAddr;($07) CURR寄存器指向接收緩沖區(qū)的第一頁(每頁256個字節(jié))
mov w,#RXBUF_START;把開始地址寫入CUR寄存器中
call NICWrite;寫入數據
4.配置接收緩沖區(qū)的大?。ㄔ诘谝豁摷拇嫫鹘M中).
clr nicIOAddr;選擇第一頁寄存器
mov w,#01h;寫入數據1
call NICWrite;寫入數據
inc nicIOAddr;“頁開始寄存器”($01, PSTART)設置接收緩沖區(qū)的開始頁
mov w,#RXBUF_START
call NICWrite;寫入數據
inc nicIOAddr;“頁終止寄存器”($02, PSTOP)設置接收緩沖區(qū)的終止頁
mov w,#RXBUF_END
call NICWrite;寫入數據
5.設置邊界寄存器
inc nicIOAddr;($03)BNRY()用作一個指針,指向數據緩沖區(qū)中的最后一頁的接收數據
mov w,#RXBUF_START
call NICWrite;寫入數據
6.設置中斷寄存器(地址在第一頁的07h)
mov nicIOAddr,#$07;ISR中斷寄存器
mov w,#$FF
call NICWrite;寫入數據
中斷寄存器各個位的含義如表2所示。
8.設置接收配置寄存器(0C,RCR)
mov nicIOAddr,#$0C;RCR設置為扔掉錯誤的接收包;不支持多播地址的包;接收少于64字節(jié)的數據包;支持廣播地址;物理目的地址必須和在PARO-5的接點地址相匹配;數據在存儲器中緩沖;拒絕接收有錯誤的包。
mov w,#%11000110
call NICWrite;
表2 中斷寄存器各個位的含義
位 | 符號 | 描 述 |
7 | RDC | NIC開始時置"1",開始命令寫入CD時置"1"當包從緩沖區(qū)讀取時置"0" |
6 | RDC | 當遠程DMA操作完成時置"1" |
5 | CNT | 當網絡計算器被設置時置"1" |
4 | OVW | 當接收緩沖區(qū)用完時置"1" |
3 |
相關推薦
技術專區(qū) |
評論