AT32F407/437 在使用 EMAC 网口在初始化时,调用 emac_dma_software_reset_set();函数之后,程序会卡在 while(emac_dma_software_reset_get() == SET),应该怎样检查处理?
1. 程序会卡在 while(emac_dma_software_reset_get() == SET)的原因
当软件调用 emac_dma_software_reset_set();函数之后,控制器会复位所有的逻辑电路,在复位逻辑电
路时,需要有时钟提供,如果此时没有 PHY 提供的时钟,则会卡在此处。
2. 检查处理方法
对于 MII 模式,如果 TXCLK 和 RXCLK 没有时钟,则会卡住。
检查 TXCLK 和 RXCLK 是否正常:
先检查 TXCLK 和 RXCLK 的连线是否正确。
同时检查给 Ethernet PHY 提供的时钟是否正常,因为 TXCLK 和 RXCLK 是 Ehternet PHY 给 EMAC
的,如果给 Ethernet PHY 的时钟异常,则 TXCLK 和 RXCLK 也会异常。
对于 RMII 模式,如果 REF_CLK 没有时钟,则会卡住。
检查 REF_CLK 时钟是否异常:
先检查 REF_CLK 接线是否正确。
检查 REF_CLK 线上是否有时钟,同时检查给 Ethernet PHY 的时钟是否异常。
|