完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我所用的设备是合宙的esp32c3,所用的编辑器为vscode,idf的版本应该是4.3-4.4左右。例程中我主要更改了passkey和输入方式,在配对时手动输入pin码进行配对,在进行重启手机,复位芯片,更换芯片之后,手机的蓝牙界面一直都无法进行连接,尽管已经配对上了,app_main的代码如下:Code: Select all
void app_main(void){ esp_err_t ret; // Initialize NVS. ret = nvs_flash_init(); if (ret == ESP_ERR_NVS_NO_FREE_PAGES || ret == ESP_ERR_NVS_NEW_VERSION_FOUND) { ESP_ERROR_CHECK(nvs_flash_erase()); ret = nvs_flash_init(); } ESP_ERROR_CHECK( ret ); ESP_ERROR_CHECK(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) { ESP_LOGE(GATTS_TABLE_TAG, "%s init controller failed: %s", __func__, esp_err_to_name(ret)); return; } ret = esp_bt_controller_enable(ESP_BT_MODE_BLE); if (ret) { ESP_LOGE(GATTS_TABLE_TAG, "%s enable controller failed: %s", __func__, esp_err_to_name(ret)); return; } ESP_LOGI(GATTS_TABLE_TAG, "%s init bluetooth", __func__); ret = esp_bluedroid_init(); if (ret) { ESP_LOGE(GATTS_TABLE_TAG, "%s init bluetooth failed: %s", __func__, esp_err_to_name(ret)); return; } ret = esp_bluedroid_enable(); if (ret) { ESP_LOGE(GATTS_TABLE_TAG, "%s enable bluetooth failed: %s", __func__, esp_err_to_name(ret)); return; } ret = esp_ble_gatts_register_callback(gatts_event_handler); if (ret){ ESP_LOGE(GATTS_TABLE_TAG, "gatts register error, error code = %x", ret); return; } ret = esp_ble_gap_register_callback(gap_event_handler); if (ret){ ESP_LOGE(GATTS_TABLE_TAG, "gap register error, error code = %x", ret); return; } ret = esp_ble_gatts_app_register(ESP_HEART_RATE_APP_ID); if (ret){ ESP_LOGE(GATTS_TABLE_TAG, "gatts app register error, error code = %x", ret); return; } /* set the security iocap & auth_req & key size & init key response key parameters to the stack*/ esp_ble_auth_req_t auth_req = ESP_LE_AUTH_REQ_SC_MITM_BOND; //bonding with peer device after authentication esp_ble_io_cap_t iocap = ESP_IO_CAP_OUT; //set the IO capability to No output No input uint8_t key_size = 16; //the key size should be 7~16 bytes uint8_t init_key = ESP_BLE_ENC_KEY_MASK | ESP_BLE_ID_KEY_MASK; uint8_t rsp_key = ESP_BLE_ENC_KEY_MASK | ESP_BLE_ID_KEY_MASK; //set static passkey uint32_t passkey = 100101; uint8_t auth_option = ESP_BLE_ONLY_ACCEPT_SPECIFIED_AUTH_DISABLE; uint8_t oob_support = ESP_BLE_OOB_DISABLE; esp_ble_gap_set_security_param(ESP_BLE_SM_SET_STATIC_PASSKEY, &passkey, sizeof(uint32_t)); esp_ble_gap_set_security_param(ESP_BLE_SM_AUTHEN_REQ_MODE, &auth_req, sizeof(uint8_t)); esp_ble_gap_set_security_param(ESP_BLE_SM_IOCAP_MODE, &iocap, sizeof(uint8_t)); esp_ble_gap_set_security_param(ESP_BLE_SM_MAX_KEY_SIZE, &key_size, sizeof(uint8_t)); esp_ble_gap_set_security_param(ESP_BLE_SM_ONLY_ACCEPT_SPECIFIED_SEC_AUTH, &auth_option, sizeof(uint8_t)); esp_ble_gap_set_security_param(ESP_BLE_SM_OOB_SUPPORT, &oob_support, sizeof(uint8_t)); /* If your BLE device acts as a Slave, the init_key means you hope which types of key of the master should distribute to you, and the response key means which key you can distribute to the master; If your BLE device acts as a master, the response key means you hope which types of key of the slave should distribute to you, and the init key means which key you can distribute to the slave. */ esp_ble_gap_set_security_param(ESP_BLE_SM_SET_INIT_KEY, &init_key, sizeof(uint8_t)); esp_ble_gap_set_security_param(ESP_BLE_SM_SET_RSP_KEY, &rsp_key, sizeof(uint8_t)); /* Just show how to clear all the bonded devices * Delay 30s, clear all the bonded devices * * vTaskDelay(30000 / portTICK_PERIOD_MS); * remove_all_bonded_devices(); */} 随后芯片从启动到配对蓝牙的日志如下,我看了一下应该是没有问题的,但点击手机的蓝牙选项卡就是没有连接的反应(小米10s) ---- 已打开串行端口 COM4 ----已经尝试了许多方法未曾解决,希望能得到各位的帮助,谢谢! |
|
相关推荐
1个回答
|
|
根据您提供的信息,您在使用ESP32-C3设备和VSCode编辑器,以及ESP-IDF版本4.3-4.4。您在使用ble_gatt_server例程时,遇到了手机可以配对但无法连接的问题。以下是一些建议来解决这个问题:
1. 检查BLE服务和特征设置是否正确。确保您在代码中正确定义了服务和特征,并设置了正确的属性和权限。 2. 确保您的ESP32-C3设备已经正确配置为BLE GATT服务器。检查ble_gatt_server例程中的初始化代码,确保BLE已经启动并设置为可发现和可连接。 3. 检查您的手机蓝牙设置。确保手机的蓝牙已经打开,并且没有连接到其他设备。尝试忘记之前配对的设备,然后重新配对。 4. 检查ESP32-C3设备的日志输出。使用ESP-IDF的log系统,检查是否有任何错误或警告信息。这可以帮助您确定问题所在。 5. 尝试使用其他手机或设备进行配对和连接。这可以帮助您确定问题是否与特定设备有关。 6. 检查您的ESP32-C3设备是否有足够的电源。如果电源不稳定或不足,可能会导致连接问题。 7. 确保您的ESP-IDF版本与您的设备兼容。虽然您提到使用的是4.3-4.4版本,但建议您查看官方文档,确保这是与ESP32-C3兼容的版本。 8. 如果问题仍然存在,您可以尝试在ESP-IDF的GitHub仓库中搜索类似的问题或报告,看看是否有其他开发者遇到了类似的问题,并找到了解决方案。 希望这些建议能帮助您解决问题。如果问题仍然存在,请提供更多详细信息,以便我们能够更好地帮助您。 |
|
|
|
只有小组成员才能发言,加入小组>>
1012 浏览 1 评论
557浏览 6评论
464浏览 5评论
有没有办法在不使用混杂模式的情况下实现Wifi驱动程序接收缓冲区访问中断呢?
449浏览 5评论
449浏览 4评论
424浏览 4评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-1 10:15 , Processed in 0.862909 second(s), Total 81, Slave 64 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号