【Silicon Labs BG22-EK4108A 蓝牙开发评测】三:Bluetooth-Soc Blinky 例程开发体验

jj1989   2022-1-23 22:50 楼主

【Silicon Labs BG22-EK4108A 蓝牙开发评测】三:官方 Bluetooth-Soc Blinky 例程开发体验

前言

上次通过官方提供的名为 Bluetooth-NCP 的 Demo,简单体验了 Simplicity Studio 这款 IDE 的易用性和便利性。这次以官方例程为模板,创建一个工程,深入体验该 IDE。

工程创建

1.png

在 EXAMPLE PROJECT & DEMOS 菜单下,提供了很多例程,这里选择 Bluetooth-Soc Blinky 例程,点击“ CREATE ”按钮,根据提示完成工程导入建立。

 

2.png

工程建立好后,首先展示的是一个 readme 文档。该文档对该例程的功能及使用做了详细的介绍。文档一开始提到,此项目可以说是 BLE 开发的 “hello world”。因此打算学习 BLE 的朋友,不妨从这个例程开始上手。

 

IDE 功能体验

GATT配置

GATT 的配置与上次使用的 Bluetooth NCP Commander 工具类似,采用图形化的方式配置 GATT,相对于源码配置更加简明、直观。如下图:

3.png

查看 LED Control 特征,可以直接修改 UUID。对于特征属性,只需要动几下鼠标即可完成配置。如下图: 

4.png

引脚配置

打开后缀名为 pintool 的文件,同样是以图形化的方式对芯片 IO 进行配置。如下图: 

5.png

源码分析

该应用的功能为当按下开发板上的 BTN0,会将按键状态以 BLE 通知的形式发给主机端(手机)。主机端可以通过 BLE Write 的方式,控制开发板上 LED0 的亮灭。具体来看源码:

在 app.c 文件的 sl_bt_on_event() 函数中,控制 LED0 的代码如下:

        if (data_recv == 0x00) {
          sl_led_turn_off(SL_SIMPLE_LED_INSTANCE(0));
          app_log_info("LED off.n");
        } else if (data_recv == 0x01) {
          sl_led_turn_on(SL_SIMPLE_LED_INSTANCE(0));
          app_log_info("LED on.n");
        } else {
          app_log_error("Invalid attribute value: 0x%02xn", (int)data_recv);
        }

当 BLE 接收到的数据为 0x00 时,将熄灭 LED0,当接收到的数据为 0x01 时,将点亮LED0。 update_report_button_characteristic() 函数中,按键 BTN0 的状态处理代码如下:

  switch (sl_button_get_state(SL_SIMPLE_BUTTON_INSTANCE(0))) {
    case SL_SIMPLE_BUTTON_PRESSED:
      data_send = (uint8_t)SL_SIMPLE_BUTTON_PRESSED;
      break;

    case SL_SIMPLE_BUTTON_RELEASED:
      data_send = (uint8_t)SL_SIMPLE_BUTTON_RELEASED;
      break;

    default:
      // Invalid button state
      return SL_STATUS_FAIL; // Invalid button state
  }

即 BTN0 处于按下状态时,发送数据为 0x01。处于释放状态时,发送数据为 0x00。

测试

官方提供了一个名为 EFR Connect 的移动端 APP,用于进行 BLE 的测试,并在 github 上公开了源码

这里本人仍然使用 Lightblue 进行测试。执行编译、烧录、运行,让我们的代码在 BG22-EK4108A 套件上跑起来,然后打开手机 APP 进行连接。

之后进行测试,按下按键,APP 端会收到按键状态通知,如下:

button.gif

APP 端发送数据,控制 LED 灯亮灭,如下:

led.gif

总结

不得不说,BG22-EK4108A 套件的开发体验做得太好了。Simplicity Studio 几乎集成了开发者所需要的所有资源。在这个 IDE 中,除了基本的编码,调试等功能外,还集成了各种开发工具、例程、文档。你不需要再跑去官网找资料,也不需要再额外安装其他软件,有 Simplicity Studio 足矣。

 

本帖最后由 jj1989 于 2022-1-23 22:51 编辑

回复评论

暂无评论,赶紧抢沙发吧
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复