乐鑫技术交流
直播中

李华瑞

7年用户 902经验值
私信 关注
[问答]

espidf以太网驱动一直卡在\"Waiting for IP\"的原因?

参考以太网dm9051驱动移植了w5500驱动,编译正常,烧录运行,通过打印的logo看,一直卡在"Waiting for IP(s)"。
这个是一个IP_EVENT_ETH_GOT_IP事件,由esp_event_handler_register(IP_EVENT, IP_EVENT_ETH_GOT_IP, &on_got_ip, NULL));注册,回调函数为on_got_ip。
目前代码调试卡在此处,没有找到哪里触发了IP_EVENT_ETH_GOT_IP事件,无法分析问题出在哪里。
                                         

回帖(1)

贾永世

2024-6-21 16:39:35
根据您提供的信息,您的ESP-IDF以太网驱动在使用DM9051芯片时,一直卡在"Waiting for IP"的阶段。这个问题可能是由以下几个原因导致的:

1. **网络连接问题**:首先检查您的网络连接是否正常,确保ESP32模块能够连接到以太网网络。

2. **DHCP配置问题**:检查您的网络是否支持DHCP,并且ESP32模块是否正确配置为使用DHCP获取IP地址。如果网络不支持DHCP,您需要手动设置静态IP地址。

3. **驱动问题**:您提到参考了W5500驱动移植了DM9051驱动,可能存在一些不兼容或者配置错误的地方。请仔细检查驱动代码,确保所有必要的配置都已经正确设置。

4. **ESP-IDF版本问题**:确保您使用的ESP-IDF版本与您的硬件和驱动兼容。如果可能,请尝试升级到最新版本的ESP-IDF。

5. **事件处理问题**:您提到IP_EVENT_ETH_GOT_IP事件没有被触发,这可能是因为事件处理函数没有正确注册或者回调函数on_got_ip没有正确实现。请检查以下方面:
   - 确保esp_event_handler_register函数的参数正确无误。
   - 检查on_got_ip函数是否正确实现了,并且能够正确处理IP_EVENT_ETH_GOT_IP事件。

6. **调试信息**:在您的代码中添加更多的调试信息,以便更好地了解问题所在。例如,您可以在等待IP的过程中添加一些打印语句,以便观察程序的执行流程。

7. **硬件问题**:检查您的硬件连接是否正确,包括ESP32模块、DM9051芯片和网络设备之间的连接。

综上所述,要解决这个问题,您需要从多个方面进行排查和调试。希望这些建议能帮助您找到问题所在并解决问题。
举报

更多回帖

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