打印

香主,及各大侠:请教一个107以太网的问题

[复制链接]
3355|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lzm0117|  楼主 | 2009-9-25 11:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我在调试自己布的STM32F107电路板,以太网芯片用DP83848,采用RMII方式,采用FREERTOS,以太网协议采用uIP,以太网相关的操作独立一个任务执行,正常可以使用,各任务和谐相处。但如果上电的时候,如果没有插网线,初始化以太网需要很长时间,却返回失败,我的程序设定返回失败过一段时间又初始化,这样导致其他任务无法获取运行时间,导致系统假死机。

初始化如下:
………………
//Initialise the MAC
while( xEthInitialise() != pdPASS )
{
  vTaskDelay( uipINIT_WAIT );
}
………………………………

在xEthInitialise() 有调用

xReturn= ETH_Init(&xEthInit, PHY_ADDRESS); //配置以太网 ETHERNET
需要很长时间,而ETH_Init是库函数提供的,通过轮询PHY寄存器来判断,
在stm32_eth.h中有对轮询次数进行定义

/** @defgroup PHY_Read_write_Timeouts
  * @{
  */
#define PHY_READ_TO                     ((uint32_t)0x0004FFFF)
#define PHY_WRITE_TO                    ((uint32_t)0x0004FFFF)

但是PHY_READ_TO改小了,正常连接网线也无法成功初始化
请问能否,如何优化库函数ETH_Init()?谢谢!
沙发
lzm0117|  楼主 | 2009-9-26 08:45 | 只看该作者
谢谢netjob,可以在初始化以太网的时候,不管成功与否,都继续下面的程序,如果不成功,后面即使插上以太网也不能通信,也就是如果在途中接上网线,必须重启MCU了,

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

8

帖子

0

粉丝