完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
先说硬件配置:CH32V307VCT6通过RGMII与国产某千兆PHY连接;CH32V307的PB1管脚(RGMII_125IN)接的是外部独立的125M TCXO;CH32V307的时钟来自外部8M晶振;千兆PHY的时钟来自外部独立的25M晶振,与CH32V307无关。
软件部分:直接使用官网上提供的demo例程(ETH_RGMII),仅仅把发送部分的打印信息去掉了,见下图: 另外,为了便于测试,我把demo例程里的ARP包的数据改成跟我计算机相匹配。 测试结果:PHY正常自协商到千兆。从抓包数据来看,数据的发送正常,每0.8秒左右计算机就会收到CH32V307发过来的ARP报文,同时计算机及时回复了报文,见下图: 但是调试打印结果提示经常收不到计算机回复的报文,时而能收到时而收不到,见下面打印信息: receive counter:6. read_length:60 Received@0x200002a0 Status:0x80408302 84 c2 e4 01 02 03 e8 6a 64 53 29 a0 08 06 00 01 08 00 06 04 00 02 END! Error:recv error frame,status:0x00408302. Error:recv error frame,status:0x00408302. Error:recv error frame,status:0x00408302. receive counter:7. read_length:60 Received@0x20001a60 Status:0x80400300 84 c2 e4 01 02 03 e8 6a 64 53 29 a0 08 06 00 01 08 00 06 04 00 02 END! receive counter:8. read_length:60 Received@0x20002050 Status:0x80400300 84 c2 e4 01 02 03 e8 6a 64 53 29 a0 08 06 00 01 08 00 06 04 00 02 END! receive counter:9. read_length:60 Received@0x200002a0 Status:0x80408302 84 c2 e4 01 02 03 e8 6a 64 53 29 a0 08 06 00 01 08 00 06 04 00 02 END! Error:recv error frame,status:0x00408302. receive counter:10. read_length:60 Received@0x20000e80 Status:0x80408302 84 c2 e4 01 02 03 e8 6a 64 53 29 a0 08 06 00 01 08 00 06 04 00 02 END! receive counter:11. read_length:60 Received@0x20001470 Status:0x80400300 84 c2 e4 01 02 03 e8 6a 64 53 29 a0 08 06 00 01 08 00 06 04 00 02 END! receive counter:12. read_length:60 Received@0x20001a60 Status:0x80400300 84 c2 e4 01 02 03 e8 6a 64 53 29 a0 08 06 00 01 08 00 06 04 00 02 END! receive counter:13. read_length:60 Received@0x20002050 Status:0x80400300 84 c2 e4 01 02 03 e8 6a 64 53 29 a0 08 06 00 01 08 00 06 04 00 02 END! Error:recv error frame,status:0x00408302. receive counter:14. read_length:60 Received@0x20000890 Status:0x80400300 84 c2 e4 01 02 03 e8 6a 64 53 29 a0 08 06 00 01 08 00 06 04 00 02 END! receive counter:15. read_length:60 Received@0x20000e80 Status:0x80400300 84 c2 e4 01 02 03 e8 6a 64 53 29 a0 08 06 00 01 08 00 06 04 00 02 END! Error:recv error frame,status:0x00408302. receive counter:16. read_length:60 Received@0x20001a60 Status:0x80400300 84 c2 e4 01 02 03 e8 6a 64 53 29 a0 08 06 00 01 08 00 06 04 00 02 END! Error:recv error frame,status:0x00408302. receive counter:17. read_length:60 Received@0x200002a0 Status:0x80400300 84 c2 e4 01 02 03 e8 6a 64 53 29 a0 08 06 00 01 08 00 06 04 00 02 END! Error:recv error frame,status:0x00408302. receive counter:18. read_length:60 Received@0x20000e80 Status:0x80408302 84 c2 e4 01 02 03 e8 6a 64 53 29 a0 08 06 00 01 08 00 06 04 00 02 END! Error:recv error frame,status:0x00408302. 这种情况有可能是什么造成的?硬件问题还是软件以太网驱动问题? |
|
相关推荐
1个回答
|
|
你好,查看打印信息问题是接收错误的内容。
查看代码,打印 “Error:recv error frame,status:0x00408302.”的区域为 打印的数据为接收DMA描述符的第一个32位字段,状态字; 查询手册关于接收DMA描述符的字段 接受产生了CRC校验错误。 根据经验,CRC校验错误的产生一般是RGMII线路的问题。 检查两点: 1, RGMII布线。RGMII布线要求数据线尽量等长;时钟相对数据偏移2ns; 2, 通过软件微调RGMII时序,调整RGMII_TXC_Delay(0,2)可以微调MAC发送方向的时钟和相位,但是无法影响接收方,接受方可以由PHY的设置进行影响,此函数改变的位见手册的关于MACCR的描述。 建议:注释掉接收函数中检查CE位的行,即 将接收到的帧数据全部打印出来,查看数据具体有什么错误;根据经验,帧的数据可能并没有错误,仅仅是CRC域错了。 |
|
|
|
只有小组成员才能发言,加入小组>>
481 浏览 1 评论
CH579M+RT-Thread,RTC从Sleep模式唤醒失败是什么原因?
2877 浏览 2 评论
2366 浏览 1 评论
821浏览 2评论
CH569通过HSPI实现USB3.0和FPGA高速双向通讯
654浏览 1评论
502浏览 1评论
CH32F103C8T6使用当前官网上的CDC例程会出现设备描述符请求失败
367浏览 1评论
645浏览 1评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-28 21:35 , Processed in 1.053073 second(s), Total 78, Slave 61 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号