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.
我们仿照EVM6657开发板自己做了一块板子,在调试网络通信时发现程序卡在循环读取SGMII_REGS->STATUS 这个地方了,读取此寄存器,返回值是0x30,表示网络自动协商没有完成,没有LINK UP,但是观察RJ45的LED灯,都是点亮的,通过MDIO读取PHY芯片的寄存器也都正常,观察MDIO的状态寄存器,也表征自动协商完成,并且已经ink up,为什么SGMII的状态寄存器一直不对呢?
对比了一下开发板的MDIO寄存器和PHY芯片的寄存器状态,是和我的板子一致的,只有SGMII的状态不一致,我自己定义了一组UDP协议的数据包,绕过死循环读取SGMII_REGS->STATUS这个地方,直接发送UDP数据包 ,开发板是可以正常发送数据包的,并且我的网络助手也抓到了UDP数据包,但是自己的板子发送并不成功,是不是表明我的SGMII数据通路不通?还有就是网络的状态是通过什么方式反应到SGMII的寄存器空间的,求大神指导。
求助,在线等回复。
SGMII link up状态表明了,SGMII 和PHY之间的状态,如果你想其表示网络端状态(PHY Fiber side),则需要配置PHY的寄存器来实现,一般我们不建议这样做。就你的问题而言:
1.你用的PHY是否与TI EVM板的一样?如果不一样,是否需要特别的配置?
2. TI芯片SGMII Serdes配置有没有按照你的板子实际情况更新?如果Serdes时钟是否和TI EVM一致 呢?
多谢你的积极回答,我的PHY芯片和TI EVM一致的,Serdes时钟也是 和EVM一致。
SGMII Serdes配置需要更新什么配置呢,差分电平的偏置还是 什么,这些配置和开发板不能保持一致吗?
观察了一下SGMII信号的眼图,抖动和电压偏置都是符合芯片要求的电气特性的,难道是时钟精度不够,或者是在硬件设计上Serdes有什么配置模式忽略了,没有和EVM一致?
请仔细按照TI的文档检查该接口有否按TI建议进行硬件设计:
http://www.ti.com/lit/an/sprabc1/sprabc1.pdf
http://www.ti.com/lit/an/sprabi2c/sprabi2c.pdf
PHY也有可以设置环回模式,建议你通过MDIO配置PHY外环(也就是通过RJ45进入的包,通过RJ45环回去),在该模式下,外面的PC或者仪器能否收到包呢?
如果不行,则是PHY的配置问题。如果可以,再建议做一个简单的RJ45环回头(网上有教程),插到RJ45上,内环。也就是DSP发出的包是否可以通过RJ45环回头环回到DSP?因为你已经做过SGMII环回是OK的,如果内环有问题则证明DSP到PHY之间的连接有问题。