Other Parts Discussed in Thread:TMDSSK3358
请问3359的千兆网在接百兆路由器和千兆路由器之间切换时,接百兆路由器能很快的发出DHCP的Disciver包,然后切换成千兆路由器时必须有个较长的延时之后才能发Discover包,这可能是什么原因
Nancy Wang:
请贴出使用的sdk版本以及软件部分的相关配置,并且详细描述一下是如何切换的。
,
Shine:
请问用的是自己板子还是TI开发板?延时大概是多少?log信息是什么?
,
user18914063:
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管理的LinkUP中断里面,或者也可以称为网口的杂项中断延时部分就是那个500000个单位的Delay,这个值具体会延迟多久我不知道怎么计算,因为还没有把系统的频率搞清楚。但这个延迟值我试过好几组,目前这个值是最小值,再小点的话,发送就会出现问题,直接就不能发出数据了。切换成100M网速是随便切换,切换成1000M网速就必须得有这个延迟,不知道是什么原因。
,
user18914063:
以上不管是100M还是1000M网速,切换成功后,均能发出DHCP的Discover数据包,然后路由器会回复一个offer包,说明网口发送无问题。