【经验】蓝牙SoC EFR32BG22增加Button功能并发送Notify数据包的方法
本文以SILICON LABS蓝牙SoC EFR32BG22的Thunderboard模块为例,介绍如何使用Simplicity Studio v5软件在蓝牙soc_empty工程中添加Button功能,并向手机发送Notify数据包的方法。
1、按照文章:【经验】Simplicity Studio v5如何创建和配置EFR32BG22 LED Server,先创建好支持LED Server的soc_empty工程。
2、打开soc_empty.slcp文件,点击SOFTWARE COMPENENTS,在右上角的搜索栏输入button,点击搜索到的Simple Button,点击右上角的Install,
在弹出的页面直接点击Done。
3、点击Simple Button右边的Configure,
选择按键是使用中断触发还是轮询方式,选择按键对应的引脚,本文以PB01引脚的中断触发方式为例。
4、打开gatt_configuration.btconf文件,点击Custom Service,点击Add New Item图标,点击New Characteristic,可以看到Custom Service下面增加了一个Custom Characteristic。
5、点击Custom Characteristic,将右边的Name改为BTN;勾选ID,将ID设置为BTN;将SIG type设置为custom.type;勾选User Description,将User Description设置为BTN;勾选Notify。
6、打开app.c文件,添加button实例的宏定义代码:#include "sl_simple_button_instances.h"。
7、在app.c文件中添加以下变量的定义。
// These variables need to be added and are used for the connection handle
// and the notification parameters to send Button data to the mobile app
uint8_t g_lab4Connection;
uint8_t notification_data[1] = {0};
uint16_t notification_len = 0;
uint8_t notifyEnabled = false;
extern sl_simple_button_context_t simple_btn0_context;
8、在app.c文件的Application Init上面,添加如下代码。
/*
* Override function for button press that needs to be added. This function is
* called in interrupt context and uses the Bluetooth stack external signaling.
*/
void sl_button_on_change(const sl_button_t *handle)
{
sl_simple_button_context_t *ctxt = ((sl_simple_button_context_t *)handle[0].context);
if (ctxt->state) {
ctxt->history += 1;
sl_bt_external_signal(1);
}
}
9、在app.c文件的sl_bt_on_event()函数中,找到sl_bt_evt_connection_opened_id事件,并在事件下面添加如下代码。
// When sending notifications we need the connection handle. Capture it here
g_lab4Connection = evt->data.evt_connection_opened.connection;
10、在app.c文件的sl_bt_on_event()函数中,在Default event handler前面,添加如下的sl_bt_evt_system_external_signal_id事件处理代码。
case sl_bt_evt_system_external_signal_id:
/* Process external signals */
if (notifyEnabled) {
if (evt->data.evt_system_external_signal.extsignals == 1) // 1 = BTN0
{
notification_data[0] = (uint8_t)simple_btn0_context.history;
//simple_btn0_context.history = 0;
// send number of button presses
sc = sl_bt_gatt_server_send_characteristic_notification(
g_lab4Connection, gattdb_BTN, sizeof(notification_data),
notification_data, ¬ification_len);
}
}
break;
11、继续在Default event handler前面,添加如下的sl_bt_evt_gatt_server_characteristic_status_id事件处理代码。
case sl_bt_evt_gatt_server_characteristic_status_id:
if ((evt->data.evt_gatt_server_characteristic_status.characteristic == gattdb_BTN)
&& (evt->data.evt_gatt_server_characteristic_status.status_flags == 0x01)) {
if (evt->data.evt_gatt_server_characteristic_status.client_config_flags == 0x00) {
notifyEnabled = false;
}
else {
notifyEnabled = true;
}
}
break;
12、保存所有文件,编译程序,并将固件下载到EFR32BG22模块中。
13、打开手机EFR Connect APP,点击Browser,点击Filter,在搜索栏Search by device name or address中输入LED,再点击Search。
14、点击搜索到的LED右边的Connect,
点击Unknown service下面的More Info,
点击Notify,再点击Log。
15、按下EFR32BG22模块上的按键,可以看到Log中出现OnCharacteristicChanged的Notify数据。
- |
- +1 赞 0
- 收藏
- 评论 0
本文由潮汕小菜提供,版权归世强硬创平台所有,非经授权,任何媒体、网站或个人不得转载,授权转载时须注明“来源:世强硬创平台”。
相关推荐
【经验】芯科科技EFR32BG22系列蓝牙SOC修改自定义广播包的思路与具体实例
在蓝牙的实际应用中,往往需要自定义的蓝牙广播包来适应不同的应用环境,本文主要介绍基于SILICON LABS的EFR32BG22蓝牙SOC实现自定义广播数据包的方法。
【经验】STUDIO V5中蓝牙SoC EFR32BG22添加串口LOG打印的方法
在调试Silicon Labs蓝牙SoC EFR32BG22时,一般需要添加LOG打印信息,通过串口的方式来判断代码运行是否正常。由于使用RTT功能在打印信息时无法再次在线调试和代码下载,所以直接采用串口的方式更加便捷。
【经验】Silicon Labs的蓝牙SoC EFR32BG22如何进行在线的OTA升级?
Silicon Labs的蓝牙SOC EFR32BG目前已经能够支持到蓝牙5.2,工艺升级后的EFR32BG22的功耗能够达到接收4.1mA,0dbm发射功耗3.6mA,休眠功耗低至1.4uA,如此低的功耗,能够大幅延长蓝牙设备的电池续航时间。本文介绍蓝牙SoC EFR32BG22如何进行在线的OTA升级。
BG24蓝牙SoC具备低功耗、小型化等特性,为CoreHW提供蓝牙RTLS的先进解决方案
Silicon Labs(亦称“芯科科技”)的BG24蓝牙SoC具备低功耗、小型化等特性,并支持蓝牙定位技术包括蓝牙到达角(AoA)和蓝牙信道探测(Channel Sounding),为CoreHW公司提供了最先进的实时定位服务(RTLS) 解决方案,以开发出创新的CoreTag和CoreLocator定位应用产品。
【应用】EFR32BG22蓝牙SoC用做CGM连续血糖仪主控,单芯片集成MCU和蓝牙5.2
CGM连续血糖仪为了用户体验更好,要做到小而轻,续航时间长,可以通过手机蓝牙连接获取血糖测量数据。Silicon Labs的蓝牙SoC EFR32BG22在单芯片中集成了MCU和蓝牙5.2,可以作为CGM的主控芯片并实现蓝牙数据收发,有丰富的外设。
EFR32BG2x系列蓝牙SoC如何配置外接FEM引脚,驱动FEM?
Silicon Labs公司的EFR32BG21或者EFR32BG2x系列的蓝牙SoC最大可以支持20dBm的发射功率,以及非常优秀的接收灵敏度。本文以BG21评估板SLWRB4181A,基于GSDK 4.4.1,介绍如何快速配置BG21实现FEM适配。
【经验】Silicon Labs蓝牙Soc芯片EFR32BG22的蓝牙广播功率设置及注意事项
用户在使用Silicon Labs的蓝牙Soc芯片EFR32BG22实现蓝牙广播功能时,在不同的应用场景中要设置广播的发射功率,有的是为了降低产品的功耗,有的是为了增加或缩短通信的距离。那要如何设置广播时的功耗以及在设置时有哪些需要注意的事项?
【经验】低功耗蓝牙SoC EFR32BG22系列如何从软硬件两方面实现低功耗设计?
EFR32BG22是Silicon Labs公司主打的低功耗蓝牙SoC系列,对于新手工程师来说,如何控制好功耗,以延长电池类产品的寿命,有很多需要关注的地方。本文将从硬件和代码底层两方面分析SoC低功耗实现的关键点。
【经验】Silicon Labs蓝牙SoC在开启了串口后,如何降低功耗?
在调试Silicon Labs的蓝牙SoC时,我们需要打开串口日志输出以方便调试,但是在添加了Log和IO Stream:USART组件后,可以看到日志可以输出了,但是随之EM2休眠功耗却降不下去了,这是由于添加了串口后,默认串口在EM2下是开启的,导致EM2下功耗会比较高,本文将以EFR32BG27为例,指导如何在添加了串口后降低串口功耗。
【经验】EFR32BG22系列蓝牙SOC电池电压与VDD供电电压检测ADC的方法
EFR32BG22作为低功耗蓝牙SOC方案,经常应用于电池供电的方案中,一般采用内部的ADC作为采集通道,内部的输入源作为输入接口,来测试VDD供电电压。本文将讲解电池电压与VDD供电电压检测ADC的方法。
【经验】EFR32BG系列蓝牙SoC之低功耗测试操作指导
很多的蓝牙设备都是电池供电的,因此对蓝牙SoC功耗水平测试与评估就非常有必要。Silicon Labs公司提供的蓝牙评估板底板,都带有电流功耗测试功能,搭配Simplicity studio v4开发平台的energy profile功耗测试上位机,非常容易测试出EFR32BG系列蓝牙SoC的功耗水平。我们详细介绍功耗测试需要的软件和硬件以及测试操作。本文就将具体进行说明。
洞悉标准化蓝牙ESL应用潜力,芯科科技全系列低功耗、高性能蓝牙SoC和模块现已支持最新蓝牙5.4版本
随着蓝牙标准的推陈出新,Silicon Labs(亦称“芯科科技”)也持续升级蓝牙解决方案,全系列低功耗、高性能蓝牙SoC和模块现已支持最新蓝牙5.4版本,以满足开发人员的需求。
【经验】无线蓝牙SoC EFR32BG22用户自定义数据存取接口NVM使用指导
在使用EFR32BG22开发应用时,大部分应用需要保存一些参数,很多开发者不清楚BG22对数据进行存取的接口是哪个,本文将介绍Silicon Labs无线蓝牙SoC EFR32BG22上对数据进行存取的接口——NVM的使用。
【经验】芯科科技EFR32BG22系列蓝牙SOC低功耗优化的相关配置
本文主要介绍Silicon Labs(芯科科技)EFR32BG22系列蓝牙SOC目前所有的低功耗优化的相关配置,实现目标: VDD=3V,VSCALE0=0.9V,温度25℃,EM2模式下深度休眠为1.4μA。
规格升级,Silicon Labs的全系列低功耗、高性能蓝牙SoC和模块支持最新蓝牙5.4版本
Silicon Labs的全系列低功耗、高性能蓝牙SoC和模块现已支持最新蓝牙5.4版本。今年早些时候发布的蓝牙5.4新版标准引来了众多开发人员的注目。特别是该标准增加了两个特性,周期性广告响应(PAwR)和加密广告数据(EAD),可望受到正日益增长的电子货架标签(ESL)市场的热烈欢迎。
电子商城
品牌:SILICON LABS
品类:Wireless Gecko SoC
价格:¥8.1764
现货: 101,879
现货市场
品牌:SILICON LABS
品类:Switch Hall Effect Magnetic Position Sensor
价格:¥2.2924
现货:126,000
服务
提供语音芯片、MP3芯片、录音芯片、音频蓝牙芯片等IC定制,语音时长:40秒~3小时(外挂flash),可以外挂TF卡或U盘扩容。
最小起订量: 1pcs 提交需求>
提供蓝牙BLE芯片协议、蓝牙模块、蓝牙成品测试认证服务;测试内容分Host主机层,Controller控制器层,Profile应用层测试。支持到场/视频直播测试,资深专家全程指导。
实验室地址: 深圳 提交需求>
登录 | 立即注册
提交评论