完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
在配套给的ETH-GMA例程中,我在上面添加了UIP协议栈,出现了接收的时候内容是准确的,但是多了几个字节。发送的时候内容是完全错误。判定发送完和接收完的标志位在哪里可以定义呢?看了贵公司提供的子程序库,好像没有明确相关定义。
|
|
相关推荐
6个回答
|
|
您好,
收数据多几个字节可以看一下是否是MAC帧的校验,单片实际收到数据可能会和wireshark中抓包有几个字节的差距 代码中两个判断寄存器的标志位是底层完成发送,实际代码业务逻辑上层收发是根据enable_send来控制的,是一个比较简单的发送逻辑。 发送数据的DMA地址必须是在RAMX范围内的数据,目前代码实际控制缓冲区建议修改发送和接收描述符数量宏定义来实现: |
|
|
|
感谢贵公司的回复。问一下例程里边的接收完成中断,是接收完一帧数据还是接收完全部数据才把enable_send置0x03。
|
|
|
|
还有想问一下,CH565的RAMX是可以配置成32/64/96KB的,我配置了相关寄存器#define SZ_RAMX 0x00018000,但编译窗口显示RAMX还是32KB。
|
|
|
|
我看了下驱动例程中的enable_send这个全局变量仅仅只是为了让主循环中的发送能进行下去的一个,可以认为是用户自定义的标志位,实际使用中可以删去的。你可以一直调用发送函数发送数据,因为处理器所做的也只是把你的数据挂到发送队列上,当R32_ETH_DMACHTBAR这个寄存器的值等于你刚才写数据的缓冲区时,才表示MAC正在发送这帧数据。一般情况下你不用管发送完成中断,你的发送频率一般不会超过MAC的发送能力。
RAMX的大小确实是可以配的,不过是在LD文件里配的。记得下载时在ISP工具上勾选对应的硬件配置。 |
|
|
|
感谢回复,RAMX大小以及改成96KB。有个问题想请假一下,CH565demo板上的以太网接口芯灯,要怎么去配置,才会在有数据收发的时候亮起来。
|
|
|
|
|
|
|
|
只有小组成员才能发言,加入小组>>
523 浏览 1 评论
CH579M+RT-Thread,RTC从Sleep模式唤醒失败是什么原因?
2904 浏览 2 评论
2400 浏览 1 评论
870浏览 2评论
689浏览 1评论
riscv-none-embed-objcopy: \'PWM_Output.elf\': No such file这个咋解决,
418浏览 1评论
531浏览 1评论
请教一下,Mounriver 编译不成功:找不到库文件,怎么整
814浏览 1评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-25 03:24 , Processed in 1.138074 second(s), Total 86, Slave 70 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号