大家好!
最近将原子哥的基于ucosii的网络例子程序移植到自己的板子上。我的板子上用的是DP83848,网络初始化有时能通过,有时通不过,真的很头疼。
单步调试了一下,发现初始化通不过时候,是卡在HAL_ETH_Init()函数的290行,如下述,查看了下DP83848的datasheet,问题确定在链路没有建立上。这是怎么回事呢?麻烦大家提供一些思路吧。先谢谢啦!!!
do
{
HAL_ETH_ReadPHYRegister(heth, PHY_BSR, &phyreg);
/* Check for the Timeout */
if((HAL_GetTick() - tickstart ) > LINKED_STATE_TIMEOUT_VALUE)
{
/* In case of write timeout */
err = ETH_ERROR;
/* Config MAC and DMA */
ETH_MACDMAConfig(heth, err);
heth->State= HAL_ETH_STATE_READY;
/* Process Unlocked */
__HAL_UNLOCK(heth);
return HAL_TIMEOUT;
}
} while (((phyreg & PHY_LINKED_STATUS) != PHY_LINKED_STATUS));
一周热门 更多>