ESP32 ESP-NOW发送数据报ESP_ERR_ESPNOW_IF错误排查求助
ESP_ERR_ESPNOW_IF 报错排查方案
- 补全WiFi启动流程
你当前贴出的WiFi初始化代码仅完成了模式配置,缺少esp_wifi_start()调用和软AP的参数配置步骤。未完成启动的AP接口即使netif创建成功,也无法被ESP-NOW识别,会触发接口不匹配报错。你需要先配置软AP参数并启动WiFi:
wifi_config_t ap_config = { .ap = { .ssid = "TEST_AP", .ssid_len = strlen("TEST_AP"), .channel = 1, // 固定信道,避免动态匹配问题 .password = "", .max_connection = 4, .authmode = WIFI_AUTH_OPEN } }; ESP_ERROR_CHECK(esp_wifi_set_config(WIFI_IF_AP, &ap_config)); ESP_ERROR_CHECK(esp_wifi_start()); // 必须调用,完成WiFi接口启动
- 调整添加对等设备的时机
不要在WiFi初始化完成后立刻添加peer,监听WIFI_EVENT_AP_START系统事件,等AP接口完全启动成功后再执行esp_now_add_peer操作,确保接口状态就绪。 - 禁用信道动态匹配测试
你当前设置peer->channel = 0依赖ESP-NOW自动匹配接口信道,在APSTA模式下如果STA接口未连接路由器、信道未固定,很容易出现匹配失效。添加peer时将peer->channel设为和软AP相同的固定值,排除信道匹配问题。 - 校验发送目标MAC地址
调用esp_now_send时传入的目标MAC地址需要和你添加peer时写入的peer_mac_addr完全一致,如果MAC地址不匹配,ESP-NOW找不到对应peer条目,也会返回ESP_ERR_ESPNOW_IF错误。
内容的提问来源于stack exchange,提问作者Nick_mgn
相关产品推荐
相关产品推荐

