单片机与ISA总线以太网解决方案 (版主:老古)http://www.laogu.com

点击放大


以太网开发板(ISA)
RTL8019AS芯片

单片机与TCP/IP网络
(一 序言)(01/03/21)


(二 以太网协议)
(01/03/22)

(三)ISA总线
(01/03/25)

(四)89C52单片机与网卡接口电路图
(01/03/31)

(五)接口电路图详解(1)(01/04/01)

(六)接口电路图详解(2)(01/04/01)

(七)网卡上电复位 (01/04/01)

(八)网卡初始化 (01/04/07)

(九)读取网卡的网卡地址 (01/04/07)

(十)设置网卡地址(01/05/23)

(十一)RTL8019AS ISA网卡电路图(01/09/13)

(十二)RTL8019AS的跳线方式(01/09/25)

(十三)网卡地址和多点播送(组播)及广播(01/09/28)

(十四)以太网组播地址过滤寄存器MAR0-MAR7的计算(01/10/02)

(15)RTL8019AS,RTL8029AS如何接收一个数据包(1)

(16)RTL8019AS,RTL8029AS如何读写网卡的RAM

(17)一体化电路图(03/6/15)

(18)如何使用以太网开发板中的调试代码(2006/06/06)

相关的技术文章会陆续刊登。



到哪里购买和如何购买你的开发板?
 
 
   

FAQ:
1.你的开发板提供源代码吗?
答:提供整个设计的源代码,包括用keil c51编的单片机的源程序,用protel99制作的原理图和电路板图。
2.你的开发板demo的tcp/ip的传输速度是多大?
答:大概为100kbps左右。单片机的处理能力有限,不能处理大量的数据。
3.你的解决方案主要用在哪里?
已经有不少用户购买了我们的产品,用在智能小区,网络仪器,以太网转串口,远程抄表,嵌入式网络,监控系统,数据传输等领域。也有用户在我的开发板的基础上开发了web server。

4. 你的demo支持http协议吗?
答:不支持。因为大部分的应用是作为数据传输的工具,而不是网页服务。http要很大的代码空间,不利于低成本。
5.你的demo支持UDP吗?
答:支持。支持UDP的收和发,本机UDP端口为1025.

6.你的demo能够跨越网关吗?
答:可以跨越网关,提供的demo设置了一个默认的网关192.168.0.3,子网掩码为255.255.255.0,单片机可以跨越网关连接到国际互联网上的任何主机.
7.你的demo支持TCP吗?
答:支持TCP传输,可以建立被动的连接也可以从单片机主动连接到远程计算机.默认的IP地址为192.168.0.7,子网掩码255.255.255.0
8.两个单片机可以互相连接吗?
答:两个单片机之间可以互相连接,从一个单片机发起tcp连接到另一个单片机.两个单片机的ip地址不能相同.也可以在两个单片机之间收和发UDP数据包.
9.具体实现的ping,tcp,udp功能介绍(跟pci的开发板一样):
A.2.0实现的PING功能详述
B.2.0实现的TCP功能详述
C.2.0实现的UDP功能和异地连接详述
10.你提供的程序需要库文件吗?(2002/01/08)
答:提供的程序全部为 C语言的源程序,不需要任何库文件,建议使用keil c51 V6.20或更高版本。

11.目前提供的是一体化的板子吗?(2003/06/18)

答:目前提供的是一体化的板子,不是使用网卡,而是直接使用RTL8019AS芯片。

12.有时发生ip包的头部校验和出错的问题?(2004/10/12 ,2005年以后销售的产品已经修正)

答:请将函数createipheadcrc()改为下面给出的:

unsigned int createipheadcrc()
{
unsigned char i;
crctemp.dwords=0;

for(i=9;i<19;i++)
{
crctemp.dwords=crctemp.dwords+txdnet.words.wordbuf[i];
}
while(crctemp.words.high>0) {

crctemp.dwords=(crctemp.dwords&0xffff)+((crctemp.dwords>>16)&0xffff); //这是改动的部分
}
crctemp.words.low=0xffff-crctemp.words.low;
return(crctemp.words.low);
}

13.当我使用keil c51 v7.xx或者 v8.xx编译之后ping不通?(2006年6月5日)

答:请将函数unsigned char check_new_packet()中的下面程序:

next_page=bnry;
bnry=bnry++; //这是出错的部分
if(bnry>0x7f)bnry=0x4c;

 

修改为以下给出的(红色为需要修改的句子):
next_page=bnry;
bnry++;//这是改动的部分
if(bnry>0x7f)bnry=0x4c;

注:
在 keil c51 v6.23中bnry=bnry++;运算的结果是bnry = bnry+1
在keil c51 v7.xx, v8.xx中,bnry=bnry++;运算结果是 bnry=bnry

14.在繁忙的网络环境中或者往返时间大的环境中容易掉线?(2007年7月)

答:有两个参数控制了单片机重发数据包(当发生丢包时)的时间和次数:

unsigned char rttime=20;//重发时间,20计数,实际的数据包重发的时间为20x10=200毫秒,定时器为10毫秒一次.

#define tcp_max_rt 8 //tcp包最多重发的次数

当应用到一些长往返时间(比如互联网上电信用户访问网通ip),往返时间超过200毫秒,会导致过快的数据包的重发,可以将rttime=20

改为较大的值,比如rttime=50 (500毫秒重发), rttime=100 (1秒重发)

在一个丢包严重的网络里,可以适当提高单片机重发次数#define tcp_max_rt 8 改为更大的值,比如20次.(同时可以将重发时间改为较大的值,以减少网络阻塞及过快重发)
不过因为单片机的处理能力有限,不建议挂过多的设备在一个子网里,设备很多的时候,可以划分为多个独立子网,用路由器(网桥)隔开.主要原因是广播包,每个单片机都要去处理,设备太多,广播包多,单片机难于应付.当然也可以换用速度更快的单片机,比如2周期的,4周期的,6周期的单片机,但成本要高一些.

到哪里购买和如何购买你的开发板?

 
   
老古制作维护
Copyright@ 2000-2001 All rights reserved