蓝牙技术
直播中

陈伟

8年用户 1572经验值
私信 关注
[问答]

CYBT-413061上的RFCOMM_Serial_Port SPP演示,AIROC客户端控制应用程序不起作用,什么原因引起的?

我在定制电路板上使用 CYBT-413061 模块 (CYW20721B2),并尝试在 ModusToolbox 3.2 中运行 RFCOMM_Serial_Port SPP 演示。 代码似乎加载正常,但当启动客户端控制应用程序并打开串行端口时,却什么也没发生--所有控件都是灰色的。 然后,我还按照说明中的建议从 Windows 10 PC 上运行 BTSpy 并进行连接 - 客户端控制应用程序似乎可以连接(不再显示为灰色),但在按下任何按钮时都不会发生任何情况。 不过,BTSpy 似乎什么都能显示,比如在 Windows/TeraTerm BTSpy 上按键时,它会显示信息,但在客户端控制应用程序 SPP 标签或信息窗口上却什么都不显示。
会出什么问题呢?

回帖(1)

哥儿

2025-7-7 17:17:25

根据您的描述,问题可能由以下原因之一引起。请按照以下步骤逐一排查:


1. UART连接问题



  • 根本原因:开发板与客户端控制应用程序的物理串口连接错误。

  • 解决方案

    1. 确认模块的 TX/RX引脚 正确连接到USB转串口芯片(如FTDI)。

    2. 使用 TeraTermPuTTY 连接模块的UART日志端口(默认波特率115200),检查启动日志是否包含:
      SPP Server Started
      Bluetooth device is ready

    3. 如果无日志输出:

      • 检查开发板供电和复位引脚

      • 重新烧录固件(确认编程接口接触良好)




2. SPP服务注册异常



  • 根本原因:蓝牙协议栈未正确注册SPP服务。

  • 解决方案

    1. 在代码中搜索 wiced_bt_spp_register() 函数,确认回调函数已注册:
      wiced_bt_spp_register(app_spp_callback); // 确保调用成功

    2. 在日志中检查是否有 SPP service registered successfully 消息。

    3. 如果未注册,检查 wiced_bt_stack_init() 是否返回成功(BTM_ENABLED状态)。



3. 客户端控制应用配置错误



  • 根本原因:应用未正确选择SPP通道。

  • 解决方案

    1. 打开客户端控制应用 → SPP标签页

    2. 不要点击"Open Port",而是:

      • 在"Services"列表中找到您的设备

      • 右键点击选择 Connect RFCOMM Channel

      • 选择正确的通道号(默认是1)


    3. 成功连接后,发送AT指令测试(如 AT+NAME?rn



4. BTSpy干扰问题



  • 根本原因:BTSpy占用了RFCOMM通道导致冲突。

  • 解决方案

    1. 先关闭所有串口工具和BTSpy

    2. 重启模块

    3. 单独用客户端控制应用操作:

      • 只打开客户端 → SPP标签页 → 搜索设备 → 连接通道1




5. 代码修改验证



  • 关键检查点

    • 确认 wiced_bt_cfg.c 中启用了SPP:
      #define BTA_SPP_INCLUDED      TRUE

    • 验证SPP回调函数处理数据发送:
      static void app_spp_callback(uint32_t event, ...) {
      case SPP_DATA_IND_EVT:
         // 转发收到的数据到UART
         wiced_hal_uart_transmit_bytes(UART_LOG, p_data->data.p_data, p_data->data.len);
         break;
      }

    • 检查UART接收转发逻辑:
      void uart_rx_callback(void) {
      uint8_t data;
      wiced_hal_uart_read_byte(&data);
      wiced_bt_spp_send_data(spp_handle, &data, 1); // 转发到SPP
      }



6. 硬件特定问题



  • 定制板注意点

    1. 确认 CYW20721B2的32.768kHz晶振 起振正常(用示波器检查)

    2. 测量 VBAT电压 ≥ 3.0V(建议3.3V)

    3. 检查 PCM/I2S引脚 未意外连接(若未使用需悬空)



7. 替代测试方案


使用手机验证SPP功能:



  1. 安装 "Serial Bluetooth Terminal" (Android) 或 "LightBlue" (iOS)

  2. 连接模块的SPP服务

  3. 发送数据 → 查看模块UART日志是否有输出


调试流程图


graph TD
    A[问题现象] --> B{物理串口连接}
    B -->|无日志| C[检查供电/UART引脚]
    B -->|有日志| D{SPP注册成功?}
    D -->|失败| E[验证协议栈初始化]
    D -->|成功| F{客户端APP连接方式}
    F --> G[用'Connect RFCOMM'代替'Open Port']
    G -->|仍失败| H[禁用BTSpy后重试]
    H -->|成功| I[BTSpy冲突]
    H -->|失败| J[手机SPP测试]
    J -->|正常| K[PC端驱动/应用问题]
    J -->|失败| L[代码/硬件问题]

请优先执行 第3步(客户端操作修正)第7步(手机测试)。若手机能正常通信,则问题集中在PC端配置;若手机也失败,则需深入检查模块固件和硬件。

举报

更多回帖

发帖
×
20
完善资料,
赚取积分