本文主要是介绍RK3288 RGMII 连接百兆PHY DP83822,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
RGMII 通常用于连接千兆PHY, 使用125M时钟,但公司的板子使用RGMII连接百兆PHY DP83822 ,这里记录一下调试该PHY 芯片的过程。
电路图如下:
首先,修改设备树:
重新编译内核升级boot.img到板子,发现PHY的link指示灯亮,说明MAC和PHY之间的SMI接口通信正常,但怎么都ping不同局域网内IP, ifconfig 查看网卡数据流量信息,发现发送字节数一直很小,接收数据在增长。
尝试了使用一下几种方法分析
- 使用clk_summuy 查看MAC 时钟发现 都是25M HZ,没有问题
- 使用ethtool 查看接口信息和双工信息,显示是MII 接口怀疑该工具有问题与驱动不匹配,同时强制降为10M 通信还是无法解决。
最后只能使用示波器查看SMI 和RGMII 接口信号,惊喜来的太突然,马上发现MAC发出的TXC 时钟只有5M Hz,这明显不对。
查看数据手册,时钟树相关章节:
怀疑驱动中在判断RGMII 接口进行分频时发生错误
查看MAC驱动代码:
\drivers\net\ethernet\stmicro\stmmac\dwmac-rk.c
果不其然,该驱动将接口类型RGMII时钟默认定为125M,当速度为百兆时进行5分频。
修改:
#define RK3288_GMAC_CLK_25M (GRF_CLR_BIT(12) | GRF_CLR_BIT(13))
重新编译内核代码烧录,测试OK !
这篇关于RK3288 RGMII 连接百兆PHY DP83822的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!