【经验】蓝牙SoC芯片EFR32BG22实现蓝牙一对多数据采集及控制的方法
SILICON LABS的蓝牙SoC EFR32BG22可以实现16个以上的蓝牙同时连接,目前使用SSV5下的SOC_THERMOMETER与SOC_THERMOMETER_CLIENT两个程序实现了蓝牙一对多的数据采集的功能。
SOC_THERMOMENTER程序是GATT服务器,实现对温度的采集,通过GATT提供数据给客户端。SOC_THEMOMETER_CLIENT程序是GATT客户端程序,程序通过read、write、notify、indicate访问服务器上的数据,在本例中通过indicate访问温度数据。
为了实现一对多的控制,程序中需要对连接句柄、服务句柄、特征句柄保存到数组中,以便于同时控制这些设备。在连接事件产生后,首先将连接句柄保存到数组中,同时保存蓝牙MAC地址的最后两位,便于后续识别设备,在新的服务与特征事件产生后也要保存相应的句柄,而且要保存到对应的连接句柄之下,这样就可以实现对多个设备的同时控制。
// -------------------------------
// This event is generated when a new connection is established
case sl_bt_evt_connection_opened_id:
addr_value = (uint16_t)(evt->data.evt_connection_opened.address.addr[1] << 8) + evt->data.evt_connection_opened.address.addr[0];
// Add connection to the connection_properties array
add_connection(evt->data.evt_connection_opened.connection, addr_value);
// This event is generated when a new service is discovered
case sl_bt_evt_gatt_service_id:
table_index = find_index_by_connection_handle(evt->data.evt_gatt_service.connection);
if (table_index != TABLE_INDEX_INVALID) {
// Save service handle for future reference
conn_properties[table_index].thermometer_service_handle = evt->data.evt_gatt_service.service;
}
break;
// This event is generated when a new characteristic is discovered
case sl_bt_evt_gatt_characteristic_id:
table_index = find_index_by_connection_handle(evt->data.evt_gatt_characteristic.connection);
if (table_index != TABLE_INDEX_INVALID) {
// Save characteristic handle for future reference
conn_properties[table_index].thermometer_characteristic_handle = evt->data.evt_gatt_characteristic.characteristic;
}
break;
客户端的程序中只实现了控制服务器发送温度数据,并没有控制停止采集的功能,下面可以通过加入一个简单的按键功能,实现控制服务器是否发送温度数据的功能。
在项目的配置文件中查找button的驱动并安装:
操作后可以对BUTTON的GPIO口及极性做出设置,如果是使用THUNDERBOARD板或EFR32XG22的开发板,BUTTON的设置可以使用默认设置,不需要做修改,如果是自己做的板,要对GPIO和极性做对应的设置。
void sl_button_on_change(const sl_button_t *handle)
{
// Button pressed.
if (sl_button_get_state(handle) == SL_SIMPLE_BUTTON_PRESSED) {
if (&sl_button_btn0 == handle) {
sl_led_turn_on(&sl_led_led0);
}
}
// Button released.
else if (sl_button_get_state(handle) == SL_SIMPLE_BUTTON_RELEASED) {
if (&sl_button_btn0 == handle) {
sl_led_turn_off(&sl_led_led0);
sl_bt_external_signal(Start_Stop_Measure);
}
}
}
在蓝牙的外部事件中,调用
sc = sl_bt_gatt_set_characteristic_notification(conn_properties[i].connection_handle, conn_properties[i].thermometer_characteristic_handle, gatt_disable);
或
sc = sl_bt_gatt_set_characteristic_notification(conn_properties[i].connection_handle, conn_properties[i].thermometer_characteristic_handle,gatt_indication);
使能或禁止indicate功能,这样服务器收到命令后就会开始或停止发送温度数据。
- |
- +1 赞 0
- 收藏
- 评论 0
本文由John提供,版权归世强硬创平台所有,非经授权,任何媒体、网站或个人不得转载,授权转载时须注明“来源:世强硬创平台”。
相关推荐
【经验】STUDIO V5中蓝牙SoC EFR32BG22添加串口LOG打印的方法
在调试Silicon Labs蓝牙SoC EFR32BG22时,一般需要添加LOG打印信息,通过串口的方式来判断代码运行是否正常。由于使用RTT功能在打印信息时无法再次在线调试和代码下载,所以直接采用串口的方式更加便捷。
设计经验 发布时间 : 2021-06-30
【经验】芯科科技EFR32BG22系列蓝牙SOC修改自定义广播包的思路与具体实例
在蓝牙的实际应用中,往往需要自定义的蓝牙广播包来适应不同的应用环境,本文主要介绍基于SILICON LABS的EFR32BG22蓝牙SOC实现自定义广播数据包的方法。
设计经验 发布时间 : 2023-03-16
【经验】Silicon Labs的蓝牙SoC EFR32BG22如何进行在线的OTA升级?
Silicon Labs的蓝牙SOC EFR32BG目前已经能够支持到蓝牙5.2,工艺升级后的EFR32BG22的功耗能够达到接收4.1mA,0dbm发射功耗3.6mA,休眠功耗低至1.4uA,如此低的功耗,能够大幅延长蓝牙设备的电池续航时间。本文介绍蓝牙SoC EFR32BG22如何进行在线的OTA升级。
设计经验 发布时间 : 2020-06-07
【应用】EFR32BG22蓝牙SoC用做CGM连续血糖仪主控,单芯片集成MCU和蓝牙5.2
CGM连续血糖仪为了用户体验更好,要做到小而轻,续航时间长,可以通过手机蓝牙连接获取血糖测量数据。Silicon Labs的蓝牙SoC EFR32BG22在单芯片中集成了MCU和蓝牙5.2,可以作为CGM的主控芯片并实现蓝牙数据收发,有丰富的外设。
应用方案 发布时间 : 2021-07-20
芯科科技EFR32BG27蓝牙SoC助力持续性血糖监测CGM设备长达21天续航时间
在当今医疗领域,持续性血糖监测(CGM)成为人们关注的焦点,特别是对于糖尿病患者而言,实时了解血糖水平变化对于治疗和生活质量的提升具有举足轻重的意义。Silicon Labs提供的极小型、超低功耗EFR32BG27(BG27)蓝牙SoC在CGM中的应用显得尤为突出。本文将详细介绍BG27蓝牙SoC在CGM中的应用及其突出特点。
应用方案 发布时间 : 2024-07-12
BG24蓝牙SoC具备低功耗、小型化等特性,为CoreHW提供蓝牙RTLS的先进解决方案
Silicon Labs(亦称“芯科科技”)的BG24蓝牙SoC具备低功耗、小型化等特性,并支持蓝牙定位技术包括蓝牙到达角(AoA)和蓝牙信道探测(Channel Sounding),为CoreHW公司提供了最先进的实时定位服务(RTLS) 解决方案,以开发出创新的CoreTag和CoreLocator定位应用产品。
应用方案 发布时间 : 2024-06-21
芯科科技提供多款无线连接和控制芯片产品及解决方案,BG2x系列蓝牙SoC成就多样医疗物联网用例,
Silicon Labs(亦称“芯科科技”)的无线SoC和MCU助力全球客户的医疗物联网应用创新,持续打造更智能、高效、安全和便捷的健康监测设备。智能和网联技术近年来一直是医疗和健康保障领域内的热门技术,许多厂商都在利用医疗物联网(IoMT)技术开发更加智能和互联的健康监测设备,以利用物联网、云计算、人工智能和可穿戴等新一代信息通信技术,来帮助用户时刻监控自己的健康状况、降低医疗费用和就医麻烦。
厂牌及品类 发布时间 : 2023-06-29
【经验】EFR32BG22系列蓝牙SOC电池电压与VDD供电电压检测ADC的方法
EFR32BG22作为低功耗蓝牙SOC方案,经常应用于电池供电的方案中,一般采用内部的ADC作为采集通道,内部的输入源作为输入接口,来测试VDD供电电压。本文将讲解电池电压与VDD供电电压检测ADC的方法。
设计经验 发布时间 : 2020-11-28
BG2x系列蓝牙SoC包罗性能、安全、功耗和成本优势,助力移远通信于嵌入式展发表新蓝牙模组
芯科科技一直致力于为物联网设备制造商提供小型、专为应用而优化的BG2x系列蓝牙SoC解决方案。我们的SoC产品不仅能以小体积提供超低功耗且高性能的低功耗蓝牙连接,还具有医疗等级的安全性;同时还领先行业集成了人工智能和机器学习(AI/ML)硬件加速器、模拟、DC-DC转换器、RF认证天线以及许多其他功能。
厂牌及品类 发布时间 : 2024-04-20
洞悉标准化蓝牙ESL应用潜力,芯科科技全系列低功耗、高性能蓝牙SoC和模块现已支持最新蓝牙5.4版本
随着蓝牙标准的推陈出新,Silicon Labs(亦称“芯科科技”)也持续升级蓝牙解决方案,全系列低功耗、高性能蓝牙SoC和模块现已支持最新蓝牙5.4版本,以满足开发人员的需求。
厂牌及品类 发布时间 : 2023-08-10
【经验】Silicon Labs蓝牙Soc芯片EFR32BG22的蓝牙广播功率设置及注意事项
用户在使用Silicon Labs的蓝牙Soc芯片EFR32BG22实现蓝牙广播功能时,在不同的应用场景中要设置广播的发射功率,有的是为了降低产品的功耗,有的是为了增加或缩短通信的距离。那要如何设置广播时的功耗以及在设置时有哪些需要注意的事项?
设计经验 发布时间 : 2021-12-24
EFR32BG2x系列蓝牙SoC如何配置外接FEM引脚,驱动FEM?
Silicon Labs公司的EFR32BG21或者EFR32BG2x系列的蓝牙SoC最大可以支持20dBm的发射功率,以及非常优秀的接收灵敏度。本文以BG21评估板SLWRB4181A,基于GSDK 4.4.1,介绍如何快速配置BG21实现FEM适配。
设计经验 发布时间 : 2024-02-28
【经验】蓝牙SoC EFR32BG22的高精度ADC配置步骤与注意事项
Silicon Labs的EFR32BG22系列蓝牙SoC内部集成高精度ADC功能,采用内部1.21V作为Vref,ADC真实有效位数可达13.5bit,使用外部1.25V基准源作为Vref,精度可达14.3bit。本文介绍ADC配置相关步骤以及注意项目。
设计经验 发布时间 : 2020-11-04
【经验】Silicon Labs蓝牙SoC在开启了串口后,如何降低功耗?
在调试Silicon Labs的蓝牙SoC时,我们需要打开串口日志输出以方便调试,但是在添加了Log和IO Stream:USART组件后,可以看到日志可以输出了,但是随之EM2休眠功耗却降不下去了,这是由于添加了串口后,默认串口在EM2下是开启的,导致EM2下功耗会比较高,本文将以EFR32BG27为例,指导如何在添加了串口后降低串口功耗。
设计经验 发布时间 : 2023-09-05
【经验】基于studio v5蓝牙SOC EFR32BG22添加OTA的注意事项
本文主要讲解Silicon Labs的基于studio v5蓝牙SOC EFR32BG22添加OTA的注意事项,适用于内部Flash或者外部SPI Flash的OTA升级。
设计经验 发布时间 : 2021-09-20
电子商城
品牌:SILICON LABS
品类:Wireless Gecko SoC
价格:¥8.1764
现货: 111,255
现货市场
品牌:SILICON LABS
品类:Switch Hall Effect Magnetic Position Sensor
价格:¥2.2924
现货:150,000
服务
根据用户的蓝牙模块,使用Bluetooth 蓝牙测试装置MT8852B,测试蓝牙1.0至5.1,包括传输速率、功率、频率、调制和接收机灵敏度,生成测试报告。支持到场/视频直播测试,资深专家全程指导。
实验室地址: 深圳 提交需求>
提供语音芯片、MP3芯片、录音芯片、音频蓝牙芯片等IC定制,语音时长:40秒~3小时(外挂flash),可以外挂TF卡或U盘扩容。
最小起订量: 1pcs 提交需求>
登录 | 立即注册
提交评论