以太网方案简介及软硬件介绍概要

上传人:s9****2 文档编号:500027341 上传时间:2023-08-18 格式:DOCX 页数:19 大小:208.91KB
返回 下载 相关 举报
以太网方案简介及软硬件介绍概要_第1页
第1页 / 共19页
以太网方案简介及软硬件介绍概要_第2页
第2页 / 共19页
以太网方案简介及软硬件介绍概要_第3页
第3页 / 共19页
以太网方案简介及软硬件介绍概要_第4页
第4页 / 共19页
以太网方案简介及软硬件介绍概要_第5页
第5页 / 共19页
点击查看更多>>
资源描述

《以太网方案简介及软硬件介绍概要》由会员分享,可在线阅读,更多相关《以太网方案简介及软硬件介绍概要(19页珍藏版)》请在金锄头文库上搜索。

1、以太网方案简介及软硬件介绍(以太网模块图)本 公 司 使 用我们 所推 广 的 SILICON LABS 公 司 C8051F023 设计出功能强大、性能完善的以太网模块,此以 太网方案主要实现串口通讯和以太网通讯之间的转换,其主 要应用在门禁楼宇控制,远距离数据采集,工业智能通讯, 煤矿井下各种外设挂载转换,以及相关的接口转换通讯。其 通讯速度可以实现 500KBPS 以上,完全满足工业控制内的 数据通讯要求。以下为一个简单的由远程计算机和该模块通讯的示意图。该 232-TCP/IP 模块可以挂接在世界上任意的以太网上, 只要知道其 IP 地址,可以在世界上任意角落进行互联。在 Intern

2、et 可以随意的进行控制和访问,进行远距离的控制更是 得心应手。随着网络的逐渐普及,家居安全智能设备也应运而生, 232-TCP/IP 模块解决了高智能性设备和以太网之接桥接的 作用,也可以使用在门禁楼宇控制上,组建局域网。主要芯片有MAX232(串口的电平转换),24cO2(IIC总线的 eeprom), 373(8 位锁存),62256(32K 的 RAM).其中的 24C02 也可以不要,可以通过存取网卡芯片(RTL8019)上的93C46 来实现,62256为外部32K的Ram,也可以不用,可以用网 卡心片上的 RAM 来代替,但是网卡上的 Ram 的存取比较复 杂,速度会比加 622

3、56 慢。为了编程的方便,和实现快的传 输速度,以及为完成更为复杂的应用,选择使用 62256,用C8051F023 单片机和外加 62256,可以实现 500KBPS 以上的传输速度操作方式Operating Mode:跳线方式Jumperless (不是即插即用Plug and Play)端口 I/O base: 0240-25FH中断 Interrupt:2/9输入输出地址:共32个,地址偏移量为OOH1FH,(对应于240H 25FH, 240H 的地址偏移量为0, 241H的地址偏移量为1,25FH的地址偏移量为1FH)。其中OOH0FH共16个地址,为寄存器地址。10H17H共8个

4、地址,为DMA地址。18H 1FH共8个地址,为复位端口。 对于8位的操作方式,上面的地址中只有18个是有用的:OOH0FH共16个寄存器地址。10H DMA地址(10H 17H的8个地址是一样的,都可以用来做DMA端口,只 要用其中的一个就可以了)1FH复位地址(18H到1FH共8个地址都是复位地址,每个地址的功能都是一 样的,只要其中的一个就可以了,但实际上只有18H,1AH,1CH,1EH这几个复位端 口是有效的,其他不要使用,有些兼容卡不支持19H,1BH,1DH等奇数地址的复位)中的第7位RST跟复位有关。网卡执行正确的复位之后该位为 1。在 linux 或 windows 的驱动程

5、序中,一般在复位之后检 查该标志位以确认是否正确复位,特别是在即插即用的检测过程中。对于用单片机控制网卡 来说,可以不检查该标志位,因为如果复位不正常的情况通常是网卡坏了。寄存器:00H0FH共16个地址是寄存器地址。寄存器分成4页PAGE0-PAGE3但NE2000 兼容的寄存器只有3页(Page0-Page2),(第四页是RTL8019AS自己定义的,我们不用去管这 些寄存器,因为你对第四页的寄存器的操作仅对这个网卡是有效的,序从main()开始执行:main()delaymsecond(lO);/延时大约1秒,保证电源稳定和网卡自身的上电完成。 net cardrese t();/复位网

6、卡的子程序网卡的复位子程序#define reg1f XBYTE0xdf00 /网卡的复位端口的地址,对应于网卡的地址 25FH。#define uint unsigned int /uint 代表 unsigned int ,#define uchar unsigned char /uchar 代表 unsigned char,我比较懒,不愿 意多写sbit reset二p34; /单片机的p3.4脚连接到网卡的RSTDRV复位引脚void netcardreset()uint data i;uchar data temp;reset=l; /使网卡的RSTDRV引脚变成高电平,网卡是高电平

7、复位的。 for(i=0;i250;i+);/延时程序,至少需要reset=0; /使网卡的RSTDRV引脚变成低电平,网卡上电复位完毕 for(i=0;i250;i+);temp二reglf;/读网卡的复位端口 reg1f=temp; /写网卡的复位端口 for(i=0;i250;i+);上面实际上是网卡复位的两种情况, reset=1;reset=0 相当于冷复位temp=reg1f;reg1f=temp 相当于热复位 对网卡的复位端口的读或写将复位网卡,网卡内部将执行复位过程。读写是随意 的,写入任意的数都将复位网卡。实际上只要使用冷复位就可以了,热复位程序可以不要。热复位主要在电脑里有

8、 用,冷复位就像电脑的冷启动,热复位相当于电脑的热启动。网卡的工作参数进行设置. 以使网卡开始工作.子函数#define regOO XBYTEOxcOOO /对应于地址240H为命令寄存器CR地址void page(uchar pagenumber) uchar data temp;temp=regOO;/command register temp=temp&Ox3f;pagenumber=pagenumber 6;temp=temp | pagenumber;regOO=temp; reg00命令寄存器:CR, command register,地址偏移量00H,为一个字节 PS1和PSO

9、这两个位用来选择寄存器页,PS1 PSO=OO时选择寄存器页0,=01时选 择寄存器页 1, =10时选择寄存器页 2,=11 时选择寄存器页 3.上面的程序的参数为 pagenumber, 用来指定第几页。 temp=regOO ;/读入命令寄存器的值。temp二temp&0x3f;/将高 2 位,即 PS1,PSO 清 0 pagenumber二pagenumber6;/将低 2 位移至高端 temp=temp|pagenumber, /写入高 2 位 reg00=temp; /设置第几页RD2,RD1,RD0这3个位代表要执行的功能。= 001读网卡内存= 010写网卡内存=011 发送

10、网卡数据包=1* 完成或结束 DMA 的读写操作TXP这个位写入1时发送数据包,发完自动清零 STA, STP这两个位用来启动命令或停止命令 = 10 启动命令= 01 停止命令网卡的初始化子程序 void ne2000init() reg00=0x21; /选择页 0的寄存器,网卡停止运行,因为还没有初始化 reg01=0x4c; /寄存器 Pstartreg02=0x80; /Pstopreg03=0x4c; /BNRYreg04=0x45; /TPSRreg0c=0xcc; /RCRreg0d=0xe0; /TCRreg0e=0xc8; /DCR 数据配置寄存器 8位数据 dmareg0

11、f=0x00; /IMR disable all interruptpage(1); /选择页 1 的寄存器reg07=0x4d; /CURRreg08=0x00; /MAR0reg09=0x41; /MAR1reg0a=0x00; /MAR2reg0b=0x80; /MAR3reg0c=0x00; /MAR4reg0d=0x00; /MAR5reg0e=0x00; /MAR6reg0f=0x00; /MAR7reg00=0x22; /选择页0寄存器,网卡执行命令。PSTART 接收缓冲区的起始页的地址。PSTOP 接收缓冲区的结束页地址。(该页不用于接收)BNRY 指向最后一个已经读取的页(

12、读指针) CURR 当前的接收结束页地址。(写指针)网卡含有16K字节的RAM,地址为0x4000-0x7fff(指的是网卡上的存储地址, 而不是ISA总线的地址,是网卡工作用的存储器),每256个字节称为一页,共 有64页。页的地址就是地址的高8位,页地址为0x400x7f。这16k的ram 的一部分用来存放接收的数据包,一部分用来存储待发送的数据包。当然也可以 给用户使用。(例如把网卡设置成使用8K的ram,另外8K的ram就可以用来给 单片机作为存储器,但我没有这样做,原因是操作网卡上的ram比较复杂) 在我的程序中使用0x40-0x4B为网卡的发送缓冲区,共12页,刚好可以 存储2个最

13、大的以太网包。使用0x4c 0x7f为网卡的接收缓冲区,共52页。因 此PSTART=0x4c,PST0P=0x80(0x80为停止页,就是直到0x7f,是接收缓冲区, 不包括0x80)刚开始,网卡没有接收到任何数据包,所以,BNRY设置为指向第 一个接收缓冲区的页 0x4c) 这四个寄存器用于接收的设置。CURR是网卡写内存的指针。它指向当前正在写的页的下一页。那么初始化 它就应该指向0x4c + l = 0x4d。网卡写完接收缓冲区一页,就将这个页地址加 一,CURR = CURR+1。这是网卡自动加的。当加到最后的空页(这里是Ox8O,PSTOP) 时,将CURR置为接收缓冲区的第一页(

14、这里是0x4c,PSTART),也是网卡自动 完成的。当CURR=BNRY时,表示缓冲区全部被存满,数据没有被用户读走,这 时网卡将停止往内存写数据,新收到的数据包将被丢弃不要,而不覆盖旧的数据。 此时实际上出现了内存溢出。而BNRR要由用户来操作。用户从网卡读走一页数据,要将BNRY加一,然 后再写到BNRY寄存器。当BNRY加到最后的空页(0x80,PSTOP)时,同样要将 BNRY 变成第一个接收页(PSTART,0x4c)BNRY=0x4c;CURR和BNRY主要用来控制缓冲区的存取过程,保证能顺次写入和读出)。 当CURR二BNRY+1 (或当BNRY = 0x7f ,CURR=0x

15、4c)时,网卡的接收缓冲区里没有数 据,表示没有收到数据包。 用户通过这个判断知道没有包可以读。当上述条件 不成立时,表示接收到新的数据包。然后用户应该读取数据包,直到上述条件成 立时,表示所以数据包已经读完,此时停止读取数据包。TPSR为发送页的起始页地址。初始化为指向第一个发送缓冲区的页,0x40。 RCR接收配置寄存器,设置为使用接收缓冲区,仅接收自己的地址的数据包 (以及广播地址数据包)和多点播送地址包,小于64字节的包丢弃(这是协议 的规定,设置成接收是用于网络分析),校验错的数据包不接收。TCR发送配置寄存器,启用crc自动生成和自动校验,工作在正常模式。 DCR数据配置寄存器,设置为使用FIFO缓存,普通模式,8位数据传输模 式,字节顺序为高位字节在前,低位字节在后(符合我们的习惯)(如果用 16 位的单片机,设置成16位的数据总线操作会更快,但80C52是8位总线的单片 机)IMR中断屏蔽寄存器,设置成0x00,屏蔽所有的中断。设置成0xff将允许中断)MAR0MAR8 是设置多点播送的参数,这点我也不是很清楚,我从电脑读 出来是什么数,我也将这 8 个寄存器设置

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号