目前我们使用w5500遇到一个问题。w5500设置的是静态IP,用网线连到路由器上,电脑也用网线连到路由器上,电脑是可以ping通W5500的。如果电脑用wifi连到路由器上就ping不通w5500.我们目前已经做了两版的样板。我们做的第一版的样板是偶尔用电脑wifi连接路由ping用网线连接的w5500不通,但断电重启又可以。但第二版就一直ping不通。但两个板子均使用电脑网线连接路由器来ping则都可以并且数据发送接受都没有问题。
解决办法:
初始化w5500时要将其内部寄存器初始化,即将模式寄存器的第7位置1
上述操作在程序中只需在w5500上电复位后添加 iinchip_init();
void bsp_eth_init(void)
{
HAL_GPIO_WritePin(W5500_RST_GPIO_Port, W5500_RST_Pin, GPIO_PIN_SET);
HAL_GPIO_WritePin(W5500_NSS_GPIO_Port, W5500_NSS_Pin, GPIO_PIN_SET);
/***** 硬重启W5500 *****/
Reset_W5500();
iinchip_init();
/***** W5500的IP信息初始化 *****/
//set_default_eth_param(); // 设置默认MAC、IP、GW、SUB、DNS
get_eth_config();
set_network(); // 配置初始化IP信息并打印,初始化8个Socket
}
iinchip_init();中执行的操作即是将模式寄存器的第7位置1。