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();/*通过串口,将DM9000中的寄存器打印出来,显示在超级终端上。此函数根据自己
的处理器进行修改,功能仅仅是读DM9000寄存器dm9000_reg_read(),再通过串口打印出来而已*/
}
函数写好,保存文件,连接硬件,连接网线到电脑上或局域网上,运行结果如下图所示:
图4 显示寄存器值
这里首先检查,各个控制寄存器是否是自己写进去的值,在检查状态寄存器是否正确,其中主要要
看NSR寄存器的bit[6]是否为“1”,该位表示是否连接成功。本例中NSR的值为40H,括号里的数为对应
的十进制数。
下面我们将主函数改进一下,增加个中断接收函数,查看是否能接收到数据。
void main(void)
{
^^^^^^^
}
}
图7 主机MAC地址
至此,关于DM9000的调试过程就完成了。之后我还调试了UDP通讯、TCP通讯等,主要是关于协议的
处理了,这里就不介绍了。有兴趣的朋友可以参看《TCP/IP协议》第一卷,将会有很大帮助。希望这些
调试过程能为读者或多或少的提供些有用的信息,也欢迎大家和我一起讨论。
全文不完整,字数超出范围,全文见下边链接:
http://www.cnblogs.com/xilentz/archive/2010/07/12/1775611.html
文章评论(0条评论)
登录后参与讨论