打印

gd32f450 lwip DMA失败

[复制链接]
3432|17
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
ramboboxin|  楼主 | 2024-9-13 10:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
ErrStatus enet_software_reset(void)
{
    uint32_t timeout = 0U;
    ErrStatus enet_state = ERROR;
    uint32_t dma_flag;

    /* reset all core internal registers located in CLK_TX and CLK_RX */
    ENET_DMA_BCTL |= ENET_DMA_BCTL_SWR;

    /* wait for reset operation complete */
    do{
        dma_flag = (ENET_DMA_BCTL & ENET_DMA_BCTL_SWR);
        timeout++;
    }while((RESET != dma_flag) && (ENET_DELAY_TO != timeout));

    /* reset operation complete */   
    if(RESET == (ENET_DMA_BCTL & ENET_DMA_BCTL_SWR)){
        enet_state = SUCCESS;
    }

    return enet_state;
}

gd32f4xx_enet.c这个老是失败,led闪灯例程没有毛病

使用特权

评论回复
沙发
ramboboxin|  楼主 | 2024-9-13 12:44 | 只看该作者

使用特权

评论回复
板凳
xionghaoyun| | 2024-9-14 08:29 | 只看该作者
开局就是代码 问题全靠猜

使用特权

评论回复
地板
Chad1989| | 2024-9-14 08:42 | 只看该作者
不出意外是代码问题,自己慢慢调试啊

使用特权

评论回复
5
陈吉Ch| | 2024-9-14 09:21 | 只看该作者
最好能够把自己的调试过程写的详细一点,展示一下,还能帮忙分析分析,

使用特权

评论回复
6
szt1993| | 2024-9-24 14:10 | 只看该作者
DMA失效很正常的,需要不断提高总结

使用特权

评论回复
7
laocuo1142| | 2024-9-25 16:57 | 只看该作者
DMA控制器或其配置的通道可能存在硬件故障或配置错误。

使用特权

评论回复
8
flycamelaaa| | 2024-9-25 17:56 | 只看该作者
与DMA传输相关的硬件连接可能松动或损坏,导致信号传输不稳定。

使用特权

评论回复
9
powerantone| | 2024-9-25 19:23 | 只看该作者
DMA传输完成后,如果中断处理程序未能正确响应或处理,可能导致DMA传输失败。

使用特权

评论回复
10
stormwind123| | 2024-9-25 20:00 | 只看该作者
DMA缓冲区的地址或大小设置不正确,或缓冲区被其他进程占用

使用特权

评论回复
11
probedog| | 2024-9-25 21:00 | 只看该作者
lwIP协议栈的配置可能与GD32F450的硬件特性不匹配

使用特权

评论回复
12
classroom| | 2024-9-25 21:45 | 只看该作者
驱动程序或固件中的软件错误,如逻辑错误、资源冲突等

使用特权

评论回复
13
王派oo| | 2024-9-30 13:29 | 只看该作者
检查DMA和以太网的配置是否正确,寄存器设置之类的。

使用特权

评论回复
14
而服务器人| | 2024-9-30 13:37 | 只看该作者
如果超时值设置过小,可以尝试增加ENET_DELAY_TO的值,才能有足够时间等待复位完成。

使用特权

评论回复
15
而服务器人| | 2024-9-30 13:48 | 只看该作者
如果使用RTOS,以太网和DMA的中断优先级必须合理,避免被其他任务阻塞。

使用特权

评论回复
16
而服务器人| | 2024-9-30 13:49 | 只看该作者
可以通过在循环中添加调试信息,检查dma_flag和timeout的状态

使用特权

评论回复
17
发货后已经wi| | 2024-9-30 21:42 | 只看该作者
查看GD32F450的参考手册,确认寄存器和位定义是否正确

使用特权

评论回复
18
lifeforrent| | 2024-10-14 18:14 | 只看该作者
你好,用户手册中ENET_DMA_BCTL_SWR这一位解释如下,如果该位没有复位成功,可能原因是MAC时钟不对!

在所有时钟域的复位操作完成之后,该位将由硬件清零
注意:在写任何 MAC 的寄存器前,应当确保该位为’0’
0:MAC 内部寄存器正常工作
1:复位 MAC 所有内核寄存器

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

7

帖子

0

粉丝