jf101 发表于 2023-10-10 12:00

AT32F407/437网口初始化卡在EMAC DMA软件复位问题

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 的时钟是否异常。

页: [1]
查看完整版本: AT32F407/437网口初始化卡在EMAC DMA软件复位问题