STM32
直播中

殷谷光

7年用户 1068经验值
擅长:控制/MCU
私信 关注
[问答]

STM32+LWIP通信12次无法再次通信要怎么解决?

尝试移植LWIP+FREERTOS的时候出现了如下问题,请各位大佬帮忙看看是哪里的问题,我用了FreeRTOS+LWIP做ModbusTCP时出现了链接出现通信12次然后通信中断,并且再也没法ping 通的问题,表现的现象是进不去以太网中断,导致 ethernetif_input()接收不到数据
移植过程是这样的:(STM32F407+DP83848)
1:首先移植RTOS+固件库,移植成功,并且跑了几个串口通信的任务,测试大概两三天的样子,并没有出现问题。
2:移植LWIP1.4.1 (从ST官网下载的那个网页的例程,修改引脚定义后跑在板子上没问题,确认硬件没问题)
3:将ST官网的LWIP1.4.1 的例子(关于LWIP的部分)移植到步骤1 的FreeRTOS 系统的工程里面,只是添加LWIP初始化的任务,并没有调用任何接口的情况下可以Ping 通 而且长时间Ping 也没问题。
4:调用一个连接,编写函数,将受到的数据发送回去,出现了通信12次就没法在通信的问题(发12次,收12次,通信数据包无论长短,都是12次)而且ping 也ping 不通了。
5:自己写了Modbus-TCP的代码,也是同样的通信12次,也没法通信了,
请教各位大佬,有遇到过类似的情况吗?

回帖(1)

龙献益

2024-4-12 16:05:19
这个问题可能是由于网络堆栈(LWIP)没有正确配置或初始化导致的。下面是可能的解决方案:

1. 检查你的LWIP配置是否正确。确保正确设置网络接口(如MAC地址、IP地址、子网掩码等)和通信参数(如端口号、超时时间等)。

2. 确保正确初始化LWIP堆栈。请检查网络接口初始化函数(如ethernetif_init)是否正确调用,并且正确设置ETH网卡。

3. 检查LWIP的任务优先级配置。确保LWIP任务的优先级高于其他任务,以确保网络数据的及时处理。

4. 检查网络接收中断是否正确设置。确保接收中断在数据到达时被正确触发,并且数据正确传递给LWIP堆栈进行处理。

5. 检查堆栈初始化后是否存在任何错误或警告。通过仔细检查初始化过程中的日志或调试信息,可以找到可能的问题。

6. 检查硬件连接是否正确。确保物理层连接(如网线)和PHY芯片(如DP83848)与STM32芯片正确连接,并且没有任何故障。

如果以上步骤没有解决问题,建议使用调试工具(如OpenOCD或JTAG)进行更详细的调试,以确定具体问题所在。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分