打印

GD32F307RCT6,以太网初始化时不能完成软复位(SWR位一直为1)

[复制链接]
4656|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主

最近在调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


使用特权

评论回复
沙发
七毛钱| | 2021-9-2 16:26 | 只看该作者

以太网外部时钟设置的是多少,与系统时钟的设置是否有关

使用特权

评论回复
板凳
海滨消消| | 2021-9-2 16:27 | 只看该作者
你写的这个型号是不是有问题:GD32F307CBT6

使用特权

评论回复
地板
duo点| | 2021-9-2 16:28 | 只看该作者
没有你的板子,不能确定问题

使用特权

评论回复
5
ALMLX| | 2022-5-7 11:23 | 只看该作者
在F450上遇到了一样的问题,楼主最后怎么解决了吗?

使用特权

评论回复
6
wuhj126| | 2023-11-14 10:49 | 只看该作者
F427遇到同样问题,大佬说下最后咋调通PHY的,还有哪些坑呢?谢谢!
我把enet_deinit()中的rcu_periph_reset_disable(RCU_ENETRST)处理注释后,ENET_DMA_BCTL & ENET_DMA_BCTL_SWR成功清0,但继续初始化PHY,发现ENET_MAC_PHY_CTL又写不了值。
在enet_software_reset()重新调用rcu_periph_reset_disable(RCU_ENETRST),不管ENET_DMA_BCTL & ENET_DMA_BCTL_SWR为置位态,继续初始化PHY,ENET_MAC_PHY_CTL能写入值,但读写都没反应,PHY侧测不到MDC时钟。

使用特权

评论回复
7
zhldq| | 2023-12-1 16:27 | 只看该作者
wuhj126 发表于 2023-11-14 10:49
F427遇到同样问题,大佬说下最后咋调通PHY的,还有哪些坑呢?谢谢!
我把enet_deinit()中的rcu_periph_rese ...

我这边遇到的问题也是不复位,改了之后下面phy_config也是不通过。排查后发现是系统的RCU_SYSCFG时钟没开。

使用特权

评论回复
8
vitaminch| | 2024-6-14 15:54 | 只看该作者
遇到同样问题, 怎么解啊?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

278

主题

1445

帖子

2

粉丝