achild 发表于 2022-3-21 21:13:12

stm32h7的RMII通讯时钟出错,求教!

最近在调stm32h743的网口。
手上有一块原子的阿波罗开发板。在stm32cube上都调好了。ping通了。
把工程搞到自己的板子上。发现同样的配置,ping的时候大概率出错。
检查了半天。怀疑不一样的地方在于。自己的板子没有外置晶振。
我再原子的板子上试了一下。把晶振调成内部的。就也ping不通了。
这个是正常的现象吗,细节原因有没有懂的分析一下,有没有办法补救一下啊。

angler12 发表于 2022-3-21 21:18:44

1. 先看看PHY时钟 , 不晓得你是主控提供的还是PHY提供的, 多看看手册中关于strap引脚的配置; 2. 看看到主控的MAC_REF_CLK正常不, 3. 看看MDIO配置接口和RMII其他数据线是否OK

Himem 发表于 2022-3-22 06:16:39

本帖最后由 Himem 于 2022-3-22 06:21 编辑

网络时钟记得对频率稳定要求 ±50ppm,
协商速率改成10Mbps试试

achild 发表于 2022-3-22 10:04:35

angler12 发表于 2022-3-21 21:18
1. 先看看PHY时钟 , 不晓得你是主控提供的还是PHY提供的, 多看看手册中关于strap引脚的配置; 2. 看看到主控 ...
(引用自2楼)

phy的时钟是一个单独的25M晶振提供的。现在不太清楚为什么MCU的晶振选择会影响到RMII的通讯

achild 发表于 2022-3-22 11:13:56

用开发板调了一下分频系数。用内部时钟也可以通了。又试了一下自己的板子,一样的系数也不行。
发现一个奇怪的现象,自己的板子在debug的时候总是会在汇编指令bkpt停下。找了网上的说法,该配的都配了。头疼啊!

angler12 发表于 2022-3-22 13:51:02

achild 发表于 2022-3-22 10:04
phy的时钟是一个单独的25M晶振提供的。现在不太清楚为什么MCU的晶振选择会影响到RMII的通讯 ...
(引用自4楼)

那就看看PHY给主控的REF_CLK

achild 发表于 2022-3-22 15:25:34

Himem 发表于 2022-3-22 06:16
网络时钟记得对频率稳定要求 ±50ppm,
协商速率改成10Mbps试试
(引用自3楼)

自动协商调成了10Mbps之后,暂时是通了

矩阵时间 发表于 2022-3-22 15:38:36

25MHz,PHY 芯片那里要倍频到 50MHz,这个 50MHz 还要提供给 MCU

jiulong855@.163 发表于 2022-3-22 16:53:39

时钟频率问题,内部晶振时钟频率应该是16M,RMII速度为10M/100M,对应时钟为5M和50M,内部时钟分频没法获得这个频率的时钟

achild 发表于 2022-3-22 17:57:49

jiulong855@.163 发表于 2022-3-22 16:53
时钟频率问题,内部晶振时钟频率应该是16M,RMII速度为10M/100M,对应时钟为5M和50M,内部时钟分频没法获得 ...
(引用自9楼)

现在总结下来,感觉还是phy的这个25M时钟差点意思,原子的开发板,一样的配置是可以通100M的。

achild 发表于 2022-3-23 10:32:43

好奇怪啊,网口热插拔,ping不通了,查了一圈,在ethernetif.c里面有个ethernet_link_thread任务专门检查网口状态的,检查了一下,确实也能检测出网口状态,但就是热插拔之后ping不同。看了一圈,突然发现这个任务发现link_down的时候,调用了HAL_ETH_Stop_IT。而link_up的时候没有看到开中断。试着加了一下,然后就热插拔了。这个是stm32cube的bug吗。

achild 发表于 2022-3-23 10:37:46

mark一下,stm32cube里面没有留网络状态设置接口。只能手动在初始化里面添加写网卡寄存器的指令。

vvzhaodan 发表于 2022-3-23 11:46:58

这个问题我也踩了坑,发现MCU输出的晶振 容易丢包,最好老老实实用外部晶振,ping很正常
页: [1]
查看完整版本: stm32h7的RMII通讯时钟出错,求教!