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.

【TI FAE 分享】TI DP83848 在 DM81XX 平台上的使用

Genius 12210 points
Other Parts Discussed in Thread: DP83848K, DP83848J, DP83848I

    TI的DM81xx系列高性能视频SOC, 以其强大的处理能力,被越来越多的客户使用。本文从硬件连接以及软件驱动调试等方面,详细描述了TI 高性价比10M/100M PHY(DP83848)在DM81XX平台上的使用。

  1.  RMII模式DM81XX-DP83848硬件连接框图:

  

  2. 硬件连接注意事项:

1)使用RMII时,DM81XX     RMII_REFCLK可以选择输出50MHz参考时钟给DP83848K,可以省掉晶振。如果采用MII接口,则需外部25Mhz晶振。

2)RX_DV上拉,确保PHY工作于RMII模式。

3)MDIO需要使用1.5K 上拉。

4)检查PHY地址配置(使用2.2K上拉或者下拉),请使用0x1及以上的地址,地址0x0对应于DP83848K有特殊含义,使芯片进入MII 隔离模式的。

5)TX/RX信号使用50 欧姆上拉。

  3. PCB Layout注意事项:

1)除了MDIO/MDCLK,其他信号线要作等长处理。

2)EMAC到PHY之间的走线距离要小于2 英寸。

  4. 软件驱动修改注意事项:

    DM81XX的PSP包对于PHY这块使用了通用的驱动,软件配置相对简单,建议在uboot下进行PHY的驱动硬件调试。请逐一检查下面几项(u-boot与kernel同样适用):

1)确认所选择的PIN脚的复用关系。

2)配置RMII_REFCLK_SRC寄存器,选择使用内部输出50MHz时钟,还是使用外部时钟50MHz,本例中该寄存器配置为0x4。

3)配置GMII_SEL寄存器,本例中配置0x5,使能Port0的RMII模式。

4)配置MAC_CONTROL寄存器为0x8020。

5)检查PHY_ID的配置。

5. 小贴士

  通过打印PHY的寄存器,以便确认其工作状态以及配置,以下是DP83848正常工作于RMII模式下的寄存器值,用于调试参考:

PHY_BMCR=0x3100

PHY_BMSR=0x786d

PHY_PHYIDR1=0x2000

PHY_PHYIDR2=0x5c90

PHY_ANAR=0x1e1

PHY_ANLPAR=0xc1e1

PHY_ANER=0xf

PHY_ANNPTR=0x2801

PHY_PHYSTS=0x15

PHY_LBR=0x21

PHY_PHYCTRL=0x8023

  • 专家,您好,

        请问“TX/RX信号使用50 欧姆上拉”是指 TXD[0,1], RXD[0.1]需要上拉50欧姆的电阻吗?

  • 你好,

      这里指的是 PHY与RJ45那边的RD+/-;TD+/-信号。

  • 你好,Louis,

        以下这个连接器是必须的吗?

    我目前遇到的问题如下:

    I'm using rmii interface connected to the phy dp83848j. And i have got the id of dp83848j(the value is 0x80017) . 

    After that ,  the Auto-Negotiation is Successful.  Transfer Mode : 100 Mbps Full Duplex.

    PHY link verified for Port 1. 

    But i can not ping the board from PC. 

    I'm using static IP .

    lwipIfPort1.ipAddr = 192<<24 |168<<16 | 1<<8 | 200; 
    lwipIfPort1.netMask = 255<<24 |255<<16 | 255<<8 | 0; 
    lwipIfPort1.gwAddr = 192<<24 |168<<16 | 1<<8 | 1;

    lwipIfPort1.ipMode = IPADDR_USE_STATIC;

    when i set(CONTROL_GMII_SEL = 0xC5;     // RMII1 clock sourced from pin, use RMII mode),

    I can test pad RXD_1, RXD_0 have 50MHz rate data infor.

    The value of DP83848J's registers is as following:

    i=0x0, data=0x3100 
    i=0x1, data=0x786d 
    i=0x2, data=0x2000 
    i=0x3, data=0x5c90 
    i=0x4, data=0x1e1 
    i=0x5, data=0xc5e1 
    i=0x6, data=0xd 
    i=0x7, data=0x2801 
    extended i=0x10, data=0x6e15 
    extended i=0x11, data=0x0 
    extended i=0x12, data=0x0 
    extended i=0x13, data=0x0 
    extended i=0x14, data=0x0 
    extended i=0x15, data=0x0 
    extended i=0x16, data=0x100 
    extended i=0x17, data=0x21 
    extended i=0x18, data=0x0 
    extended i=0x19, data=0x8001 
    extended i=0x1a, data=0x904 
    extended i=0x1b, data=0x0 
    extended i=0x1c, data=0x0 
    extended i=0x1d, data=0x6011

    I found that the value of the phy's register PHYSTS (addr:0x10) was 2e15 sometimes. That seems that AUTO-MDIX is not stable.But I can not ping the both case either.

    烦请帮忙解决下这个问题。

  • 我们用DM6467和DP83848I通信,配置成10M模式 ,就可以 通信,100M的就通信不了。网上还有其他人问DP83848 100M不通的问题,但不一定是跟DM系列的芯片一起使用。请问从哪里入手检查

  • 我用DP83848 做网络通讯,一开始10M/100M都能通,但有一次焊装了一批新板子,100M不通,只能跑10M,一开始认为是这批DP83848有问题,换了几个批次都不行,然后又重做PCB,还是不行,后来找了快老板子做芯片交叉测试,发现新的芯片都不能跑100M,难道是芯片的问题,都换了好几个批次的DP83848了,还是不行,难道真的是现在的芯片跑不了100M?(能跑100M是一年半前购买的芯片).

  • 请教您一下,开发板带着网线上电,读取的寄存器地址PHY_BMCR=0x1100,而不带网线就是0x3100,这是什么原因?不晓得Loopback这位是如何改变的。

  • MII接口初始化完成后打印寄存器的值应该是多少呢?谢谢

  • 自问自答,今天ping通了。dp83848+MII+stm32f429

    PHY_BCR = 1000

    PHY_BSR = 786d

    PHY_PHYIDR1 = 2000

    PHY_PHYIDR2 = 5c90

    PHY_ANAR = 1e1

    PHY_ANLPAR = 4de1

    PHY_ANER = 7

    PHY_ANNPTR = 2801

    PHY_PHYSTS = 615

    PHY_RECR = 0

    PHY_PCSR = 100

    PHY_RBR = 1

    PYH_LEDCR = 0

    PYH_PHYCR = 21