板子是完全按照C6657LEVM板做的,只是PHY芯片选用的是88E1111,,PHY地址改为0010,。运行的程序是C6657的GE程序,SGMII的连接状态返回值一直是0x30。使用MDIO去读PHY芯片的寄存器值,返回的值全是0xFFFF。各位高手,帮忙看一下是否哪里没有配置到,不胜感激。
Thomas Yang1:
感觉是PHY芯片没有初始化好,在STK例子里有通过MDIO初始化PHY芯片的例子代码,可以参考下
liyue liu:
回复 Thomas Yang1:
非常感谢你 Thomas Yang1,现在的使用MDIO初始化PHY芯片的问题是这样的:我用MDIO向PHY芯片寄存器用PHYREG_write函数写值时,
PHYREG_write( pd->regId, PHYREG_CONTROL, phyAddr, PHYREG_CONTROL_RESET ); PHYREG_waitResultsAck( pd->regId, &i, &ack );
函数的ack可以返回1,tmp1是写入寄存器的值。配置其他寄存器都是一样,但是我配置完后
使用PHYREG_read读状态寄存器的时候
PHYREG_read( pd->regId, PHYREG_STATUS, pd->phyAddr ); PHYREG_waitResultsAck( pd->regId, &tmp1, &ack );
返回值ack始终为0,而且tmp1的值始终为0xffff。都其他寄存器也是一样返回0xFFFF.
我向PHY的控制寄存器的Reset写1,按理说PHY芯片会自动复位清0,可为什么写完后的返回值还是写入的值呢?
还有MDIO的ACTIVE寄存器始终为0。我采用的是88E1111自协商模式。
帮忙分析分析,谢谢
Thomas Yang1:
回复 liyue liu:
感觉PHY工作都不正常,查下PHY的时钟把,也可以把failure unit 和 pass unit 交叉验证下
user4471589:
回复 liyue liu:
你好,你这个正常了吗?我也画了个板子,也是用的88E1111,连接网线。PC端没反应,但是连接开发板PC端提示已连接。