<<返回上一页

网络初始化配置


关键词:ping通W5500 W5500  WIZnet  W5500EVB  W5500寄存器


W5500的特点是用硬件逻辑实现了网络传输层及其以下各层的协议,其中就包括ICMP协议,所以如果想让配备W5500EVB能响应Ping,只需配置几个W5500的寄存器即可,如同配置电脑网卡的IP地址一样简单。

先简单看一下W5500几个常用的寄存器

了解了W5500的这些寄存器之后,我们来看看如何把MAC地址等所必需的网络参数写入W5500。由于W5500和单片机的接口是SPI,因此W5500和单片机之间的数据交互都是通过SPI实现。

主循环代码如下:
void main()
{
	uint8 mac[6]={0x00,0x08,0xdc,0x01,0x02,0x03};	/*定义Mac变量*/
	uint8 lip[4]={192,168,10,10};					/*定义lP变量*/
	uint8 sub[4]={255,255,255,0};					/*定义subnet变量*/
	uint8 gw[4]={192,168,10,1};						/*定义gateway变量*/
	uint8ip[4];
	RCC_Configuration(); 							/* 配置单片机系统时钟*/
	GPIO_Configuration();							/* 配置GPIO*/
	NVIC_Configuration();							/* 配置嵌套中断向量*/
	Systick_Init(72);								/* 初始化Systick工作时钟*/
	USART1_Init(); 									/*初始化串口通信:115200@8-n-1*/
	at24c16_init();									/*初始化eeprom*/
	printf("W5500 EVB initialization over.\r\n");
	Reset_W5500();									/*硬重启W5500*/
	WIZ_SPI_Init();									/*初始化SPI接口*/
	printf("W5500 initialized!\r\n");  
	setSHAR(mac);									/*配置Mac地址*/
	setSUBR(sub);									/*配置子网掩码*/
	setGAR(gw);										/*配置默认网关*/
	setSIPR(lip);									/*配置IP地址*/
	//Init. TX & RX Memory size of w5500
	sysinit(txsize, rxsize); 						/*初始化8个socket收发缓存区*/
	setRTR(2000);									/*设置发送超时时间值*/
	setRCR(3);										/*设置最大重新发送次数*/
	getSIPR (ip);
	printf("IP : %d.%d.%d.%d\r\n", ip[0],ip[1],ip[2],ip[3]);
	getSUBR(ip);
	printf("SN : %d.%d.%d.%d\r\n", ip[0],ip[1],ip[2],ip[3]);
	getGAR(ip);
	printf("GW : %d.%d.%d.%d\r\n", ip[0],ip[1],ip[2],ip[3]);
	printf("Network is ready.\r\n");
	
	while(1)
	{
	//可以在电脑上Ping我啦
	}
}
Ping的测试步骤如下
  1. 对代码进行编译,生成Binary或Hex文件。
  2. 将程序烧录到W5500EVB中。
  3. 连接好网线,按下W5500EVB的复位键,程序运行。
  4. 打开电脑上的cmd.exe开始ping 192.168.10.10。图1是第一次Ping的结果。

图1:我的第一次Ping

如图1所示,192.168.10.10并没有回复,下面让我们看一下原因。首先排除硬件连接等问题,之后我们看一下那些网络参数是否确实写到了W5500的寄存器里面。 之前在set_network()函数中已经读取W5500那几个寄存器的值,并通过串口打印了出来,输出结果如图2。


图2:读取W5500寄存器串口输出结果

串口终端显示单片机的IP地址是192.168.10.10,与我们写入的地址相同,由此可以排除单片机硬件的问题。接下来再排查电脑的网卡配置,我们是把W5500EVB和电脑 的网卡直接用网线连在一起的,中间没有经过任何交换机,所以如果电脑的IP地址和W5500的IP地址不在同一个内网网段里面,也是不能Ping通的。至于是不是同一网段, 可以简单地看一下IP地址的前三个字节,如果一样,那就基本上说明是一个网段的。有关这方面的知识,可以参考IP地址的定义。如果手头有网络交换机或路由器,可以把W5500EVB 和电脑连在同一个交换机或路由器上进行调试,具体调试方法与上述一致。

打开电脑的网络属性,发现原来电脑的IP地址是192.168.11.2,与W5500EVB地址192.168.10.10不在同一网段。这时我们将电脑IP地址改成192.168.10.2,把默认网关改成192.168.10.1, 点击确定。配置信息如图3所示。


图3:电脑IP地址信息

然后再次Ping 192.168.10.10,终于收到来自W5500EVB的回复。结果如图4所示。通过这个程序,我们成功地配置了W5500,使其接入网络。并通过电脑成功地Ping通了W5500EVB,为我们下一步进行数据通信打下基础。


图4:第二次Ping

最后,在检查网络连接过程中,还可能出现的几个问题,这里总结一下。Ping后返回信息如下:



例程下载:【Network Install】
编译环境:keil V5.11
硬件要求:W5500EVB