在使用CH569以太网例程ETH-GMAC例程中,有几个问题不太懂,再次请教一下。
在使用网口传输中,如果我发送长度大于1514字节就会出现发送不出去的情况,如果我想发送5000字节,可以再一次发送中实现吗? 只能分4次发送吗?
ARP传输数据中,是否有发送间隔?我在发送中在以100us左右的间隔连续发送四次以上就会进入DMATxDescToSet->StatusÐ_DMATxDesc_OWN)!=(UINT32)RESET
这个判断中。
在使用CH569以太网例程ETH-GMAC例程中,有几个问题不太懂,再次请教一下。
在使用网口传输中,如果我发送长度大于1514字节就会出现发送不出去的情况,如果我想发送5000字节,可以再一次发送中实现吗? 只能分4次发送吗?
ARP传输数据中,是否有发送间隔?我在发送中在以100us左右的间隔连续发送四次以上就会进入DMATxDescToSet->StatusÐ_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,还有就是定时器中断中定时周期到了也会启动发送
我看了一下,大概知道了逻辑,我理解的是发送完之后会把enable_send变为1,之后采集方接收完成在|2,变成了3.
我还有问题就是我吧发送缓冲区变为了4,也可以使用,但是我发现42字节的MAC配置文件就会被改变, 实验环境是:我先把1400字节的测试数据 复制到中,我把DVP的DMABUF0和DMABUF1的地址变为了&ptxbuff[42],这样发送, 但是我从wireshrak发现少了最后的目标MAC地址和源协议地址? 这个可能是因为什么呢。这张是没触发DVP的地址和变量。这张是触发了的,相同的地址值却被改变了。麻烦您。
如果不触发DVP,只在主函数中发送,是不缺失数据的,可能是因为16字节对齐的原因吗?
要注意的是569的高速外设在传输数据的时候,目标数据地址空间一定是分配在RAMX里面的,ptxbuff定义是在哪里的?
ptxbuff是起始地址是在0x20020050. 这个地址是在0x2002000-0x20037fff的地址范围内、
您好,您的问题可以直接联系我。把代码工程发送至lq@wch.cn看一下。
CH569的以太网例程除了例程本身,还有其他参考资料不,我刚接触这块,例程看起来有些吃力,想看下有没有其他说明性质的文档可以帮助快速上手的
各位大哥,我下载例程卡死在获取MAC地址,有遇到过吗?
您好。
建议下载使用官网最新的例程测试。
已测试没有问题:/downloads/CH569EVT_ZIP.html