配置BLE为client端,scan之后无设备列表输出

Viewed 8

一、描述你遇到的问题

用全功能的固件(无任何修改),烧写之后,使用AT指令配置BLE为client端,
执行AT+BLESTARTSCAN之后显示OK 但是无设备列表输出,包括蓝牙名和mac地址都没有?
如何查看当前扫描到的设备列表,需要往上层上报。

二、你具体做的所有步骤结果截图


三、当前开发板状态全景照片

请插入图片

四、开发板串口所有日志

请在此处粘贴串口日志

2 Answers

根据您提供的截图和《H3863 通用 AT 命令手册》,您无法看到扫描结果的原因是缺少了注册 GAP 回调函数的指令

扫描周边的蓝牙设备属于 GAP (Generic Access Profile) 层的功能,只有注册了 GAP 回调,系统才会将扫描到的设备信息(如 MAC 地址、RSSI、广播数据)通过串口主动上报打印出来。

解决方法

在执行 AT+BLESTARTSCAN 之前,您必须执行 AT+BLEGAPREGCBK

正确的指令顺序应为:

  1. AT+BLEENABLE
    • (使能协议栈)
  2. AT+BLEGAPREGCBK
    • [cite_start][关键缺失步骤] 注册 GAP 回调。只有执行了这一步,扫描结果才会以 +BLEGAPSCANREPORT... 或类似格式打印出来 [cite: 827, 967]。
  3. AT+GATTCREGCBK
    • (您已执行,这是用于 GATT 层服务发现的回调,与扫描设备无关,但作为 Client 也是必须的)
  4. AT+GATTCREG=0x3434
    • (创建 Client)
  5. AT+BLESETSCANPAR=0x48,0x48,1,1,0
    • (设置扫描参数,您截图中使用的是 1 主动扫描,这比被动扫描更容易获取到设备名称)
  6. AT+BLESTARTSCAN
    • (开始扫描)

依据来源

[cite_start]参考手册 4.1.3 BLE AT 命令使用场景示例 (第 86 页) 中的 Client 端初始化流程 [cite: 965, 967]:

BLE client 端:
AT+BLEENABLE
AT+GATTCREGCBK
AT+BLEGAPREGCBK <-- 您的截图中缺少此条
AT+GATTCREG=0x1212
...

预期结果

执行 AT+BLEGAPREGCBK 后,再次启动扫描,您应该能在串口看到类似如下的主动上报信息(具体格式取决于固件实现,通常包含 MAC 和 RSSI):

// 示例(仅供参考,具体格式以实际固件为准)
+BLEGAPSCANREPORT: <mac_addr>, <rssi>, <adv_data>...

建议: 请复位模块或停止当前扫描,按照上述包含 AT+BLEGAPREGCBK 的顺序重新初始化即可。

好的谢谢,有效。

嗯,这种问题把文档丢给AI,直接问AI就行