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

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

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

(以太网模块图)

本公司使用我们所推广的SILICON LABS 公司C8051F023设计出功能强大、性能完善的以太网模块,此以太网方案主要实现串口通讯和以太网通讯之间的转换,其主要应用在门禁楼宇控制,远距离数据采集,工业智能通讯,煤矿井下各种外设挂载转换,以及相关的接口转换通讯。其通讯速度可以实现500KBPS以上,完全满足工业控制内的数据通讯要求。

以下为一个简单的由远程计算机和该模块通讯的示意图。

该232-TCP/IP模块可以挂接在世界上任意的以太网上,只要知道其IP地址,可以在世界上任意角落进行互联。在Internet可以随意的进行控制和访问,进行远距离的控制更是得心应手。

随着网络的逐渐普及,家居安全智能设备也应运而生,232-TCP/IP模块解决了高智能性设备和以太网之接桥接的作用,也可以使用在门禁楼宇控制上,组建局域网。

主要芯片有MAX232(串口的电平转换),24c02(IIC总线的eeprom),373(8位锁存),62256(32K的RAM).其中的24C02也可以不要,可以通过存取网卡芯片(RTL8019)上的93C46来实现,62256为外部32K的Ram,也可以不用,可以用网卡心片上的RAM来代替,但是网卡上的Ram的存取比较复杂,速度会比加62256慢。为了编程的方便,和实现快的传输速度,以及为完成更为复杂的应用,选择使用62256,用

C8051F023单片机和外加62256,可以实现500KBPS以上的传输速度

操作方式Operating Mode:跳线方式Jumperless(不是即插即用Plug and Play)

端口I/O base:0240-25FH

中断Interrupt:2/9

输入输出地址:共32个,地址偏移量为00H--1FH,(对应于240H--25FH,240H 的地址偏移量为0,241H的地址偏移量为1,。。。25FH的地址偏移量为1FH)。

其中00H--0FH共16个地址,为寄存器地址。

10H--17H共8个地址,为DMA地址。

18H--1FH共8个地址,为复位端口。

对于8位的操作方式,上面的地址中只有18个是有用的:

00H--0FH共16个寄存器地址。

10H DMA地址(10H--17H的8个地址是一样的,都可以用来做DMA端口,只要用其中的一个就可以了)

1FH 复位地址。(18H到1FH共8个地址都是复位地址,每个地址的功能都是一样的,只要其中的一个就可以了,但实际上只有18H,1AH,1CH,1EH这几个复位端口是有效的,其他不要使用,有些兼容卡不支持19H,1BH,1DH等奇数地址的复位)

中的第7位RST跟复位有关。

网卡执行正确的复位之后该位为1。在linux或windows的驱动程序中,一般在复位之后检查该标志位以确认是否正确复位,特别是在即插即用的检测过程中。对于用单片机控制网卡来说,可以不检查该标志位,因为如果复位不正常的情况通常是网卡坏了。

寄存器:00H--0FH共16个地址是寄存器地址。寄存器分成4页PAGE0--PAGE3,但NE2000兼容的寄存器只有3页(Page0-Page2),(第四页是RTL8019AS自己定义的,我们不用去管这些寄存器,因为你对第四页的寄存器的操作仅对这个网卡是有效的,

序从main()开始执行:

main()

{

delaymsecond(10);//延时大约1秒,保证电源稳定和网卡自身的上电完成。netcardreset();//复位网卡的子程序

。。。。

}

网卡的复位子程序:

#define reg1f XBYTE[0xdf00] //网卡的复位端口的地址,对应于网卡的地址25FH。

#define uint unsigned int //uint 代表unsigned int ,

#define uchar unsigned char //uchar 代表unsigned char,我比较懒,不愿意多写

sbit reset=p3^4; //单片机的p3.4脚连接到网卡的RSTDRV复位引脚

void netcardreset()

{uint data i;

uchar data temp;

reset=1; //使网卡的RSTDRV引脚变成高电平,网卡是高电平复位的。

for(i=0;i<250;i++);//延时程序,至少需要

reset=0; //使网卡的RSTDRV引脚变成低电平,网卡上电复位完毕

for(i=0;i<250;i++);

temp=reg1f;//读网卡的复位端口

reg1f=temp; //写网卡的复位端口

for(i=0;i<250;i++);

}

上面实际上是网卡复位的两种情况,

reset=1;reset=0相当于冷复位

temp=reg1f;reg1f=temp相当于热复位

对网卡的复位端口的读或写将复位网卡,网卡内部将执行复位过程。读写是随意的,写入任意的数都将复位网卡。

实际上只要使用冷复位就可以了,热复位程序可以不要。热复位主要在电脑里有用,冷复位就像电脑的冷启动,热复位相当于电脑的热启动。

网卡的工作参数进行设置.以使网卡开始工作.

子函数

#define reg00 XBYTE[0xc000] //对应于地址240H 为命令寄存器CR地址

void page(uchar pagenumber)

{ uchar data temp;

temp=reg00;//command register

temp=temp&0x3f;

pagenumber=pagenumber <<6;

temp=temp | pagenumber;

reg00=temp;

}

reg00命令寄存器:CR,command register,地址偏移量00H,为一个字节

相关文档
最新文档