最近在调GD32F307RCT6单片机的以太网功能模块,遇到下列问题无法解决: 1. 如图1和图2所示,以太网初始化过程有一个步骤是要等到ENET_DMA_BCTL寄存器的SWR位由硬件自动清零。我使用的是:\GD32F30x_Demo_Suites_V2.1.0\GD32307C_EVAL_Demo_Suites\Projects\22_ENET\Projects\Raw_tcpudp这个SDK包里面的官方例程,但代码跑起来后SWR位一直不能清零(如下图3所示),然后超时返回之后就会卡死在一个while循环里无法往下执行了。 2.在图3处可以使用ENET_DMA_BCTL &= ~ENET_DMA_BCTL_SWR;进行手动清零,但这样虽然以太网初始化流程可以走完,但后续跟PHY模块通信时不能成功。
这个问题已经困扰我三天了,请问有没有哪位大神也遇到过同样的问题已经解决了的?
图1
图2
图3
|