STM32F4+DP83848的问题

2019-07-20 17:24发布

程序卡在ETH_MACDMA_Config()里面,经过调试发现EthInitStatus = ETH_Init(&ETH_InitStructure, DP83848_PHY_ADDRESS);这条语句执行完后的EthInitStatus = 0;说明没有初始化成功。继续调试进入ETH_Init(&ETH_InitStructure, DP83848_PHY_ADDRESS);,发现:
   do
    {
      timeout++;
    } while (!((tmp=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;
    }

tmp = 0x7849,(tmp是自己定义的一个变量用于调试的),经过查询相关资料,正常BSR的值为0x786d,仔细对照BSR的各个位的定义,发现第二位LinkStatus = 0 ,这就表示连接link is down
同时第5位的Auto-Negotiate Complete = 0 ,这就表示auto-negotiate process not completed,说明自动协商没有成功。


初步诊断为连接问题,检查硬件连接暂时没有发现问题。希望高手能指导一二,万分感谢!

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。