老古开发网首页
导航:老古开发网首页文章索引文章分类嵌入式系统→[利用微控制器进行网络通信的网卡配置]
| -文章搜索 - 最新文章 - |

利用微控制器进行网络通信的网卡配置

发布时间:2002年7月13日 点击次数:434
来源:   作者:赵静 郝学元 陈家胜
 
 利用单片机进行网络通信的关键是驱动和配置网络接口卡,而RTL8019是REALTEK公司高集成度的专用以太网接口芯片,支持PnP自动探测,并且内嵌16K SRAM,有全双工的通信接口,可以通过交换机在双绞线上同时发送和接收数据,使带宽从10兆增加到20兆,是用来进行以太网通信的理想芯片。
  RTL8019AS是针对ISA总线设计的,在PC上用来实现网络的物理层协议,主要包括网卡与网络电缆的物理连接、介质访问控制(如CSMA/CD)、数据帧的拆装、帧的发送与接收、错误校验、数据信号的编/解码(如曼彻斯特码和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寄存器指向接收缓冲区的第一页(每页256个字节)
  mov w,#RXBUF_START;把开始地址写入CUR寄存器中
  call NICWrite;写入数据
  4.配置接收缓冲区的大小(在第一页寄存器组中).
  clr nicIOAddr;选择第一页寄存器
  mov w,#01h;写入数据1
  call NICWrite;写入数据
  inc nicIOAddr;“页开始寄存器”($01, PSTART)设置接收缓冲区的开始页
  mov w,#RXBUF_START
  call NICWrite;写入数据
  inc nicIOAddr;“页终止寄存器”($02, PSTOP)设置接收缓冲区的终止页
  mov w,#RXBUF_END
  call NICWrite;写入数据
  5.设置边界寄存器
  inc nicIOAddr;($03)BNRY()用作一个指针,指向数据缓冲区中的最后一页的接收数据
  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字节的数据包;支持广播地址;物理目的地址必须和在PARO-5的接点地址相匹配;数据在存储器中缓冲;拒绝接收有错误的包。
  mov w,#%11000110
  call NICWrite;
表2 中断寄存器各个位的含义

符号 描 述
7 RDC NIC开始时置"1",开始命令写入CD时置"1"当包从缓冲区读取时置"0"
6 RDC 当远程DMA操作完成时置"1"
5 CNT 当网络计算器被设置时置"1"
4 OVW 当接收缓冲区用完时置"1"
3   当传输包由于网络问题而掉时被置"1"
2 RXE 当有以下情况时被置"1":CRC校验错;
帧对起错误;丢包
1 PTX 这个位指示发送包没有错误
0 PRX 这个位指示接收包没有错误


  9.设置发送配置寄存器(0D,TCR)
  inc nicIOAddr;TCR设置为包要进行地址匹配检查,CRC校验和帧对齐校验;物理目的地址必须和在PARO-5的接点地址相匹配;不支持多播地址的包;发送少于64字节的数据包。
  mov w,#%11100000
  call NICWrite
  10.设置数据配置寄存器(0E,DCR)
  inc nicIOAddr;数据配置在低8位,每次传送一个字节,而不是一个字
  mov w,#%10111000
  call NICWrite;调写子程序,把数据写入
  11.开始接收数据
  clr nicIOAddr;选择CR寄存器
  mov w,#%00000010;Page0,数据设置为开始接收
  call NICWrite;调写子程序,把数据写入
  利用单片机对网络控制器进行上述设置后,再结合高层的TCP/IP协议,就可以在以太网上进行数据传输了。
  利用8位微控制器配置网络控制卡的寄存器较为烦琐,上述过程和代码只是简要的介绍,用户也可针对自己的特殊需要进行一些特殊设置,总之,要以提高数据传输效率为原则。


欢迎进入老古论坛进行讨论
[嵌入式系统] 相关文章:
剪毛刀架高度控制器的研制
简介:
概述   人造毛皮后整理联合烫剪机中剪毛刀架的定位调节,原是人工用按钮控制异步电动机正、反转,通过机械减速器(齿轮装置)后带动剪毛刀架蜗杆,使剪毛刀架做上、下运动至要求的位置。操作烦琐,需反复测量、调整,很难恰好到位,误差大。为此,我们用AT89C51单片机构成剪毛高度控制器,对剪毛刀架高度进行自动控制。   使用该控制器,只需由触摸开关设定工艺要求的剪毛高度(毫米数),控制器则发出相应的控制信号使剪毛刀架达到希望的高度,并可由工艺人员设置相对的机械零位。对运行状态和参数设置进行数码显示,相应地还有剪毛刀架高度减少及增大指示,控制趋势一目了然。 一.硬......

无线收发模块 在智能家庭网络中的应用
智能精密数字多用表自动校准技术剖析
精密运动控制器LM628的应用设计
POSCAP 电容器及其应用
WB121高速宽带跟踪型电量隔离传感器原理及其应用
接触式图像传感器的信号读取与补偿技术
VxWorks与SNMP代理的开发
采用C50x对无刷直流电机进行控制
ORCAD/PSPICE 9中新元件的创建
 
下一个:[嵌入式系统]利用LDO改善白光LED的匹配度
简介:
白光LED与荧光灯相比具有使用简单、成本低的优势,与白炽灯相比可以提供真正的白色光,因此,其用量在最近几年呈现出稳步上升的趋势,在手持式产品中被广泛用作闪光灯、显示器背光等。当然,在实际应用中针对白光LED也存在一些有待解决的技术问题。   选用白光LED最明显的问题是产品的匹配性差,按照白光LED的典型规格,电流为20mA时正向电压的最小值为3.0V、典型值为3.5V、最大值为4.0V。显然,稳压源不是合理的解决方案。当然,利用相同的电流驱动每只LED可以获得均匀亮度,但成本很高。在许多应用中只是简单地用一个固定偏置电压和镇流电阻驱动LED,如图1所示。   按照图1设计电路通常可......
 

上一个:[嵌入式系统]车载接收卫星电视直播节目的天线自动跟踪系统

老古开发网版权所有 2006年9月 asp.Net V2.0 设计:老古
页面缓存:10分钟 执行时间:16毫秒