文章目录
特性内部功能框架图芯片模式和地址解析寄存器解析数字回环测试PHY芯片特殊配置硬件上电时序实战应用
特性
10M、100M、1000M兼容IEEE 802.3协议支持RGMII接口到MAC设备,支持I/O口电压级别选项2.5V/1.8V/1.5V/3.3VRGMII定时模式支持,RX内部延时和外部延时支持WOL(wake-on-lan)功能,通知属于系统休眠的唤醒符合IEEE 802.3自协商软件可编程LED模式多种判断回环模式
内部功能框架图
![在这里插入图片描述](https://img-blog.csdnimg.cn/27eb045c7bb2487399abd1092cf10c7c.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAQmF6aW5nYSBiaW5nbw==,size_20,color_FFFFFF,t_70,g_se,x_16)
芯片模式和地址解析
CLK_25M默认输出25M ———— AR8035只有输出模式,没有输入模式 PHY地址、模式、I/O电压 地址和模式识别PHY芯片重要点,具体可看相关RK与NXP专栏中PHY驱动解析 省电模式:PLLOFF模式下CLK_25M输出会下降,时有时没有 PLLON 模式下CLK_25M持续输出时钟
寄存器解析
PHY ID —— 0x20 : 0x004D 0x03 : 0xD072 注:MAC通过MDIO总线发送寄存器地址获取PHY的ID号
控制读写AR8035 MDIO管理设备地址有两个(MMD3 MMD7) ,用上面两个寄存器去读写管理设备下的寄存器 设置CLK_25M的输出时钟125M
phy_write(phydev, 0xd, 0x7); // 往0xd寄存器里写入0x7 ,选择设备7控制器
phy_write(phydev, 0xe, 0x8016); // 往0xe寄存器里写0x8016,锁定要操作的寄存器
phy_write(phydev, 0xd, 0x4007); // 往0xd寄存器里写0x4007,操作设备7控制器设置里面数据为可读写
val = phy_read(phydev, 0xe); // 读出里面的数据
val &= 0xffe3; // 设置输出时钟为125M
val |= 0x18;
phy_write(phydev, 0xe, val); // 写入该寄存器
数字回环测试
数字环回提供了使用AR8035设备中的数字电路将传输的数据环回到接收器的能力。图2是一个数字环回的框图。 ![在这里插入图片描述](https://img-blog.csdnimg.cn/ecd263da34f14306aff43f57c46ebd18.png)
1000M loopback: write register 0x0 = 0x4140 to enable 1000M digital loopback.100M loopback: write register 0x0 = 0x6100 to enable 100M digital loopback.10M loopback: write register 0x0 = 0x4100 to enable 10M digital loopback. 注:速度SPEED_SELECTION 低字节
PHY芯片特殊配置
// 驱动phy配置
static int ar8035_fix_up(struct phy_device *phydev)
{
unsigned short val;
printk("**************[stmmac_main.c]ar8035 fix up \n");
/* Ar8031 phy SmartEEE feature cause link status generates glitch,
* which cause ethernet link down/up issue, so disable SmartEEE
*/
phy_write(phydev, 0xd, 0x3);
phy_write(phydev, 0xe, 0x805d);
phy_write(phydev, 0xd, 0x4003);
val = phy_read(phydev, 0xe);
val &= ~(0x1 |