CH569 以太网问题

在使用CH569以太网例程ETH-GMAC例程中,有几个问题不太懂,再次请教一下。

  1. 在使用网口传输中,如果我发送长度大于1514字节就会出现发送不出去的情况,如果我想发送5000字节,可以再一次发送中实现吗? 只能分4次发送吗?

  2. ARP传输数据中,是否有发送间隔?我在发送中在以100us左右的间隔连续发送四次以上就会进入DMATxDescToSet->Status&ETH_DMATxDesc_OWN)!=(UINT32)RESET
    这个判断中。



您好,

1、mac_send函数的发送长度收到mac帧的最大长度限制。

2、不知道您是否对代码逻辑有进行更改,需要满足主循环中调用发送的条件

            if(enable_send==0x03)

其次可以尝试降低调用发送速度进行测试,也可尝试将发送描述符的数量增加

            #define  TX_Des_Num        2                                    /* 发送描述符和缓冲区的数量 */


感谢您的回复,我现在想使用一个发送缓冲区,我就把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我发现是我写入的值,不知道是不是因为地址冲突的原因?


还有个问题enable_send 这个满足发送条件是怎么判断的呢? 就是满足什么条件下enable_send才会等于0x03呢?



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

image.png


我看了一下,大概知道了逻辑,我理解的是发送完之后会把enable_send变为1,之后采集方接收完成在|2,变成了3.


我还有问题就是我吧发送缓冲区变为了4,也可以使用,但是我发现42字节的MAC配置文件就会被改变, 实验环境是:我先把1400字节的测试数据image.png 复制到image.png中,我把DVP的DMABUF0和DMABUF1的地址变为了&ptxbuff[42],这样发送,  但是我从wireshrak发现image.png少了最后的目标MAC地址和源协议地址?  这个可能是因为什么呢。image.png这张是没触发DVP的地址和变量。image.png这张是触发了的,相同的地址值却被改变了。麻烦您。


如果不触发DVP,只在主函数中发送,是不缺失数据的,可能是因为16字节对齐的原因吗?


要注意的是569的高速外设在传输数据的时候,目标数据地址空间一定是分配在RAMX里面的,ptxbuff定义是在哪里的?


ptxbuff是起始地址是在0x20020050. 这个地址是在0x2002000-0x20037fff的地址范围内、


您好,您的问题可以直接联系我。把代码工程发送至lq@wch.cn看一下。


CH569的以太网例程除了例程本身,还有其他参考资料不,我刚接触这块,例程看起来有些吃力,想看下有没有其他说明性质的文档可以帮助快速上手的


各位大哥,我下载例程卡死在获取MAC地址,有遇到过吗?


您好。

建议下载使用官网最新的例程测试。

已测试没有问题:https://www.wch.cn/downloads/CH569EVT_ZIP.html


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