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.

为什么dp83tc811r 的BMSR寄存器的值为0x0065?

疑问:为什么dp83tc811r 的BMSR寄存器的值为0x0065?

在什么情况下会导致该现象?

  • 现在能link上,为什么会出现不能传输数据的问题呢?
  • 您是使用自动协商了吗? 因为这个状态寄存器的bit3=0 ,但是bit 5=1 自动协商完成,所以二者矛盾。
    另外,您配置的是工作在什么模式,full duplex还是half duplex, 100Base TX还是10Base-T? 因为这里显示的不管什么模式,都没能够正常运行,所以没法传输数据。
  • 1、我没有对该PHY进行其它的配置,我仅操作了软件复位。

    2、你说的工作模式我也没进行设置,有可能是硬件进行设置的吗?

  • 可通过RX_D3的输出来判断是full duplex还是half duplex。

     RMII mode还是MII mode是通过配置寄存器xMII_CTRL 的bit 5 来选择是哪种模式。

    您目前是上电进行复位之后,只进行了软件复位。

    相应的寄存器都没有进行配置是吗?

  • 是的,我只进行了软件复位。其它寄存器都没有进行配置。
    RMII模式还是MII模式,我们是通过硬件进行选择的。我读出xMII_CTRL寄存器的bit5位,是MII模式。
  • 有做过自检BIST测试吗?先看下内部电路测试是否pass。 因为您的一些寄存器都没有进行配置,所以还是要一点点来分析问题出现在哪里,比如TDR寄存器bit 15 默认值是diable cable diagnostic,所以我们可以将其enable,看下不能通信的原因是否来自于cable。


    dp83tc811r 有一个诊断Tool,在datasheet上的8.3.3 Diagnostic Tool Kit也有介绍,在产品主页上也能下载到这个Tool以及应用手册,可以借助于它来看下是哪里的问题。
    www.ti.com/.../technicaldocuments
  • 我读取了一部分寄存器,你能帮我分析一下吗?
    网口不接线前的寄存器值
    BMCR = 00002100
    BMSR = 00000061
    PHYID1 = 00002000
    PHYID2 = 0000a253
    TDR_AUTO = 00002000
    INT_TEST = 0000010b
    INT_STAT1 = 00004000
    INT_STAT2 = 00004000
    FCSCR = 00000000
    RECR = 00000000
    BISTCR = 00000100
    xMII_CTRL = 00004041
    INT_STAT3 = 00000810
    BICTSR1 = 0000007d
    BICTSR2 = 000005ee
    TDR = 00000000
    PHYRCR = 00000000
    LSR = 000005e1
    TDRR = 00000000
    TDRLR1 = 00000000
    TDRLR2 = 00000000
    TDRPT = 00000000
    AUTO_PHY = 0000005a
    PWRM = 00000000
    SNR = 000000e5
    SQI = 00000000
    LD_CTRL = 00001020
    LDG_CTRL1 = 0000000a
    DLL_CTRL = 00000077
    ESDS = 00000000
    LED_CFG1 = 00002610
    xMII_IMP_CTRL = 00000410
    IO_CTRL1 = 00000000
    IO_CTRL2 = 00000001
    STRAP = 000003c0
    LED_CFG2 = 00000040
    PLR_CFG = 00000000
    MON_CFG1 = 00000002
    MON_CFG2 = 000000a2
    MON_CFG3 = 00007007
    MON_STAT1 = 00000002
    MON_STAT2 = 00001121
    PCS_CTRL1 = 00001078
    PCS_CTRL2 = 00000a05
    LPS_CTRL2 = 00000a00
    INTER_CFG = 00000001
    LPS_CTRL3 = 00000014
    JAB_CFG = 0000044c
    网口接线后的寄存器值
    BMCR = 00002100
    BMSR = 00000065
    PHYID1 = 00002000
    PHYID2 = 0000a253
    TDR_AUTO = 00002000
    INT_TEST = 0000010b
    INT_STAT1 = 00000000
    INT_STAT2 = 00004000
    FCSCR = 00000000
    RECR = 00000000
    BISTCR = 00000100
    xMII_CTRL = 00004041
    INT_STAT3 = 00000810
    BICTSR1 = 0000007d
    BICTSR2 = 000005ee
    TDR = 00000000
    PHYRCR = 00000000
    LSR = 000075ff
    TDRR = 00000000
    TDRLR1 = 00000000
    TDRLR2 = 00000000
    TDRPT = 00000000
    AUTO_PHY = 0000001a
    PWRM = 00000000
    SNR = 0000013c
    SQI = 0000034b
    LD_CTRL = 00001020
    LDG_CTRL1 = 0000000a
    DLL_CTRL = 00000077
    ESDS = 00000000
    LED_CFG1 = 00002610
    xMII_IMP_CTRL= 00000410
    IO_CTRL1 = 00000000
    IO_CTRL2 = 00000001
    STRAP = 000003c0
    LED_CFG2 = 00000040
    PLR_CFG = 00000000
    MON_CFG1 = 00000002
    MON_CFG2 = 000000a2
    MON_CFG3 = 00007007
    MON_STAT1 = 00000003
    MON_STAT2 = 00000121
    PCS_CTRL1 = 00001078
    PCS_CTRL2 = 00000a05
    LPS_CTRL2 = 00000a00
    INTER_CFG = 00000001
    LPS_CTRL3 = 00000014
    JAB_CFG = 0000044c
    我的疑问:
    INT_STAT1、INT_STAT2、INT_STAT3为什么中断状态寄存器有值?
    MON_STAT2、MON_STAT1这两个寄存器的值的意义。
    AUTO_PHY寄存器的值在接入网线时为何会改变?