程序卡在ETH_MACDMA_Config()里面,经过调试发现EthInitStatus = ETH_Init(Ð_InitStructure, DP83848_PHY_ADDRESS);这条语句执行完后的EthInitStatus = 0;说明没有初始化成功。继续调试进入ETH_Init(Ð_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,说明自动协商没有成功。
初步诊断为连接问题,检查硬件连接暂时没有发现问题。希望高手能指导一二,万分感谢!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>