This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

使用DP83848某些时候不能ping通

Other Parts Discussed in Thread: DP83640

我使用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左右,都正常

目前一筹莫展,想请问这样的问题有没有什么解决的思路?

  • 有时候能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.
  • 根据手册,我用示波器测量了RX_ER 脚上的电平。上电后有一个100ms左右的高电平,随后就保持低电平,手册上说

    RMII RECEIVE ERROR: Asserted high synchronously to X1 whenever an invalid symbol is
    detected, and CRS_DV is asserted in 100 Mb/s mode.

    这应该表明不是bad SSD吧,今天又发现偶尔有读取DP83848寄存器全为0XFF的情况,是否基本可以确认是硬件的问题?

  • 有可能是时钟问题,请问你的PHY时钟输入用的是什么时钟,我用STM32F407 + DP83640方案的时候就出现丢包情况,就是因为用的是STM32F407输出的MCO时钟,换了个比较好的TCXO 50MHz就没问题了,供参考。
  • 请问后面有解决吗?出现了一样的问题,寄存器也是这样的情况。且始终无法ping通,不知道您是怎么解决的??