VSFBoard + CSR8510 USB蓝牙

[复制链接]
409|0
 楼主 | 2018-9-6 13:57 | 显示全部楼层 |阅读模式
本帖最后由 vsfopen 于 2018-9-6 14:06 编辑

协议栈使用btstack,实例代码位于usrapp/bluetooth下,测试demo使用了btstack自带的gap_inquiry。CSR8510应该是目前最常见的USB蓝牙狗了:
bt_dongle.jpg

下载btstack的最新代码到vsf/component/3rd下,btstack需要做一下修改:
1. hci.c文件中,修改HCI_RESET_RESEND_TIMEOUT_MS参数为2000,以前的延时时间太短,不够复位后,USB设备重新枚举
2. gap_inquiry.c中,把printf修改为vsfdbg_printf

下载运行后,打开串口,插入CSR8510的USB蓝牙狗,显示如下:
btstack.png



VSF中已经提供了btstack的framework移植代码,包括h2和h4的HCI接口驱动。
应用层可以简单调用对应的btstack_main:
  1. #include "btstack_event.h"
  2. #include "btstack_run_loop.h"
  3. #include "btstack_memory.h"
  4. #include "hci.h"
  5. #include "btstack_chipset_csr.h"
  6. #include "btstack_run_loop_vsf.h"

  7. int btstack_main(int argc, const char * argv[]);
  8. static void usrapp_on_new_bthci(void *dev, struct vsfusbh_device_id_t *id)
  9. {
  10.         if ((id->idVendor == 0x0A12) && (id->idProduct == 0x0001))
  11.         {
  12.                 btstack_memory_init();
  13.                 btstack_run_loop_init(btstack_run_loop_vsf_get_instance());
  14.                 hci_init(hci_transport_usb_instance(), dev);
  15.                 hci_set_chipset(btstack_chipset_csr_instance());
  16.                 btstack_main(0, NULL);
  17.         }
  18. }

  19. static void usrapp_usbd_conn(void *p)
  20. {
  21.         struct usrapp_t *app = (struct usrapp_t *)p;

  22.         vsfusbd_device_init(&app->usbd.device);
  23.         vsfusbd_connect(&app->usbd.device);
  24.         if (app_hwcfg.usbd.pullup.port != VSFHAL_DUMMY_PORT)
  25.                 vsfhal_gpio_set(app_hwcfg.usbd.pullup.port, 1 << app_hwcfg.usbd.pullup.pin);

  26.         vsfusbh_init(&usrapp.usbh.usbh);
  27.         vsfusbh_register_driver(&usrapp.usbh.usbh, &vsfusbh_hub_drv);
  28.         vsfusbh_bthci_config_cb(usrapp_on_new_bthci, NULL, NULL);
  29.         vsfusbh_register_driver(&usrapp.usbh.usbh, &vsfusbh_bthci_drv);
  30. }
复制代码
在检测到USB蓝牙狗的时候,驱动回调应用层的usrapp_on_new_bthci函数,然后简单启动btstack,最后调用btstack_main。
由于btstack本身就是事件驱动的状态机,所以可以和VSF其他功能同时运行,互不干扰。

使用特权

评论回复
扫描二维码,随时随地手机跟帖
您需要登录后才可以回帖 登录 | 注册

本版积分规则

我要发帖 投诉建议 创建版块 申请版主

快速回复

您需要登录后才可以回帖
登录 | 注册
高级模式

论坛热帖

在线客服 快速回复 返回顶部 返回列表