热度 22
2012-8-14 16:47
2208 次阅读|
1 个评论
2011年12月,在调试某产品百兆交换芯片BCM53202M时,发现该芯片的百兆口可以正常进行数据交换,但是其MII接口无**INK,并且无法与CPU子板进行通信。 1 问题分析 本次一共焊接了四块某产品板,并且四块某产品板的百兆交换芯片MII接口都不通,初步可以排除不是焊接不良导致的,另外,BCM53202M的百兆交换口可以正常工作,说明 该部分电路的时钟、供电和复位工作正常。 因BCM53202M的MII接口外接了一片百兆PHY(LXT972),通过百兆PHY的网口,再与CPU子板的网口进行连接,为更快的定位问题,将CPU子板拔掉,然后将LXT972的网口接出来,连接到电脑A的网口上,发现能够正常LINK,然后用以太网抓包工具WildPackets.OmniPeek.v3.1.1,发送广播包,用示波器监测BCM53202M的MII口数据接收端,发现有波形产生,测试连接图如图1-1所示。 图1-1 BCM53202M测试连接图 将BCM53202M的网口连接到电脑A的网口上,然后用以太网抓包工具WildPackets.OmniPeek.v3.1.1,发送广播包,用示波器监测BCM53202M的MII口数据发送端,发现没有波形产生,测试连接图如图1-2所示。 图1-2 BCM53202M测试连接图 由以上现象可知,问题应该出现在LXT972的MII接口与BCM53202M的MII接口之间,仔细检查原理图,发现硬件对MII接口的配置也没什么问题,BCM53202M的MII接口有一个状态指示输出信号:MII_LINK,如果为低,则表示MII接口已经LINK上,如果为高,则表示MII接口没有LINK上,用示波器测量该信号,发现该信号为高,说明MII接口没有LINK上,即MII接口没有建立好链接,因此无法进行通信。 现在问题的关键是查明MII接口之间如何建立LINK,通过查阅BCM53202M的芯片手册,在第109页找到,该芯片通过MDC/MDIO管脚,可以对外接的PHY进行自动查询和访问,并且,外接的PHY必须有一个唯一的地址,其MII外接的PHY地址规定为18H, 另外两个GMII接口的PHY地址分别为19H和1AH. 用示波器测量BCM53202M的MDC和MDIO管脚,MDC和MDIO的命令格式如下: 分为读写两种命令格式,前面有32位前导码,固定为1,再跟两位开始命令,固定为01,然后为操作码,如为读操作,则为10,写操作则为01,后面为5为PHY地址。理解了该接口的命令格式,就可以通过示波器抓波形,从中读取我们所需要的信息。 用示波器将BCM53202M发送出来的PHY地址从命令格式中提取出来,发现其发出来的地址分别有18H,19A和1AH,但是LXT972的PHY地址只有1位,即可以设置成0或1。 通过查阅BCM53202M的手册,发现这个PHY地址也无法进行修改。 经过以上分析,大致可以判断是LXT972的PHY地址和BCM53202M内部要求的PHY地址不匹配造成的。 2 解决措施 需要重新找一个PHY地址为5位的以太网PHY芯片,在公司零件号目录中查询到同一序列的芯片还有LXT971,查阅该资料,并将其管脚信息和LXT972进行比较, 发现管脚兼容,只是PHY地址的管脚不一样,LXT971的PHY地址为5位,而LXT972的PHY地址为1位。 将单板上LXT972更换成LXT971,然后将LXT971的PHY地址通过上拉和下拉电阻设置成18H,再进行测试,发现已经可以正常进行通信,问题已得到解决。 3 经验总结 在系统设计过程中应该仔细研读芯片手册,特别是接口互联部分,应该多分析,两个芯片是否能完全匹配,避免留下隐患。 另外,在设计交换芯片的电路中,如果交换芯片的MII接口需要外接单独的PHY芯片,应该确认交换芯片对外部PHY是否有特殊的要求,例如PHY地址,接口电平等,如果有,则应该选择合适的PHY芯片,并将PHY地址设置正确,这样才能保证设计出来的电路没有问题。