完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
使用STM32f429的片子,用cube生成包括lwip的示例,无操作系统。不知道什么原因cube的lwip不能选择igmp,只好手动打开此开关,同时为了编译通过关闭了dhcp.
在以太网配置处打开接收组播开关,同时把lwip_process函数加入主循环。外界5ms发一包,不停发组播包。大概正常7,8万包之后,就收不到包了,在底层单步跟踪后发现底层的dma处不停空转,但这时外界是有发包的。过一会又正常了,继续能接受到7,8万包。过一会又不行了。 把接收方式修改为中断方式(cube中无法设置成这样,只能轮询)发现空转时收缓冲区溢出计数一直在增加。 cpu主频是160多兆,主循环没有其他任务,不太可能是由于收包来不及吧。哪位知道这是什么原因呢? |
|
相关推荐
1个回答
|
|
STM32以太网接收断续的问题可能由多种原因导致,以下是一些可能的原因和解决方案:
1. **缓冲区溢出**:从描述中可以看出,当DMA空转时,接收缓冲区溢出计数一直在增加。这可能是因为接收到的数据包超过了缓冲区的处理能力。为了解决这个问题,可以尝试增加接收缓冲区的大小,或者优化数据包处理流程,以减少缓冲区溢出的风险。 2. **DMA配置问题**:STM32的以太网DMA负责数据包的接收和发送。如果DMA配置不当,可能会导致接收断续。请检查DMA的配置,确保其正确地处理接收到的数据包。此外,检查DMA中断是否正确配置,以确保在接收到数据包时能够及时处理。 3. **LWIP配置问题**:手动打开IGMP开关和关闭DHCP可能会影响LWIP的网络性能。请确保LWIP配置正确,以便正确处理组播数据包。如果可能,尝试使用CubeMX生成的默认配置,然后逐步调整以找到问题所在。 4. **以太网硬件问题**:检查STM32的以太网硬件连接,确保没有物理连接问题。此外,检查以太网PHY芯片是否正常工作,以及是否与STM32的以太网硬件兼容。 5. **软件问题**:在无操作系统的情况下,主循环中的lwip_process函数可能需要更多的时间来处理接收到的数据包。这可能导致处理延迟,从而影响数据包的接收。尝试优化主循环中的代码,以减少处理延迟。 6. **CPU负载问题**:如果CPU主频较低,可能导致处理数据包的速度跟不上接收速度。尝试提高CPU主频,或者优化代码以减少CPU负载。 7. **外部网络环境**:检查网络环境,确保没有其他设备或网络拥塞导致的问题。尝试在不同的网络环境下测试,以排除外部因素。 8. **固件问题**:如果问题仍然存在,可以考虑升级STM32的固件,以解决可能存在的已知问题。 总之,解决STM32以太网接收断续的问题需要从多个方面进行排查。首先,检查硬件连接和配置,然后优化软件和LWIP配置。如果问题仍然存在,可以尝试升级固件或寻求专业的技术支持。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1627 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1550 浏览 1 评论
984 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
688 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1601 浏览 2 评论
1867浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
650浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
518浏览 3评论
536浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
506浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-24 09:05 , Processed in 0.700970 second(s), Total 82, Slave 65 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号