Other Parts Discussed in Thread: DP83TC812R-Q1
芯片 :DP83TC812RRHARQ1;
调试系统:linux-5.10.y 目前将调试情况汇总如下:
验证步骤:
1、在TI官网下载 dp83tc812驱动合入代码中;
2、使用RGMII通信,测量硬件phy芯片VDD VDDIO 供电正常,外部晶体输出clkout 25MHz,TX和RX Clock都是25MHz,MDI正常,PHY寄存器读写正常;
3、通过ifconfig eth0上打开网口后,通过寄存器可以读到phy_id : 0x2000a271,strap 通过寄存器0x45D 读到的值是: 0x40A0(0x0080),通过log 看到“ethernet eth0: Link is Up - 100Mbps/Full - flow control off IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready”;
4、前面步骤的状态都感觉正常,但网络不通,ping一直超时。
存在问题:
- 寄存器转储比较
其中,“红色”和“黄色”是两块同样板子上读取的数据与理论值之间存在的差异。
(1)寄存器0x045D的Strap为0x40A0(0x0080),与理论值“0x408C”存在差异,按照排查手册提到的《验证 Strap 配置》,连接到 PHY 的所有 MAC 引脚都置于了高阻态,但Strap采用值还是异常,请问是什么原因导致?
图2 Strap验证配置
(2)寄存器0x1834,读取的值“0x8001”与理论值“0x8000”存在差异,而且这个状态是只读的,这个值受什么影响,为什么会不对?
图3 0x1834寄存器比特位简介
(3)在指导手册《snla389a_ Software Configuration.pdf》中提到配置0x0834寄存器为“0x8001”,但在规格书中《dp83tc812r-q1.pdf》并没有找到0x0834寄存器。请问0x0834和0x1834是否同一寄存器,如果0x0834寄存器是0x1834寄存器,那bit[0:3]是只读模式,根本写不进“1”,这个问题怎么解决?
图4 《snla389a_ Software Configuration.pdf》中的软件配置截图
图5 《dp83tc812r-q1.pdf》寄存器介绍
(4)环回测试时,通过写入 0x16 = 0x0104,PHY就会“link down”,请问这个是这款芯片的原本设计就是这样吗?如果不是,请问是什么原因导致的?
(5)有数据发送,但是没有数据接收,ping 不通。
图6 设备中TX_RX统计