新手入门
- 积分
- 5
- 金钱
- 5
- 注册时间
- 2019-9-5
- 在线时间
- 1 小时
|
1金钱
硬件:stm32f4探索板,LAB8720A
原子哥的网络通信实验例程
开发板接主机,网口灯亮,初始化可以通过
开发板接路由器,网口灯不亮,
程序执行如下:
main:
while(lwip_comm_init()!=0)
{
LCD_ShowString(30,110,200,16,16,"lwIP Init failed!");
delay_ms(1200);
LCD_Fill(30,110,230,110+16,WHITE);//清除显示
LCD_ShowString(30,110,200,16,16,"Retrying...");
}
一直死循环在这里,进去lwip_comm_init()
发现是 if(LAN8720_Init())return 2; 这里初始化LAN8720失败了,返回2
然后进 LAN8720_Init()
发现是 rval=ETH_MACDMA_Config(); 返回了 ETH_ERROR 失败
再进ETH_MACDMA_Config()
是rval=ETH_Init(Ð_InitStructure,LAN8720_PHY_ADDRESS); 返回了ETH_ERROR
进ETH_Init() 中下面这段
if(ETH_InitStruct->ETH_AutoNegotiation != ETH_AutoNegotiation_Disable)
{
/* We wait for linked status... */
do
{
timeout++;
} while (!(ETH_ReadPHYRegister(PHYAddress, PHY_BSR) & PHY_Linked_Status) && (timeout < PHY_READ_TO));
/* Return ERROR in case of timeout */
if(timeout == PHY_READ_TO)
{
return ETH_ERROR;
}
while 这里超时了。
这个问题大约应该是什么问题 ? 怎样解决 ?
|
|