TI中文支持网
TI专业的中文技术问题搜集分享网站

am3354+AR8031组成的以太网 仍然是只能发送 无法接收数据包

如题,再描述一遍,

在WINCE,安卓,linux下可以发送和接收数据包。

但是在starterware下,只能发送数据包,无法接收数据包,寄存器0x4A100900一直是0。

请问哪位高手遇到过这种问题?是不是starterware有bug?

pengda qiu:

am335x是否和phy一样有loopback功能?寄存器是哪个呢?

pengda qiu:

我已经找到LOOPBACK这个寄存器了。是0x4A100D84的bit1位。

我将bit1置1后,可以接收到自身发送的数据帧。

pengda qiu:

回复 pengda qiu:

鉴于以上的测试,总结了一下,感觉是从AM335x到AR8031这里有问题,今天又在WINCE下将PinMux读取出来与在Starterware下的寄存器做对比,未发现什么异常,将WINCE下的PinMux的寄存器的数据更改到Starterware下,仍然只能发送 无法接收。所以感觉问题可能出在AR8031的寄存器上。现在想读取一下AR8031的寄存器。

请教一下,怎么在wince,linux或者安卓下,读取AR8031的寄存器的数据?有没有什么简单的方法可以在操作系统运行的过程中读取AR8031的寄存器?

Jian Zhou:

回复 pengda qiu:

这个可能是要增加一个类似驱动层的IOCTL命令,通过MDIO读取PHY内部的寄存器

pengda qiu:

回复 Jian Zhou:

感觉又不像是AR8031的问题,因为我用starter kit读取AR8031的寄存器 对比过了。没有什么区别。问题还能出在哪里呢?难道starter kit的8031和我的8031不一样?

Steven Liu1:

你用的是千兆以太网RGMII模式吗?

如果是的话,建议你试一下:

1.修改Control Module的0x650的gmii_sel中的第5或者4比特,增加internal delay;

2. PHY端的也有个rx delay的配置,需要查一下phy端的手册,加上这个delay配置,进行测试。

我之前的一个客户遇到的情况是百兆收发正常,但是千兆只能发,不能收。解决方法用的是上述2。

pengda qiu:

回复 Steven Liu1:

按照您的方法:

1.将44E10650的BIT4和BIT5修改为1或者0,仍无法接收。

2.将PHY的rx delay 配置为使能或者禁止 ,仍无效果。

请问,是否还有其他原因呢?

Steven Liu1:

回复 pengda qiu:

对于PHY的RX delay配置成为使能这个测试,确认生效了吗?可以回读一下相关寄存器的值确认一下吗?

接收数据的软件配置话,能否确认相关管脚有没有在pinmux的配置上面做receive enable?

pengda qiu:

回复 Steven Liu1:

对于PHY的RX delay配置成为使能这个测试,确认生效了吗?可以回读一下相关寄存器的值确认一下吗?

答:根据手册

  读取这个寄存器的数据为0x82EE

 发现当硬件复位或者启动的时候  这个寄存器就是0X82EE了。我试着将这个寄存器改为0x02EE,也是不能接收数据。

接收数据的软件配置话,能否确认相关管脚有没有在pinmux的配置上面做receive enable?

答:您讲的在pinmux上面做receive enable 是如何操作呢?我没有找到相关的寄存器。

 我在offset650的BIT4和BIT5都设置为1后,无效果,设置为0后,仍然没有效果。

请解答一下,感谢!

Steven Liu1:

回复 pengda qiu:

在control module里面,每一个管脚的配置中,5 bit是可以设置管脚的receive enable属性的。

对于接收类型的管脚在这个配置上,都必须要配置成为1,receive enable。

赞(0)
未经允许不得转载:TI中文支持网 » am3354+AR8031组成的以太网 仍然是只能发送 无法接收数据包
分享到: 更多 (0)