WCH沁恒单片机
直播中

h1654155216.9102

10年用户 731经验值
擅长:可编程逻辑
私信 关注
[问答]

使用CH569以太网ETH-GMAC例程中,有几个问题求解答

在使用CH569以太网例程ETH-GMAC例程中,有几个问题不太懂,再次请教一下。
  • 在使用网口传输中,如果我发送长度大于1514字节就会出现发送不出去的情况,如果我想发送5000字节,可以再一次发送中实现吗? 只能分4次发送吗?
  • ARP传输数据中,是否有发送间隔?我在发送中在以100us左右的间隔连续发送四次以上就会进入DMATxDescToSet->StatusÐ_DMATxDesc_OWN)!=(UINT32)RESET
    这个判断中。

回帖(9)

刘岩丘

2022-6-9 11:20:13
您好,
1、mac_send函数的发送长度收到mac帧的最大长度限制。
2、不知道您是否对代码逻辑有进行更改,需要满足主循环中调用发送的条件
            if(enable_send==0x03)
其次可以尝试降低调用发送速度进行测试,也可尝试将发送描述符的数量增加
            #define  TX_Des_Num        2                                    /* 发送描述符和缓冲区的数量 */
举报

孙巍

2022-6-9 11:20:17
感谢您的回复,我现在想使用一个发送缓冲区,我就把TX_Des_Num改为了1, 同时还有memcpy(pTx_Buff,target_msg_ptr,sizeof(target_msg_ptr)); 我每次发送都把它变为memcpy(&pTx_Buff[42],自定义数据,发送长度),这样发送是成功的,但是不知道为什么我用户WireShark收到的不是我写进去的,反复测试了好多遍。 不知道是不是还需要修改什么才能把发送缓冲区从2变为1。还有1个现象,如果我把 memcpy(&pTx_Buff[42],自定义数据,发送长度)中的42变为一个100以上的值,从WireShark我发现是我写入的值,不知道是不是因为地址冲突的原因?
举报

杨叶

2022-6-9 11:20:21
还有个问题enable_send 这个满足发送条件是怎么判断的呢? 就是满足什么条件下enable_send才会等于0x03呢?
举报

陈铮

2022-6-9 11:20:28
您好,可以在工程下搜索变量名字,可以看到当以太网收发都完成,会变成0x03,还有就是定时器中断中定时周期到了也会启动发送
举报

更多回帖

发帖
×
20
完善资料,
赚取积分