DP83822HF: STM32H735+DP83822光模块通信,网络不通

Part Number: DP83822HF

我在使用STM32H735和DP83822进行UDP通信的开发时,遇到以下问题,希望能够帮忙解答,感谢。

1.在此之前我已经成功完成了电口的通信(通过软件寄存器配置RMII MAster模式)。

2.现在提供的图片为光口的电路图。基于步骤1的软件配置,我继续进行了如下操作:

(1)使能光纤模式(0x0A:bit14=1);

(2)禁止自动协商,强制100M全双工(0x00:bit12=0,bit13=1,bit8=1)。

但是插上光纤后无任何连接,且灯不亮。

3.请问硬件电路有什么致命错误吗?或者基于此硬件电路设计,软件还需要完成什么其他配置吗?

文末附上我读取的寄存器值,希望能帮忙进行分析,再次感谢。

image.png

DP83822_BMCR 0x00 0x2100
DP83822_BMSR 0x01 0x7849
DP83822_PHYI1R 0x02 0x2000
DP83822_PHYI2R 0x03 0xA240
DP83822_ANAR 0x04 0x01E1
DP83822_ANLPAR 0x05 0x0000
DP83822_ANER 0x06 0x0004
DP83822_ANNPTR 0x07 0x2001
DP83822_ANLNPTR 0x08 0x0000
DP83822_CR1 0x09 0x0020
DP83822_CR2 0x0a 0x4100
DP83822_CR3 0x0b 0x1000
DP83822_REGCR 0x0d 0x401F
DP83822_ADDAR 0x0e 0x4300
DP83822_FLDS 0x0f 0x0000
DP83822_PHYSTS 0x10 0x0004
DP83822_PHYSCR 0x11 0x0108
DP83822_MISR1 0x12 0x0000
DP83822_MISR2 0x13 0x0800
DP83822_FCSCR 0x14 0x0000
DP83822_RECR 0x15 0x0000
DP83822_BISCR 0x16 0x0100
DP83822_RCSR 0x17 0x0061
DP83822_LEDCR 0x18 0x0400
DP83822_PHYCR 0x19 0x8021
DP83822_10BTSCR 0x1a 0x0000
DP83822_BICSR1 0x1b 0x007D
DP83822_BICSR2 0x1c 0x05EE
DP83822_CDCR 0x1e 0x0002
DP83822_PHYRCR 0x1f 0x0000
  • 感谢您对TI产品的关注。
    我们正在核实您的问题,请等待我们的答复。

  • 是否有原因导致PHY无法自动启动至100Base-FX模式?这将节省固件资源。建议在引脚上配置MDI上拉(50欧姆上拉至AVDD)。更多调试信息请参阅SNLA477

  • Hi,Vivian:

    我已经跟硬件工程师沟通,后续将增加缺少的4个上拉电阻。在此期间我调试过程发现以下问题,希望您能帮忙解答:

    根据手册中8.4.4.2章节内容:

    The DP83822 also has the added feature of a signal detection pin for direct connection to an industry standard fiber transceiver. When enabling 100BASE-FX operation using the FX_EN bootstrap, AMDIX_EN bootstrap turns into SD_EN bootstrap. If 100BASE-FX operation is enabled by setting FX_EN to either bootstrap mode 2 or 3, SD_EN will enable signal detection pin, LED_1, when SD_EN is set to either bootstrap mode 3 or 4.

    请问我是否可以这样理解:

    FX_EN strap 是前提:只有通过硬件 strap 将 FX_EN 设为 1(即 COL 引脚为 mode 2 或 3),RX_ER引脚的 strap mode=3/4才会将AMDIX_EN 重新解释为 SD_EN。进一步LED_1 引脚被硬件配置为信号检测输入。

    由于我的电路默认FX_EN bootstrap=4,导致FX_EN 未使能,虽然RX_ER的strap mode=4,但仍然保持 AMDIX_EN,用于控制 Auto-MDIX,不会使能SD,而 LED_1 也不会成为信号检测引脚。虽然我后续通过软件修改寄存器使能FX_EN,但是对于SD_EN已经晚了?无法生效?(下文寄存器0x0462=0x4300 似乎也证实了这一点?bit2:0=000, LED0仍然为默认的三态)。

    1.请问以上我的理解和分析是否正确?所以我现在是否还能通过软件方式修改使能SD_EN,使LED1作为signal detection?该如何操作?

    2.我进一步实测发现,光纤连接时,SFP_LOS(连接至LED1)电平能够由1跳转至0. 以下为光纤连接时寄存器读取结果,我发现PHYSTS(0x10)的bit9也被置1了,解扰器锁定代表什么?我能理解为已经满足了建立链路的“物理层条件”(有数据流),但PHY 无法通过信号检测建立链路吗?

    以下为连接光纤时的寄存器读取结果:

    期待您的回复,感谢!

    DP83822_BMCR 0x00 0x2100
    DP83822_BMSR 0x01 0x7849
    DP83822_PHYI1R 0x02 0x2000
    DP83822_PHYI2R 0x03 0xA240
    DP83822_ANAR 0x04 0x01E1
    DP83822_ANLPAR 0x05 0x0000
    DP83822_ANER 0x06 0x0004
    DP83822_ANNPTR 0x07 0x2001
    DP83822_ANLNPTR 0x08 0x0000
    DP83822_CR1 0x09 0x0020
    DP83822_CR2 0x0A 0x4100
    DP83822_CR3 0x0B 0x1000
    DP83822_REGCR 0x0C 0x401F
    DP83822_ADDAR 0x0E 0x0000
    DP83822_FLDS 0x0F 0x0000
    DP83822_PHYSTS 0x10 0x0204
    DP83822_PHYSCR 0x11 0x0108
    DP83822_RCSR 0x17 0x0061
    DP83822_LEDCR 0x18 0x0400
    DP83822_PHYCR 0x19 0x8021
    DP83822_PHYRCR 0x1F 0x0000
    0x0462 0x4300
    0x0465 0xFF01
    0x0467 0x0FC3
    0x0468 0x0000
  • 在引导加载过程中,若未正确设置FX引导加载,则SD引导加载的配置将不完整。目前尚未发现可通过软件启用信号检测功能的设置。寄存器0x10[9]对您可能帮助不大,因为该位域指示的是TX而非FX功能。然而,这可能与MDI上缺乏PU(物理层单元)的情况叠加,导致PHY无法准确检测MDI信号。若当前设计仍在调整中,我建议在我们的评估板上验证该设备的FX功能。确认PHY能成功建立连接后,再对比评估该设计与您设计的差异。

  • Hi,Vivian:

    感谢您的建议,关于硬件,目前我只能在现有的板子上进行调试。且硬件工程师反馈:在设计时与贵司技术支持沟通过,电路是合理的,硬件不满足的模式是可以通过软件修改的,仍然希望我进行软件修改和调试。

    根据您提到的SNLA477,我参考进行调试时发现:当我禁用FEF检测(0x0040的bit5=1)时:

    插上光纤后能link OK(但是无法查找到mac地址且ping不通,板子和交换机的光口指示灯也一直是灭的);

    但是后续插拔光纤,link状态位始终不再变化;寄存器读取结果如下:

    禁止FEF检测后:寄存器 地址 光纤连接 光纤断开
    DP83822_BMSR 0x01 0x784D 0x784D
    DP83822_PHYSTS 0x10 0x0205 0x0A05

    请问这个FEF检测禁用后的现象说明了什么?能够定位我的问题所在吗?

    期待您的回复,感谢!

  • 客户能否提供此设计在哪里获得批准?为DP83822填充MDI PU电阻器非常重要,因为这是一个电流线驱动器。这是无法通过软件解决的。
    FEF禁用是一种情况,如果不再检测到PHY RD的稳定链路,PHY将在TD上发送断开链路命令,以允许链路伙伴断开链路。在FX的传统用例中,通常不建议禁用此功能。