STM32的ETH模块初始化while(ETH_GetSoftwareResetStatus()==SET) 陷入死循环
因为实际项目需要,所以使用了STM32F407芯片的ETH功能,在调试版上能够很顺利的就运行项目,但是将程序挂载至测试板上面,程序跑不起来,最开始以为是单片机芯片坏了,将部分代码屏蔽以后,发现程序是可以运行的,Debug了一下,发现程序死在了 while(ETH_GetSoftwareResetStatus()==SET)
这一环,最开始是以为 PHY 芯片虚焊,重新处理了几遍后,发现还是有问题,用示波器打了一下晶振,晶振都是起振了的,没有问题,然后换了一颗 PHY 芯片,发现还是有问题,Debug 还是卡死在 while(ETH_GetSoftwareResetStatus()==SET)
这一环,在网上查了查相关资料,说的是 PHY 芯片存在虚焊,找了半天原因,发现没问题,然后把问题定位在单片机上,用示波器测试了时钟和信号,发现没有问题,最后无意中发现板子跑起来了,ping 了一下,ping 不通,复位了一下板子,程序又挂了,再次用示波器碰了碰 STM32 芯片的 ETH 时钟引脚,程序有跑起来了,最终定位 STM32 芯片 ETH 的时钟引脚虚焊,重新处理了一下,就 OK 啦。
学习分享,一起成长!以上为小编的学习经验分享,若存在不当之处,请批评指正!