gpt4 book ai didi

freertos - 获取 esp32 天线的信号量(蓝牙/wifi 双模)

转载 作者:行者123 更新时间:2023-12-04 12:38:54 26 4
gpt4 key购买 nike

我正在尝试构建一个 esp32 应用程序,我在其中同时启用了蓝牙和 wifi。

蓝牙与 a2dp 配置文件一起使用,其中 esp 是接收器。收到数据后,它应该通过 UDP 套接字作为广播发布到网络。

问题是天线。 bt 和 wifi 都在共享它。 a2dp 流似乎永久获取天线并很少释放它(~2 包/分钟,我有 ~3000 包/分钟)。

所以我的问题是:是否有某种信号量,可以获取它来完全控制天线?那么我的套接字将能够将数据发送到网络吗?

我正在将我的 esp32 与 freeRTOS 一起使用。 freeRTOS 库是用 C 编写的,但我试图用 C++ 包装所有内容。我仍然认为这个问题与 C lib 有关,所以我用 C 标记它。

我愿意接受任何关于如何构建它的建议。提前致谢。

更新 :

我正在使用 release/v3.3来自官方esp-idf repo 。

我有:CONFIG_SW_COEXIST_ENABLE=yCONFIG_SW_COEXIST_PREFERENCE_WIFI=y
我找不到 CONFIG_ESP32_WIFI_SW_COEXIST_ENABLE在我的配置中。

上述配置不起作用。

我尝试阅读该帖子,但在我的库中找不到任何“scan_window”或“scan_interval”。据说它在 gap_api 的某处。但找不到。

这是我的代码+配置:https://github.com/Dimfred/esp32_bt_streamer

套接字客户端任务,它应该广播 a2dp_msg , 从这里开始:
https://github.com/Dimfred/esp32_bt_streamer/blob/master/main/app/event_handler.cpp#L22

从站/接入点/蓝牙/a2dp弹出的所有事件都在event_handler.hpp/cpp中捕获

最佳答案

如您所见,蓝牙在 WIFI 上具有更高的优先级。

看看CONFIG_SW_COEXIST_ENABLE并确保它已启用。还需要配置CONFIG_SW_COEXIST_PREFERENCE到无线网络。请参阅页面了解您可以根据您的应用程序更新的其他标志。

如果您想让硬件负责处理共存设备(BL 和 WIFI),您可以禁用 CONFIG_SW_COEXIST_ENABLE并减小扫描窗口,增加BL的扫描间隔,为WIFI接入天线留出时间。看到这个post更多细节。

回答关于可能的信号量/互斥量的原始问题。我怀疑是否有一个可供您使用,我会留下 API(软件)来处理访问天线的共存模块。但是您可以随时查看代码正在执行的操作 CONFIG_SW_COEXIST_ENABLE已设置(标志重命名为 CONFIG_ESP32_WIFI_SW_COEXIST_ENABLE )。见 https://github.com/espressif/esp-idf/blob/81ca1c01395f604972fbf141cfbe49764a746023/components/esp_wifi/src/phy_init.c

关于freertos - 获取 esp32 天线的信号量(蓝牙/wifi 双模),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55865909/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com