我在自己 做驱动LAN8720A的时候发现一个很奇怪的问题:就是在对PHY芯片读取当前自动协商状态时候,老是出现一个小bug。
就是当我读取PHY芯片中的Basic Status Register,读取当前连接状态值时,本来是通过网线将开发板和交换机连接起来,但是读出来的状态老是会出现link is down,然后造成配置错误,无法通信。
有的时候,有非常快,我用串口打印输出相关信息:
正常的时候打印输出的信息如下所示:
GPIO init...
UART1 init...
ETH : Begin Delay
ETH : End Delay
ETH:Soft reset DMA
ETH:Reset PHY Chip
ETH : PHY auto-negotiation PHY_SR = 0x1058
ETH : ETH_MODE_FULLDUPLEX
ETH : ETH_SPEED_100M
ETH:Init ETH
ETH:Enable DMA Interrupt
ETH:Init DMA TxDescList
ETH:Init DMA RxDescList
ETH:Start ETH
Eth init...
如果启动无法正常的时候,就是在启动时判断Link is Down的时候,详细打印信息见下:
GPIO init...
UART1 init...
ETH : Begin Delay
ETH : End Delay
ETH:Soft reset DMA
ETH:Reset PHY Chip
ETH : Time out Linked Status
然后就一直卡在这里了,不知道是不是焊接虚焊问题。
另外还有一个问题,因为印制板上使用的RMII接口对PHY芯片进行通讯,但是我看原子哥这里在PHY芯片使用的是25MHz的外部晶振进行控制,如果按照数据手册来说,RMII接口下,PHY芯片的外部晶振不是需要连接50MHz的晶振么?原来我用另外MCU+DP83848的时候,也是使用RMII接口,PHY芯片是必须使用50MHz的外部晶振,如果用25MHz的话就会出现问题。
原子哥,是我理解有问题么?求教~~~急~~~
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>