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.

335x网口问题咨询

Other Parts Discussed in Thread: TMDSSK3358

请问3359的千兆网在接百兆路由器和千兆路由器之间切换时,接百兆路由器能很快的发出DHCP的Disciver包,然后切换成千兆路由器时必须有个较长的延时之后才能发Discover包,这可能是什么原因

  • 请贴出使用的sdk版本以及软件部分的相关配置,并且详细描述一下是如何切换的。
  • 请问用的是自己板子还是TI开发板?延时大概是多少?log信息是什么?
  • TI的工程师你们好,板子是TI官方的TMDSSK3358(实际上CPU是3359),同样的代码我也在创龙的TL3359板子上跑过,现象都完全一致的,跑的是纯裸机程序,代码如下:
    switch(MDIORegs->MDIO_LINK & 0x03)
    {
    case 0:
    //LED2 = 0;
    break;
    case 1:
    //LED2 = 1;
    while((MAC_MII_Manage_Read(AR8031_ID,1) & 0x20) != 0x20);//等待自动协商完成
    PHY_Speed_Status = MAC_MII_Manage_Read(AR8031_ID,0x11); //判断当前网速
    //while((MAC_MII_Manage_Read(KSZ9031_ID,1) & 0x20) != 0x20);//等待自动协商完成
    //PHY_Speed_Status = MAC_MII_Manage_Read(KSZ9031_ID,0xF); //判断当前网速
    switch(PHY_Speed_Status >> 14)//对应AR8031
    //switch(PHY_Speed_Status >> 14)//对应KSZ9031
    {
    case 1://100M模式
    LED3 = 1;
    //LED4 = 0;
    CPSW_SL1_Regs->MACCTRL.bit.GIG = EtherNet_Speed_100M;
    break;
    case 2://1000M模式
    LED3 = 0;
    CPSW_SL1_Regs->MACCTRL.bit.GIG = EtherNet_Speed_1000M;
    Delay(500000);
    break;
    case 3://保留
    break;
    }
    LED2 = ~LED2;
    DHCP_Discover();
    break;
    }
    以上代码放在了MDIO的PHY管理的Link UP中断里面,或者也可以称为网口的杂项中断延时部分就是那个500000个单位的Delay,这个值具体会延迟多久我不知道怎么计算,因为还没有把系统的频率搞清楚。但这个延迟值我试过好几组,目前这个值是最小值,再小点的话,发送就会出现问题,直接就不能发出数据了。切换成100M网速是随便切换,切换成1000M网速就必须得有这个延迟,不知道是什么原因。
  • 以上不管是100M还是1000M网速,切换成功后,均能发出DHCP的Discover数据包,然后路由器会回复一个offer包,说明网口发送无问题。