CH32V307采用RGMII接口使用MAC to Mac协议栈报错

CH32V307采用RGMII接口与交换机直连,将PHY相关代码屏蔽,修改完后有以下结果:

1.当前使用MAC_RAW例程将发送ARP包,PC端已经能收到,PC端回复数据307也能收到。

2.当使用libwchnet.a库,创建UDP服务后,PC端发送UDP广播包,307也能收到。

3.但是当307发送数据到PC端时,WCHNET_SocketUdpSendTo返回WCHNET_ERR_IF(Low-level netif error)的错误,PC接收不到数据。

4.将要发送的UDP包添加头尾构造MAC层包后,使用MAC_RAW例程中的MACRAW_Tx函数发送,PC能收到数据。

5.PC端使用UDP单播的形式,307也收不到数据。


当前有点怀疑ARP表有异常,引发的通讯异常,请问:
1.使用MAC to MAC的方式后,能否直接使用libwchnet.a库?

2.若能使用libwchnet.a库,请问有什么排错或修改建议?

3.若不能使用,请问有什么可行的方案和建议吗?


您好,MAC直连可以使用libwchnet.a库,协议栈需要获取底层phy连接信息才会运行数据处理代码,才可正常收发,所以需要设定一个值传入协议栈,使用下图中WCHNET_PhyStatus( phy_stat );函数,将设定值传入协议栈,传入之后,协议栈会根据传入数据bit2位进行判断底层是否连接,连接后会触发link状态,此时会打印phy link success,可在此置标志位,当link连接成功之后,再调用udp发送,后续有问题可以通过邮箱交流一下:kx@wch.cn

image.png


非常感谢回复


只有登录才能回复,可以选择微信账号登录