yt8531s net phy调试记录

本文详细记录了针对YT8531S网络PHY的驱动调试过程,包括链路原理、寄存器访问方法、MDIO通讯和RK3399平台的配置。通过调试解决了通讯、光口电口假link等问题,提供了正确的排查方向。

双网卡调试记录
1.主链路:
这里插入图片描述

2.链路原理:
主要目的是完成由MCU控制的yt8531,实现该phy的光电转换,输入可以是光信号或者插入光信号的电信号;
将光信号变成电信号;然后经过rk3399控制的yt8531;
3.yt8531寄存器介绍:
在这里插入图片描述

寄存器类型及访问方法:
分三类:
MII 寄存器( Media independent interface MII register,以下简写为 mii_reg)
Ext扩展寄存器( extendedregister,以下简写为 ext_reg)
MMD 寄存器(MDIO Managable Device 简写为 mmd_reg)
地址空间:
在这里插入图片描述

//ext 寄存器写
void yt8531s_ext_write(uint8_t phyaddr, uint16_t regaddr, uint16_t data)
{
yt8531_mdio_write(phyaddr,0x1e,regaddr);
yt8531_mdio_write(phyaddr,0x1f,data);
}
//ext 寄存器读
uint16_t yt8531s_ext_read(uint8_t phyaddr, uint16_t regaddr)
{
uint16_t data=0;
yt8531_mdio_write(phyaddr,0x1e,regaddr);
data=yt8531_mdio_read(phyaddr,0x1f);
return data;
}
MII寄存器写
void yt8531_mdio_write(uint8_t phyaddr, uint8_t regaddr, uint16_t data)
MII寄存器读
uint16_t yt8531_mdio_read(uint8_t phyaddr, uint8_t regaddr)
注意:读写
3.1访问ext寄存器时(包括 commom ext 跟sds ext,及phy ext);用法如下:
写: yt8531s_ext_write(phyaddr, regaddr, data)
或者 yt8531_mdio_write(phyaddr,0x1e,regaddr);
yt8531_mdio_write(phyaddr,0x1f,data);
读: yt8531s_ext_read(phyaddr, regaddr)
yt8531_mdio_write(phyaddr,0x1e,regaddr);
data = yt8531_mdio_read(phyaddr,0x1f);

3.2访问SDS MII寄存器
必须先切换数据到SDS yt8531s_ext_write(phyaddr,0xa000, 0x2)
写: yt8531_mdio_write(phyaddr, regaddr, data);

读: yt8531s_ext_r

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值