• HC32F4A0 以太网调试问题(测试发现各种逻辑问题)


            表现为发送过程中,发送DMA逻辑假死

    1:明明已经屏蔽了巨型帧接收,但是总是会收到巨型帧2:一段时间后就会出现接收上溢出,然后无法接收数据,怎么都不接收,表现为内部DMA逻辑假死,比如停在 运行中,正在获取接收传输描述符  或者 运行中,正在关闭接收描述符

     老是收到巨型帧,根本没法屏蔽,然后就是假死 可以通过DMASTSR寄存器观察到, RSTS 要么=1 运行中,正在获取接收描述符  要么就是5 运行中,正在关闭接收描述符,由于无法获取到接收描述符(可以确定接收描述符都是正常的,就算不正常,也应该马上进入 停止状态)

    最后就会导致 接收下溢出,不停的下溢出,而且通过观察溢出计数器,发现,溢出计数器会是不是复位

     

     拔掉网线后,溢出计数器不再变化,就是接收过程容易卡在  获取描述符  或 关闭描述符  这2个内部逻辑上

    翻了一下STM32F4系列的以太网,发现一个细节,要求AHB时钟必须在25MHz以上,然后我记得之前用SDIO也出现过芯片逻辑错误,仔细寻找手册,发现是PCLK1必须为HCLK的 1/2 ,同时测试发现必须将ECLK 设置为HCLK 1/2才正常的,然后尝试提高主频到100MHz,PCLK1=50MHz 2个问题就都没了

    ETH时钟由PCLK1提供的

     

     稳定接收了很长时间了,也没有巨帧,是时钟给低了,内部同步问题,刚刚给了64MHZ 32MHz是不行的,RMII接口时钟是50MHz, 32MH不够,由于使用了SDIO 或以太网 意味着HCLK必须大于PCLK1,所以使用RMII接口以太网,HCLK至少工作在100MHz, 然后2分频,给PCLK1 提供50MHz。

    折腾了一天,接收问题算是解决了,然后今天又遇到发送问题;

     通过这两天的测试,发现如果只开启接收,那么时钟最少是100MHz,PCLK1 50MHz,但是如果开启了发送,则依旧会出现内部逻辑问题,表现为发送几条后,出现发送下溢出,然后发送逻辑卡在 发送运行中,正在等待状态 也就是TSTS=2;将时钟提高到120MHz PCLK1:60MHz后即可解决,也就是开启以太网后,HCLK必须大于100MHz,PCLK1必须大于50MHz,不能等,是大于;

     使用110MHz PCLK1:55MHz测试20分钟,依旧稳定;

    总结一下:使用HC32F4A0以太网,PCLK1时钟必须大于50MHz,否则会出现各种硬件逻辑故障;

  • 相关阅读:
    云原生 | 企业内使用 CoreDNS 构建高性能、插件化的DNS服务器
    JDBC在IDEA中配置mysql过程及编程详解
    IDEA创建Sping项目只能勾选17和21,却无法使用Java8
    Nuxt - 网站接入 51LA 网站统计(详细教程)
    音视频学习 - QT6.3.1创建QAudioSink+ ffmpeg项目进行音频解析及播放
    ISP Pipeline
    CF-Letter Picking(区间dp+博弈论)
    Day9 :面向对象进阶
    Spring Cloud Alibaba系列学习文章二
    Vue3.3 的新功能的一些体验
  • 原文地址:https://blog.csdn.net/cp1300/article/details/125945732