芯科BG22学习笔记:11-如何实现低功耗beacon

实验目的:实现低功耗beacon广播

实验环境:Simplicity Studio V5

实验器材:Wireless Starter Kit Mainboard (BRD4002A Rev B06) + EFR32xG22 2.4 GHz 6 dBm QFN40 Radio Board (BRD4182A)

实验开始:

1. 新建工程,蓝牙工程输入soc empty

 

 2. 修改app.c文件中sl_bt_on_event函数如下:

第一步:修改发射功率,BG22的发射功率是可调的,有两种PA模式,分别最大支持0dBm和6dBm的发射功率;

通过添加下面的语句将蓝牙广播TX Power设置为0dBm:

1       //设置发射功率
2       int16_t set_power;
3       sc = sl_bt_advertiser_set_tx_power(advertising_set_handle,0, &set_power);
4       app_assert_status(sc);

第二步:蓝牙广播通常在37,38和39这三个通道上进行广播,可以通过减少广播的通道数来降低功耗;

通过添加下面的语句将蓝牙广播设置为只在37通道广播信息:

1       //设置仅37通道广播
2       sc = sl_bt_advertiser_set_channel_map(advertising_set_handle,1);
3       app_assert_status(sc);

第三步:蓝牙SIG组织定义广播间隔为20ms到40.96秒之间,可以通过增大广播间隔来降低功耗;

通过修改参数160为1600,将广播间隔由100ms修改为1s:

1       // 广播间隔设置为1000ms,160改成1600
2       sc = sl_bt_advertiser_set_timing(advertising_set_handle,
3         1600, // min. adv. interval (milliseconds * 1.6)
4         1600, // max. adv. interval (milliseconds * 1.6)
5         0,   // adv. duration
6         0);  // max. num. adv. events
7       app_assert_status(sc);

第四步:将可连接广播修改为不可连接:

1       // 开始广播且广播不可连接
2       sc = sl_bt_legacy_advertiser_start(advertising_set_handle,sl_bt_legacy_advertiser_non_connectable);
3       app_assert_status(sc);

3. 修改完后保存并编译、烧录,打开Tools中的Energy Profiler查看电流消耗:

 

 

注意:

如果出现无法进入EM2,确保是否安装了某些插件,导致系统被限制进入EM2。譬如添加了串口组件,需要将限制关闭:

 

posted @ 2024-12-04 09:51  J-Dub  阅读(10)  评论(0编辑  收藏  举报