📄 ——用51单片机控制rtl8019as实现以太网通讯.htm
字号:
<P
style="TEXT-INDENT: 30px">这样,RTL8019AS复位后读取93C46中配置好的内容,对应设置配置寄存器CONFIG1的值为00H,CONFIG1的低4位IOS3~0用于选择I/O基地址。IOS3~0设置值均为0时,RTL8019AS选择的端口I/O基地址为300H。</P>
<P
style="TEXT-INDENT: 30px">RTL8019AS的地址为20位,那么用到RTL8019AS的地址空间为00300H~0031FH,用二进制表示00300H~0031FH,可以发现第19位到第5位是固定的:000000000011000。RTL8019
AS的20根地址线SA0~SA19如表2连接。<BR><BR><B>表2 RTL8019AS地址线的连接表</B></P>
<TABLE borderColorDark=#ffffff width="100%" borderColorLight=#000000
border=1>
<TBODY>
<TR class=main>
<TD align=middle width="37%">SA19~SA10</TD>
<TD width="63%">接地</TD></TR>
<TR class=main>
<TD align=middle width="37%">SA9~SA8</TD>
<TD width="63%">接单片机P2口的P2.7,即地址总线ADDR15</TD></TR>
<TR class=main>
<TD align=middle width="37%">SA7~SA5</TD>
<TD width="63%">接地</TD></TR>
<TR class=main>
<TD align=middle width="37%">SA4~SA0</TD>
<TD width="63%">对应为地址总线的ADDR0~ADDR4</TD></TR></TBODY></TABLE>
<P
style="TEXT-INDENT: 30px">通过ADDR15、I/OW、I/OR来划分RTL8019AS和62256的地址空间。ADDR15接62256的CE脚,低电平时选择62256;高电平时选择RTL8019AS的地址空间80C52单片机的地址为16位,按图2的电路框图连接RTL8019AS的地址空间。定义reg00~reg1f来对应端口00300H~0031FH。</P>
<P style="TEXT-INDENT: 30px">#define reg00 XBYTE[0x8000]/*300H*/</P>
<P style="TEXT-INDENT: 30px">#define reg01 XBYTE[0x8001]/*301H*/</P>
<P style="TEXT-INDENT: 30px">…</P>
<P style="TEXT-INDENT: 30px">#define reg1f XBYTE[0x801F]/*31FH*/</P>
<P style="TEXT-INDENT: 30px">读写操作、复位操作对应的引脚按表3连接。<BR><BR><B>表3
RTL8019AS的ISA总线接口引脚与单片机的连接表</B></P>
<TABLE borderColorDark=#ffffff width="100%" borderColorLight=#000000
border=1>
<TBODY>
<TR class=main>
<TD align=middle width="21%">Pin29</TD>
<TD align=middle width="18%">IORB</TD>
<TD width="61%">读信号,接到单片机的WR引脚(P3.6)。</TD></TR>
<TR class=main>
<TD align=middle width="21%">Pin30</TD>
<TD align=middle width="18%">IOWB</TD>
<TD width="61%">写信号,接到单片机的RD引脚(P3.7)。</TD></TR>
<TR class=main>
<TD align=middle width="21%">Pin33</TD>
<TD align=middle width="18%">RSTDRV</TD>
<TD width="61%">RESET信号,接单片机的T0(P3.4)。</TD></TR>
<TR class=main>
<TD align=middle width="21%">Pin34</TD>
<TD align=middle width="18%">AEN</TD>
<TD width="61%">地址有效信号,接地。</TD></TR>
<TR class=main>
<TD align=middle width="21%">Pin96</TD>
<TD align=middle width="18%">IOCS16</TD>
<TD width="61%">采用电阻下拉该引脚,复位时刻脚为低电平,选择8位模式。</TD></TR>
<TR class=main>
<TD align=middle width="21%">Pin36~Pin43</TD>
<TD align=middle width="18%">SD0~SD7</TD>
<TD
width="61%">8位数据总线,接单片机的P0口。(只用到8位数据总线,SD8~SD15不接。)</TD></TR></TBODY></TABLE>
<P
style="TEXT-INDENT: 30px">采用10BASE-T布线标准通过双绞线进行以太网通讯,而RTL8019AS内置了10BASE-T收发器,所以网络接口的电路比较简单。外接一个隔离LPF滤波器0132,TPIN±为接收线,TPOUT±为发送线,经隔离后分别与RJ-45接口的RX±、TX±端相连。</P>
<P
style="TEXT-INDENT: 30px">时钟电路通过T1、T2接口一个20MHz晶振以及2个电容,实现全双工方式。</P>
<P
style="TEXT-INDENT: 30px">LED0、LED1各接一发光二极管以反映通讯状态:LED0表示LED_COL,即通讯有冲突;LED1表示LED_RX,即接收到网上的信息包。</P>
<P style="TEXT-INDENT: 0px"><B>4 程序设计</B></P>
<P style="TEXT-INDENT: 30px">所有程序采用Framclin
C51语言编制,可读性强,移植性好,开发简易。</P>
<P style="TEXT-INDENT: 30px">4.1 复位RTL8019AS</P>
<P
style="TEXT-INDENT: 30px">80C52的P3.4连接RTL8019AS的RESDRV来进行复位操作。RSTDRV为高电平有效,至少需要800ns的宽度。给该引脚旋加一个1<FONT
face=Arial>μs</FONT>以上的高电平就可以复位。施加一个高电平后,然后施加一个低电平。复位过程将执行一些操作,至少需要2ms的时间,推荐等待更久的时间之后如100ms之后才对它操作,以确保完全复位。</P>
<P style="TEXT-INDENT: 30px">4.2 初始化RTL8019AS</P>
<P
style="TEXT-INDENT: 30px">初始化页0与页1的相关寄存器,页2的寄存器是只读的,不可以设置,页3的寄存器不是NE2000兼容的,不用设置。</P>
<P style="TEXT-INDENT: 30px">(1)CR=0x21,选择页0的寄存器;</P>
<P
style="TEXT-INDENT: 30px">(2)TPSR=0x45,发送页的起始页地址,初始化为指向第一个发送缓冲区的页即0x40;</P>
<P
style="TEXT-INDENT: 30px">(3)PSTART=0x4c,PSTOP=0x80,构造缓冲环:0x4c~0x80;</P>
<P style="TEXT-INDENT: 30px">(4)BNRY=0x4c,设置指针;</P>
<P
style="TEXT-INDENT: 30px">(5)RCR=0xcc,设置接收配置寄存器,使用接收缓冲区,仅接收自己地址的数据包(以及广播地址数据包)和多点播送地址包,小于64字节的包丢弃,校验错的数据包不接收;</P>
<P
style="TEXT-INDENT: 30px">(6)TCR=0xe0,设置发送配置寄存器,启用CRC自动生成和自动校验,工作在正常模式;</P>
<P
style="TEXT-INDENT: 30px">(7)DCR=0xc8,设置数据配置寄存器,使用FIFO缓存,普通模式,8位数据DMA;</P>
<P style="TEXT-INDENT: 30px">(8)IMR=0x00,设置中断屏蔽寄存器,屏蔽所有中断;</P>
<P style="TEXT-INDENT: 30px">(9)CR=0x61,选择页1的寄存器;</P>
<P
style="TEXT-INDENT: 30px">(10)CURR=0x4d,CURR是RTL8019AS写内存的指针,指向当前正在写的页的下一页,初始化时指和0x4c+1=0x4d;</P>
<P style="TEXT-INDENT: 30px">(11)设置多址寄存器MAR0~MAR5,均设置为0x00;</P>
<P style="TEXT-INDENT: 30px">(12)设置网卡地址寄存器PAR0~PAR5;</P>
<P
style="TEXT-INDENT: 30px">(13)CR=0x22,选择页1的寄存器,进入正常工作状态。<BR><BR><B><A
href="http://www.21ic.com/info/images/aet/200301/6b.gif">图2
89C52单片机控制RTL8019AS实现以太网通讯的接口电路框图</A></B><BR><BR>
<SPAN class=main1>4.3 发送帧</P>
<P
style="TEXT-INDENT: 30px">将待发送的数据按帧格式封装,通过远程DMA通道送到RTL8019AS中的发送缓存区,然后发出传送命令,完成帧的发送。需要设置以太网目的地址、以太网源地址、协议类型,再按所设置的协议类型来设置数据段。之后启动远程DMA,数据写入RTL8019AS的RAM,再启动本地DMA,将数据发送网上。</P>
<P
style="TEXT-INDENT: 30px">RTL8019AS无法将整个数据包通过DMA通道一次存入FIFO,则在构成一个新的数据包之前必须先等待前一数据包发送完成。为提高发送效率,设计将12页的发送缓存区分为两个6页的发送缓存区,一个用于数据包发送,另一个用于构造端的数据包,交替使用。</P>
<P style="TEXT-INDENT: 0px"><B>5 软件的调试与验证</B></P>
<P style="TEXT-INDENT: 30px">调试环境包括RTL8019AS实验板、PC机(带网卡)以及网线。</P>
<P style="TEXT-INDENT: 30px">用C51语言编程,实现TCP/IP协议中ARP数据帧的收发。</P>
<P
style="TEXT-INDENT: 30px">实验中,单片机首先构造一个ARP请求包发送给PC机,PC机收到后会发送一个ARP应答包给单片机,单片机收到该应签包后再发一个ARP请求包给PCF机,如此不断循环,来测试系统的性能。在PC机上采用Sniffer软件如Windump软件来监视(或截获)PC机网卡接收ARP包的情况,取得了满意的效果。
</SPAN></P>
<P></P></DIV></TD></TR>
<TR>
<TD align=middle height=15>
<TABLE cellSpacing=0 cellPadding=0 align=center border=0>
<TBODY>
<TR>
<TD>
<DIV></DIV></TD></TR></TBODY></TABLE></TD></TR>
<TR>
<TD align=right height=2>
<TABLE cellSpacing=0 cellPadding=0 width="80%" border=0>
<TBODY>
<TR>
<TD width=75>【<A href="javascript:doPrint();">打印本稿</A>】</TD>
<TD width=8></TD>
<TD width=75>
<P>【<A
href="http://www.21ic.com/new_info/news/review.asp?title=用51单片机控制RTL8019AS实现以太网通讯target="
_blank?>发表评论</A>】</P></TD>
<TD width=10></TD>
<TD width=79>【<A
href="http://www.21ic.com/new_info/news/sendmail.asp?num=用51单片机控制RTL8019AS实现以太网通讯">推荐</A>】</TD></TR></TBODY></TABLE></TD></TR>
<TR>
<TD align=right height=2></TD></TR>
<TR>
<TD align=right height=2><A href="javascript:window.close();"><IMG
height=20 src="——用51单片机控制RTL8019AS实现以太网通讯.files/close_c.gif"
width=77 border=0 name=Image161></A><FONT
color=#ffffff>----</FONT></TD></TR></TBODY></TABLE><BR><BR>
<TABLE cellSpacing=0 cellPadding=0 width=520 align=center border=0>
<TBODY>
<TR>
<TD vAlign=bottom align=middle width=114 bgColor=#999a76
height=1><IMG height=1
src="——用51单片机控制RTL8019AS实现以太网通讯.files/blank.gif" width=1></TD>
<TD width=466 height=1></TD></TR>
<TR>
<TD align=middle width=114 bgColor=#ece8db height=19>相关新闻</TD>
<TD width=466 height=19></TD></TR>
<TR bgColor=#999a76>
<TD colSpan=2 height=1><IMG height=1
src="——用51单片机控制RTL8019AS实现以太网通讯.files/blank.gif" width=1></TD></TR>
<TR>
<TD colSpan=2 height=1></TD></TR></TBODY></TABLE>
<TABLE borderColor=#000000 cellSpacing=0 cellPadding=0 width=520
align=center border=0>
<TBODY>
<TR>
<TD vAlign=top>
<TABLE class=RelatedTable width="100%" border=0>
<TBODY>
<TR class=RelatedTr>
<TD class=RelatedTd>
<SCRIPT language=javascript
src="——用51单片机控制RTL8019AS实现以太网通讯.files/about.htm"></SCRIPT>
</TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE><BR></TD>
<TD vAlign=top align=middle width=150 bgColor=#ece8db height=2>
<TABLE cellSpacing=0 cellPadding=1 width="100%" border=0>
<TBODY>
<TR>
<TD bgColor=#000000>
<TABLE cellSpacing=0 cellPadding=2 width=150 bgColor=#ece8db
border=0>
<TBODY>
<TR>
<TD>
<META content="Microsoft FrontPage 5.0" name=GENERATOR>
<META content=FrontPage.Editor.Document name=ProgId>
<P><A href="http://www.21ic.com/custom/tek/tek.htm"><IMG
src="——用51单片机控制RTL8019AS实现以太网通讯.files/tek.gif"
border=0></A></P></TD></TR>
<TR>
<TD
height=5></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE>
<TABLE cellSpacing=0 cellPadding=0 width=766 align=center border=0>
<TBODY>
<TR>
<TD vAlign=top colSpan=6></TD></TR>
<TR>
<TD vAlign=top colSpan=6 height=10></TD></TR>
<TR>
<TD vAlign=top bgColor=#999999 colSpan=6 height=2></TD></TR>
<TR>
<TD class=stxt vAlign=center align=middle colSpan=6
height=6></TD></TR></TBODY></TABLE>
<TABLE cellSpacing=0 cellPadding=0 width=766 align=center border=0>
<TBODY>
<TR>
<TD class=s width=973 height=12></TD></TR>
<TR>
<TD class=s width=973 height=20>
<DIV align=center><FONT face="Arial, Helvetica, sans-serif"><!--start copyright-->
<DIV align=center><FONT color=black>
<TABLE cellSpacing=0 cellPadding=0 width=600 align=center border=0>
<TBODY>
<TR>
<TD align=middle width="100%" colSpan=2><BR>Better View:800*600 Best
View:1024x768 为了本系统能够更好的为您服务,请使用IE4.0或以上版本浏览器
<BR><BR>版权所有(C)21IC中国电子网 电话:010-82357510, 82357511 传真: 010-82357512
</TD></TR></TBODY></TABLE><!--start copyright--></FONT></DIV></FONT></DIV></TD></TR></TBODY></TABLE><BR></BODY></HTML>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -