ESP32 请问有人能实现WIFI和BLE共存吗?
ESP32 请问有人能实现WIFI和BLE共存吗?
请问大家有做过wifi和BLE共存吗?有人能指导一下如何实现吗?menuconfig中Software controls WiFi/Bluetooth coexistence已经开启。不知道程序如何控制。
-
- Posts: 786
- Joined: Wed Nov 14, 2018 8:45 am
Re: ESP32 请问有人能实现WIFI和BLE共存吗?
共存在底层自动做了,不需要用户在应用层控制。
Re: ESP32 请问有人能实现WIFI和BLE共存吗?
为什么我初始化蓝牙后,再初始化wifi就死机了?能帮我看看代码吗?
这是蓝牙初始化
void ble_task_satart(void)
{
esp_err_t ret;
APP_DEBUG("ble_task_satart\n");
esp_bt_controller_mem_release(ESP_BT_MODE_CLASSIC_BT);
esp_bt_controller_config_t bt_cfg = BT_CONTROLLER_INIT_CONFIG_DEFAULT();
ret = esp_bt_controller_init(&bt_cfg);
if (ret) {
APP_DEBUG("%s initialize controller failed: %s\n", __func__, esp_err_to_name(ret));
return;
}
ret = esp_bt_controller_enable(ESP_BT_MODE_BLE);
if (ret) {
APP_DEBUG("%s enable controller failed: %s\n", __func__, esp_err_to_name(ret));
return;
}
ret = esp_bluedroid_init();
if (ret) {
APP_DEBUG("%s init bluetooth failed: %s\n", __func__, esp_err_to_name(ret));
return;
}
ret = esp_bluedroid_enable();
if (ret) {
APP_DEBUG("%s enable bluetooth failed: %s\n", __func__, esp_err_to_name(ret));
return;
}
ret = esp_ble_gatts_register_callback(gatts_event_handler);
if (ret){
APP_DEBUG("gatts register error, error code = %x", ret);
return;
}
ret = esp_ble_gap_register_callback(gap_event_handler);
if (ret){
APP_DEBUG("gap register error, error code = %x", ret);
return;
}
ret = esp_ble_gatts_app_register(PROFILE_A_APP_ID);
if (ret){
APP_DEBUG("gatts app register error, error code = %x", ret);
return;
}
// ret = esp_ble_gatts_app_register(PROFILE_B_APP_ID);
// if (ret){
// APP_DEBUG("gatts app register error, error code = %x", ret);
// return;
// }
esp_err_t local_mtu_ret = esp_ble_gatt_set_local_mtu(500);
if (local_mtu_ret){
APP_DEBUG("set local MTU failed, error code = %x", local_mtu_ret);
}
xTaskCreate(BLE_Send_Task, "BLE_Send_Task", 1024, NULL, 3, NULL);
return;
}
这是wifi初始化
void wifi_station_connect_start(void)
{
esp_netif_init();
s_wifi_event_group = xEventGroupCreate();
esp_event_loop_create_default();
esp_netif_create_default_wifi_sta();
wifi_init_config_t cfg = WIFI_INIT_CONFIG_DEFAULT();
esp_wifi_init(&cfg);
ESP_ERROR_CHECK( esp_event_handler_instance_register(WIFI_EVENT, ESP_EVENT_ANY_ID, &wifi_event_handler, NULL, NULL));
ESP_ERROR_CHECK( esp_event_handler_instance_register(IP_EVENT, IP_EVENT_STA_GOT_IP, &wifi_event_handler, NULL, NULL));
ESP_ERROR_CHECK( esp_wifi_set_mode(WIFI_MODE_STA) );
ESP_ERROR_CHECK( esp_wifi_start() );
}
这是蓝牙初始化
void ble_task_satart(void)
{
esp_err_t ret;
APP_DEBUG("ble_task_satart\n");
esp_bt_controller_mem_release(ESP_BT_MODE_CLASSIC_BT);
esp_bt_controller_config_t bt_cfg = BT_CONTROLLER_INIT_CONFIG_DEFAULT();
ret = esp_bt_controller_init(&bt_cfg);
if (ret) {
APP_DEBUG("%s initialize controller failed: %s\n", __func__, esp_err_to_name(ret));
return;
}
ret = esp_bt_controller_enable(ESP_BT_MODE_BLE);
if (ret) {
APP_DEBUG("%s enable controller failed: %s\n", __func__, esp_err_to_name(ret));
return;
}
ret = esp_bluedroid_init();
if (ret) {
APP_DEBUG("%s init bluetooth failed: %s\n", __func__, esp_err_to_name(ret));
return;
}
ret = esp_bluedroid_enable();
if (ret) {
APP_DEBUG("%s enable bluetooth failed: %s\n", __func__, esp_err_to_name(ret));
return;
}
ret = esp_ble_gatts_register_callback(gatts_event_handler);
if (ret){
APP_DEBUG("gatts register error, error code = %x", ret);
return;
}
ret = esp_ble_gap_register_callback(gap_event_handler);
if (ret){
APP_DEBUG("gap register error, error code = %x", ret);
return;
}
ret = esp_ble_gatts_app_register(PROFILE_A_APP_ID);
if (ret){
APP_DEBUG("gatts app register error, error code = %x", ret);
return;
}
// ret = esp_ble_gatts_app_register(PROFILE_B_APP_ID);
// if (ret){
// APP_DEBUG("gatts app register error, error code = %x", ret);
// return;
// }
esp_err_t local_mtu_ret = esp_ble_gatt_set_local_mtu(500);
if (local_mtu_ret){
APP_DEBUG("set local MTU failed, error code = %x", local_mtu_ret);
}
xTaskCreate(BLE_Send_Task, "BLE_Send_Task", 1024, NULL, 3, NULL);
return;
}
这是wifi初始化
void wifi_station_connect_start(void)
{
esp_netif_init();
s_wifi_event_group = xEventGroupCreate();
esp_event_loop_create_default();
esp_netif_create_default_wifi_sta();
wifi_init_config_t cfg = WIFI_INIT_CONFIG_DEFAULT();
esp_wifi_init(&cfg);
ESP_ERROR_CHECK( esp_event_handler_instance_register(WIFI_EVENT, ESP_EVENT_ANY_ID, &wifi_event_handler, NULL, NULL));
ESP_ERROR_CHECK( esp_event_handler_instance_register(IP_EVENT, IP_EVENT_STA_GOT_IP, &wifi_event_handler, NULL, NULL));
ESP_ERROR_CHECK( esp_wifi_set_mode(WIFI_MODE_STA) );
ESP_ERROR_CHECK( esp_wifi_start() );
}
-
- Posts: 786
- Joined: Wed Nov 14, 2018 8:45 am
Re: ESP32 请问有人能实现WIFI和BLE共存吗?
基于哪个版本的 IDF?有没有 log?你要么给一个完整的 .c 作为附件,可以直接复现一下。
另外,你也可以参考一下 examples/bluetooth/bluedroid/ble/blufi 这个示例呢。
另外,你也可以参考一下 examples/bluetooth/bluedroid/ble/blufi 这个示例呢。
Who is online
Users browsing this forum: No registered users and 182 guests