您的位置 首页 数字

单片机驱动DM9000网卡芯片

4、验证初始化中的各个函数。下面我们来看一下,上面所写的初始化函数是否可用。以上我们写好了三个函数,分别为DM9000_init(),sendpacket

4、验证初始化中的各个函数。

下面咱们来看一下,上面所写的初始化函数是否可用。以上咱们写好了三个函数,分别为

DM9000_init(),sendpacket()和receivepacket(),保存并命名为dm9000.c。已然咱们要进行调试,当

然要有成果输出,依据自己的处理器的状况写一个串口程序,这些函数是学某个单片机的根底,这儿不

做具体介绍,用到是时分会在函数里注释一下。

接下来咱们来写个主函数,新建C文件,命名为mian.c,填写如下函数:

void main(void)

{

unsigned int i;

unsigned char c;

uart0_init();//初始化串口,调试时用到

DM9000_init();//初始化网卡

print_regs();

}

函数写好,保存文件,衔接硬件,衔接网线到电脑上或局域网上,运转成果如下图所示:

图4 显现寄存器值

这儿首要检查,各个操控寄存器是否是自己写进去的值,在检查状况寄存器是否正确,其间首要要

看NSR寄存器的bit[6]是否为“1”,该位表明是否衔接成功。本例中NSR的值为40H,括号里的数为对应

的十进制数。

下面咱们将主函数改善一下,添加个中止接纳函数,检查是否能接纳到数据。

void main(void)

{

unsigned int i;

unsigned char c;

uart0_init();//初始化串口,调试时用到

DM9000_init();//初始化网卡

sendpacket(60);

while(1);//等候中止

}

void int_issue(void) //中止处理函数,需求依据自己的处理器进行设置

{

unsigned int i;

i = receivepacket(Buffer);//将数据读取到Buffer中。

int_again :

if(i == 0)

{

return;

}

else

{

print_buffer();//将接纳到的一切数据打印出来

while(1);//中止在这儿等候调查,留意:实践使用中是不允许中止在中止中的。

}

i = receivepacket(Buffer);

if(i != 0)

{

goto int_again;

}

}

编译调试,运转成果如下:

图5 接纳数据包中的数据

这是一个ARP应对包,包含了我电脑上的MAC地址和局域网内的IP地址。横竖我也不是啥重要人物,

这儿就不保密了,呵呵。

假如一些顺畅,到这儿对DM9000网卡芯片的初始化作业就完成了。假如出现问题,首要要

检查寄存器的值是否正确。能够将DM9000中的寄存器打印出来,检查到底是哪里的问题。假如打印出的

值很紊乱,在确保串口程序无误的前提下,检查硬件衔接,以及寄存器读写时序是否正确,重复调试几

次查找原因。

三、ARP协议的完成

1、ARP协议原理简述

ARP协议(Address Resolution Protocol 地址解析协议),在局域网中,网络中实践传输的是“

帧”,帧里边有方针主机的MAC地址。在以太网中,一个留意要和另一个主机进行直接通讯,必需求知

道方针主机的MAC地址。这个MAC地址便是标识咱们的网卡芯片唯一性的地址。但这个方针MAC地址是如

何取得的呢?这就用到了咱们这儿讲到的地址解析协议。一切“地址解析”,便是主机在发送帧前将目

标IP地址转换成MAC地址的进程。ARP协议的基本功能便是经过方针设备的IP地址,查询方针设备的MAC

地址,以确保通讯的顺畅进行。所以在第一次通讯前,咱们知道方针机的IP地址,想要获悉方针机的

MAC地址,就要发送ARP报文(即ARP数据包)。它的传输进程简略的说便是:我知道方针机的IP地址,

那么我就向网络中一切的机器发送一个ARP恳求,恳求中有方针机的IP地址,恳求的意思是方针机要是

收到了此恳求,就把你的MAC地址告诉我。假如方针机不存在,那么此恳求天然不会有人回应。若方针

机接纳到了此恳求,它就会发送一个ARP应对,这个应对是清晰发给恳求者的,应对中有MAC地址。我接

到了这个应对,我就知道了方针机的MAC地址,就能够进行今后的通讯了。由于每次通讯都要用到MAC地

址。

ARP报文被封装在以太网帧头部中传输,如图为ARP恳求报文的头部格局。

图6 用于以太网的ARP恳求或应对分组格局

留意,以太网的传输存储是“大端格局”,即先发送高字节后发送低字节。例如,两个字节的数据

,先发送高8位后发送低8位。所以接纳数据的时分要留意存储次序。

整个报文分红两部分,以太网首部和ARP恳求/应对。下面挑要点叙述。

“以太网意图地址”字段:若是发送ARP恳求,应填写播送类型的MAC地址FF-FF-FF-FF-FF-FF,意思是

让网络上的一切机器接纳到;

“帧类型”字段:填写08-06表明次报文是ARP协议;

“硬件类型”字段:填写00-01表明以太网地址,即MAC地址;

“协议类型”字段:填写08-00表明IP,即经过IP地址查询MAC地址;

“硬件地址长度”字段:MAC地址长度为6(以字节为单位);

“协议地址长度”字段:IP地址长度为4(以字节为单位);

“操作类型”字段:ARP数据包类型,0表明ARP恳求,1表明ARP应对;

“意图以太网地址”字段:若是发送ARP恳求,这儿是需求方针机填充的。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/zhishi/shuzi/260565.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部