DM9000_init(),sendpacket()和receivepacket(),保存并命名为dm9000.c。已然咱们要进行调试,当
然要有成果输出,依据自己的处理器的状况写一个串口程序,这些函数是学某个单片机的根底,这儿不
做具体介绍,用到是时分会在函数里注释一下。
void main(void)
{
}
图4 显现寄存器值
看NSR寄存器的bit[6]是否为“1”,该位表明是否衔接成功。本例中NSR的值为40H,括号里的数为对应
的十进制数。
void main(void)
{
}
void int_issue(void) //中止处理函数,需求依据自己的处理器进行设置
{
int_again :
}
图5 接纳数据包中的数据
这儿就不保密了,呵呵。
检查寄存器的值是否正确。能够将DM9000中的寄存器打印出来,检查到底是哪里的问题。假如打印出的
值很紊乱,在确保串口程序无误的前提下,检查硬件衔接,以及寄存器读写时序是否正确,重复调试几
次查找原因。
帧”,帧里边有方针主机的MAC地址。在以太网中,一个留意要和另一个主机进行直接通讯,必需求知
道方针主机的MAC地址。这个MAC地址便是标识咱们的网卡芯片唯一性的地址。但这个方针MAC地址是如
何取得的呢?这就用到了咱们这儿讲到的地址解析协议。一切“地址解析”,便是主机在发送帧前将目
标IP地址转换成MAC地址的进程。ARP协议的基本功能便是经过方针设备的IP地址,查询方针设备的MAC
地址,以确保通讯的顺畅进行。所以在第一次通讯前,咱们知道方针机的IP地址,想要获悉方针机的
MAC地址,就要发送ARP报文(即ARP数据包)。它的传输进程简略的说便是:我知道方针机的IP地址,
那么我就向网络中一切的机器发送一个ARP恳求,恳求中有方针机的IP地址,恳求的意思是方针机要是
收到了此恳求,就把你的MAC地址告诉我。假如方针机不存在,那么此恳求天然不会有人回应。若方针
机接纳到了此恳求,它就会发送一个ARP应对,这个应对是清晰发给恳求者的,应对中有MAC地址。我接
到了这个应对,我就知道了方针机的MAC地址,就能够进行今后的通讯了。由于每次通讯都要用到MAC地
址。
图6 用于以太网的ARP恳求或应对分组格局
,先发送高8位后发送低8位。所以接纳数据的时分要留意存储次序。
“以太网意图地址”字段:若是发送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恳求,这儿是需求方针机填充的。