双网卡调试记录
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

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

6542

被折叠的 条评论
为什么被折叠?



