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

上传人:cn****1 文档编号:512248121 上传时间:2023-09-06 格式:DOC 页数:19 大小:382.50KB
返回 下载 相关 举报
以太网方案简介及软硬件介绍概要_第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地址,可以在世界上任意角落进行互联。在 Internet可以随意的进行控制和访问,进行

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

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

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

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

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

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

8、复位就可以了, 热复位程序可以不要。 热复位主要在电脑里有 用,冷复位就像电脑的冷启动,热复位相当于电脑的热启动。网卡的工作参数进行设置 .以使网卡开始工作 .子函数#define regOO XBYTE0xc000 /对应于地址240H为命令寄存器 CR地址void page(uchar pagenumber) uchar data temp;temp=reg00;/command registertemp=temp&0x3f ;pagenumber=pagenumber 6;temp=temp | pagenumber;reg00=temp;reg00命令寄存器:CR comma nd r

9、egister,地址偏移量00H,为一个字节 PS1和PSO这两个位用来选择寄存器页,PS1 PSO=OO时选择寄存器页0,=01时选 择寄存器页 1, =10 时选择寄存器页 2,=11 时选择寄存器页 3.上面的程序的参数为page number,用来指定第几页。 temp=regOO ;/ 读入命令寄存器的值。temp=temp&0x3f; 将高 2 位,即 PS1,PSO清 0pagenumber=pagenumber6;将低 2 位移至高端 temp=temp|pagenumber, / 写入高 2 位 regOO=temp; / 设置第几页 RD2,RD1,RD这3个位代表要执行的

10、功能。=001读网卡内存=010写网卡内存二011发送网卡数据包=1*完成或结束DMA勺读写操作TXP这个位写入1时发送数据包,发完自动清零 STA STP这两个位用来启动命令或停止命令 =10启动命令=01停止命令 网卡的初始化子程序void ne2000init() reg00=0x21; / 选择页 0 的寄存器,网卡停止运行,因为还没有初始化 reg01=0x4c; / 寄存器 Pstartreg02=0x80; /Pstop reg03=0x4c; /BNRY reg04=0x45; /TPSR reg0c=0xcc; /RCR reg0d=0xe0; /TCR reg0e=0xc8

11、; /DCR 数据配置寄存器 8 位数据 dma reg0f=0x00; /IMR disable all interrupt page(1); / 选择页 1 的寄存器 reg07=0x4d; /CURR reg08=0x00; /MAR0 reg09=0x41; /MAR1reg0a=0x00; /MAR2 reg0b=0x80; /MAR3 reg0c=0x00; /MAR4 reg0d=0x00; /MAR5 reg0e=0x00; /MAR6 reg0f=0x00; /MAR7 reg00=0x22;/ 选择页 0 寄存器,网卡执行命令。PSTART接收缓冲区的起始页的地址。PSTO

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

13、杂)在我的程序中使用 0x40-0x4B 为网卡的发送缓冲区,共 12 页,刚好可以 存储2个最大的以太网包。使用0x4c 0x7f为网卡的接收缓冲区,共52页。因 此PSTART=0x4c,PSTOP=0x80(0x8为停止页,就是直到 0x7f ,是接收缓冲区, 不包括0x80)刚开始,网卡没有接收到任何数据包,所以,BNRY设置为指向第 一个接收缓冲区的页 0x4c) 这四个寄存器用于接收的设置。CUR是网卡写内存的指针。它指向当前正在写的页的下一页。那么初始化 它就应该指向0x4c + 1 = 0x4d。网卡写完接收缓冲区一页,就将这个页地址加CUR= CURR 1。这是网卡自动加的。

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

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

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

当前位置:首页 > 医学/心理学 > 基础医学

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