You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

寻求CSR 8675非USB版Bluetooth AG(source)开发示例与指导

针对CSR 8675 简易Bluetooth AG(Source)开发的解决方案

核心问题定位

ADK 4.3.1的AG示例默认绑定USB dongle逻辑,依赖USB链路完成初始化、配置同步等流程,无USB时会触发初始化失败分支,导致功能无法启动。

关键修改步骤

1. 剥离USB依赖逻辑

  • 找到示例中usb_init()、usb_configure()相关调用,直接注释或替换为模拟初始化逻辑:
    // 原USB初始化代码
    // usb_init(AG_USB_VENDOR_ID, AG_USB_PRODUCT_ID);
    // 替换为模拟初始化,跳过USB检测
    ag_state = AG_STATE_INITIALIZED;
    
  • 修改ag_main.c中的启动判断逻辑,移除“USB连接状态检查”的分支:
    // 移除如下类似判断
    // if (!usb_connected()) {
    //     message_send(AG_MESSAGE_USB_DISCONNECTED);
    //     return;
    // }
    

2. 配置PIO11作为配对触发按键

  • 在pio_config.h中定义PIO11为输入模式:
    #define PIO_PAIR_KEY 11
    #define PIO_PAIR_KEY_FLAGS PIO_INPUT | PIO_PULL_UP
    
  • 在ag_input.c中添加PIO中断处理逻辑:
    static void pair_key_handler(pio_t pio, pio_event_mask_t events) {
        if (events & PIO_EVENT_FALL) { // 下拉触发配对
            if (ag_state == AG_STATE_IDLE) {
                gap_start_discovery(GAP_DISCOVERY_MODE_GENERAL, GAP_DISCOVERY_FILTER_ALL);
            } else if (ag_state == AG_STATE_CONNECTED) {
                gap_disconnect(AG_CONN_HANDLE);
            }
        }
    }
    
    // 在input_init()中注册按键
    pio_set_event_handler(PIO_PAIR_KEY, PIO_EVENT_FALL, pair_key_handler, NULL);
    pio_configure(PIO_PAIR_KEY, PIO_PAIR_KEY_FLAGS);
    

3. 调整AG运行模式为独立模式

  • 在bluestack_config.h中修改配置,禁用USB相关服务:
    #define ENABLE_USB_SERVICE FALSE
    #define AG_RUN_MODE AG_MODE_STANDALONE // 新增独立模式宏
    
  • 在ag_init.c中初始化时设置GAP角色为Source:
    gap_set_role(GAP_ROLE_SOURCE);
    gap_set_discoverable_mode(GAP_DISCOVERABLE_MODE_LIMITED);
    gap_set_connectable_mode(TRUE);
    

编译与调试注意事项

  • 使用ADK 4.3.1编译时,需在工程配置中取消USB_SUPPORT编译选项;
  • 烧录后通过UART日志查看初始化流程,重点确认AG_STATE_INITIALIZED是否正常触发;
  • 配对测试时,确保蓝牙设备处于可发现状态,按下PIO11后可通过日志查看发现设备列表。

内容的提问来源于stack exchange,提问作者Julia

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 19:42:05