硬汉嵌入式论坛

 找回密码
 立即注册
查看: 1542|回复: 3
收起左侧

[以太网] 关于网络DMA接收缓冲区不可用(ETH_DMACSR_RBU)的处理

[复制链接]

12

主题

26

回帖

62

积分

初级会员

积分
62
发表于 2021-11-30 13:52:15 | 显示全部楼层 |阅读模式
测试发现,有这种错误出现,根据H743的手册,需要把下一个接收描述符的OWN位置1,归DMA使用,再次启动接收。
以下是我写的代码,不知道对不对:
                                u32 descIdx = ETH_Handle.RxDescList.CurRxDesc;
                                INCR_RX_DESC_INDEX(descIdx, 1U);
                                ETH_DMADescTypeDef * dmarxdesc = (ETH_DMADescTypeDef *)ETH_Handle.RxDescList.RxDesc[descIdx];
                                SET_BIT(dmarxdesc->DESC3, ETH_DMARXNDESCRF_OWN);
                                ETH->DMACRCR |= 1; // 重新启动接收

好像效果不明显。
回复

使用道具 举报

0

主题

2

回帖

2

积分

新手上路

积分
2
发表于 2022-8-22 19:52:42 | 显示全部楼层
请问这个问题得到解决了吗?目前我也遇到一个类似的问题,ETH DMA在正常接收数据过程中出现描述符异常,此时会进ETH DMA的AIS中断,验证发现是AIS下的RBUS中断,进中断后,重新启动DMA,清空中断标志位,并没有什么效果。ETH DMA进入RBUS中断后还需要做其他操作吗,有没有好的解决办法?
回复

使用道具 举报

0

主题

2

回帖

2

积分

新手上路

积分
2
发表于 2022-8-22 20:32:51 | 显示全部楼层
回复

使用道具 举报

3

主题

1233

回帖

1242

积分

至尊会员

积分
1242
发表于 2022-8-22 21:26:06 | 显示全部楼层
参考下最新的CubeMX上的NetXDuo的例子。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-19 14:04 , Processed in 0.159902 second(s), 23 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表