OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 9164|回复: 6

Lan8720上电不插网线,一直重启,求助

[复制链接]

117

主题

598

帖子

1

精华

资深版主

Rank: 8Rank: 8

积分
1698
金钱
1698
注册时间
2012-5-10
在线时间
438 小时
发表于 2016-5-30 16:34:20 | 显示全部楼层 |阅读模式
10金钱
重启的表面原因是开启了看门狗,由于上电初始化网口的时候没插网线,程序卡在 文件:stm324x7_eth.c中的ETH_ReadPHYRegister()函数中的
  do
  {
    timeout++;
    tmpreg = ETH->MACMIIAR;
  } while ((tmpreg & ETH_MACMIIAR_MB) && (timeout < (uint32_t)PHY_READ_TO));
  
  应该可以通过修改超时时间,使看门狗不重启,但是感觉,不插网线就读不到寄存器不应该啊

最佳答案

查看完整内容[请看2#楼]

来结贴了,已发现原因: 1,确实是网线不插,初始化的时候stm32f4x7_eth文件里面会读取从lan8720读取一些状态,而都是有超时时间限制,所以,如果开了看门狗,几个超时加一起,看门狗就把程序重启了。(这个原因只是碰巧看门狗与到库文件里面的超时,把超时时间改短,或者直接去掉都是可以的,毕竟延时一下网线也不会自己插上) 2,下面程序中的Link_Up,我最开始是Link_Down,也就是原本的逻辑是网线没连接的时候初始化lwip,加 ...
如有技术问题,微信扫头像交流,STM32,JAVA,服务器
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

117

主题

598

帖子

1

精华

资深版主

Rank: 8Rank: 8

积分
1698
金钱
1698
注册时间
2012-5-10
在线时间
438 小时
 楼主| 发表于 2016-5-30 16:34:21 | 显示全部楼层
来结贴了,已发现原因:
1,确实是网线不插,初始化的时候stm32f4x7_eth文件里面会读取从lan8720读取一些状态,而都是有超时时间限制,所以,如果开了看门狗,几个超时加一起,看门狗就把程序重启了。(这个原因只是碰巧看门狗与到库文件里面的超时,把超时时间改短,或者直接去掉都是可以的,毕竟延时一下网线也不会自己插上)
2,下面程序中的Link_Up,我最开始是Link_Down,也就是原本的逻辑是网线没连接的时候初始化lwip,加载网卡,错误逻辑,现在改成插上网线再添加网卡,
当然这里只是初始化了lwip,如果网线没插的话。如果要热拔插,还需任务监测网线状态,随时的netif_set_up和netif_set_down lwip的网卡(主要原因)
[mw_shl_code=c,true]netif_set_default(&xnetif);
       
        if(Link_Up == GetGB_LinkState())
        {
                netif_set_up(&xnetif);
               
                #ifdef LWIP_DHCP
                        SetGB_DHCPState(DHCP_START);
                #endif
        }
        else
        {
                /*  When the netif link is down this function must be called.*/
                netif_set_down(&xnetif);
               
                #ifdef LWIP_DHCP
                        SetGB_DHCPState(DHCP_LINK_DOWN);
                #endif
        }
   
        /* Set the link callback function, this function is called on change of link status*/
        netif_set_link_callback(&xnetif, ETH_link_callback);[/mw_shl_code]
如有技术问题,微信扫头像交流,STM32,JAVA,服务器
回复

使用道具 举报

12

主题

84

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1887
金钱
1887
注册时间
2015-4-21
在线时间
102 小时
发表于 2016-5-30 16:54:00 | 显示全部楼层
原子的例程里面不插网线是无法初始化的
回复

使用道具 举报

117

主题

598

帖子

1

精华

资深版主

Rank: 8Rank: 8

积分
1698
金钱
1698
注册时间
2012-5-10
在线时间
438 小时
 楼主| 发表于 2016-5-30 16:55:44 | 显示全部楼层
weilong1370 发表于 2016-5-30 16:54
原子的例程里面不插网线是无法初始化的

那他估计也是卡在读取寄存器那里了吧,难道这个网络芯片就是这样的?
如有技术问题,微信扫头像交流,STM32,JAVA,服务器
回复

使用道具 举报

15

主题

53

帖子

0

精华

初级会员

Rank: 2

积分
162
金钱
162
注册时间
2015-11-16
在线时间
31 小时
发表于 2016-5-30 17:58:31 | 显示全部楼层
是因为添加网卡失败无法初始化
回复

使用道具 举报

117

主题

598

帖子

1

精华

资深版主

Rank: 8Rank: 8

积分
1698
金钱
1698
注册时间
2012-5-10
在线时间
438 小时
 楼主| 发表于 2016-5-31 08:42:05 | 显示全部楼层
顶一下,有人知道怎么解决么
如有技术问题,微信扫头像交流,STM32,JAVA,服务器
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165371
金钱
165371
注册时间
2010-12-1
在线时间
2110 小时
发表于 2016-6-1 21:52:37 | 显示全部楼层
xsx127 发表于 2016-5-31 15:47
来结贴了,已发现原因:
1,确实是网线不插,初始化的时候stm32f4x7_eth文件里面会读取从lan8720读取一些 ...

谢谢分享
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-2-25 05:13

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表