我使用STM32F407 + DP83848IVVX 做一个网络通讯的板卡,使用Cube软件生成的配置程序,理论上软件是没有问题的。配置完成后,多次出现无法ping通的情况,重复上电或拔插网线均无效;过一段时间再次上电测试又恢复正常,可以ping。
我在正常和异常情况下分别读取DP83848寄存器的值,发PHYSTS寄存器的值一直在0x4715和0x0715之间变化,无论是否能ping通,查阅资料该位是MDIX_mode。又读取PHYCR的寄存器值,发现无论是否ping通,该寄存器始终为0x8021,即MDIX_EN始终为1。
硬件口的电压我按之前社区提供的解决方案打了,VCC为3.3V,PFB为1.8V左右,BIAS为1.2V左右,都正常
目前一筹莫展,想请问这样的问题有没有什么解决的思路?
Kailyn Chen:
有时候能ping通,有时候不行,看下是不是bad SSD (Start of Stream Delimiter)发生。参考datashet中5.5.1.2.12 Bad SSD Detection
A Bad Start of Stream Delimiter (Bad SSD) is any transition from consecutive idle code-groups to non-idle
code-groups which is not prefixed by the code-group pair /J/K.
If this condition is detected, the DP83640 will assert RX_ER and present RXD[3:0] = 1110 to the MII for
the cycles that correspond to received 5B code-groups until at least two IDLE code-groups are detected.
In addition, the False Carrier Sense Counter register (FCSCR) will be incremented by one.
Once at least two IDLE code-groups are detected, RX_ER and CRS become deasserted.
user5465333:
回复 Kailyn Chen:
根据手册,我用示波器测量了RX_ER 脚上的电平。上电后有一个100ms左右的高电平,随后就保持低电平,手册上说
RMII RECEIVE ERROR: Asserted high synchronously to X1 whenever an invalid symbol isdetected, and CRS_DV is asserted in 100 Mb/s mode.
这应该表明不是bad SSD吧,今天又发现偶尔有读取DP83848寄存器全为0XFF的情况,是否基本可以确认是硬件的问题?
Howard ROCK:
有可能是时钟问题,请问你的PHY时钟输入用的是什么时钟,我用STM32F407 + DP83640方案的时候就出现丢包情况,就是因为用的是STM32F407输出的MCO时钟,换了个比较好的TCXO 50MHz就没问题了,供参考。
user5308213:
请问后面有解决吗?出现了一样的问题,寄存器也是这样的情况。且始终无法ping通,不知道您是怎么解决的??