寻求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
相关产品推荐
相关产品推荐

