【Silicon Labs BG22-EK4108A 蓝牙开发评测】评测一 iBeacon蓝牙信标
[复制链接]
评测一 iBeacon蓝牙信标
本文围绕信标来进行使用,围绕修改iBeacon应用修改Payload、MAC地址、广播时间参数等来演示。手头上拿到的BRD4108A主控是EFR32BG22C224F512IM40,规格BLE5.2,核心M33和M0+,支持DSP浮点加速指令,512K Flash+32K RAM,最大主频76.8MHz。
一、程序烧录
第一时间试试它的广播包应用,SDK有参考例程,目录${StudioSdkPath}\app\bluetooth\example\soc_ibeacon,基于Simplicity Studio V5.3.0.0和Gecko SDK V3.2,由于SS是基于eclipse改造,故打开或导入工程和eclipse一样,导入时让选目标PCBA、目标芯片、SDK和编译器,可选ICC_ARM、SES、Keil、SS/GNU_ARM,此次选择开源SS/GNU_ARM:
图1 工程参数选择
Simplicity IDE下载工具链在$SimplicityStudio_InstallDir\developer\toolchains,在工程管理界面看到结构树,ibeacon涉及到射频,所以会针对controller部分包括PHY、LL层以及上面GAP、应用层,打开main.c和app.c,可以看到协议栈全都以sl_xx开头为API,广播包在app.c回调函数sl_bt_on_event里,然后就能填充AD Flags、UUID、Major、Minor等,点击Run->Debug上传固件后会发现程序直接跳转到0xefffffc0报错无法运行了,后来发现需要先烧录BootLoader来引导(此处竟然没有LOG提示,不过readme文档的Troubleshooting部分有提到),于是先烧录BootLoader,点击工具栏的Flash Programmer弹出对话框,定位到${StudioSdkPath}\platform\bootloader\sample-apps\bootloader-uart-bgapi\bootloader-uart-bgapi.s37(后续应用烧录不能是不携带地址信息的.bin文件,否则会覆盖掉BootLoader),
图2 Flash Programmer
二、参数配置
烧录完BootLoader,然后再Debug就能运行看到现象了,用手机nRF Connect扫描到它的广播包。
1.UUID/Major/Minor修改
本次修改它的载荷包括UUID、Major、Minor来进行,改成前几年微信摇一摇周边的配置,详细见截图
图3 ibeacon载荷修改
2.广播MAC修改
其他参数也可以尝试修改比如广播MAC、广播间隔,按照链接https://docs.silabs.com/bluetooth/latest/general/system-and-performance/setting-a-custom-bt-address--production-approach指导使用sl_bt_system_set_identity_address接口就行:
图4 ibeacon广播MAC地址修改
3.广播时间参数修改
广播间隔、跳过个数、广播周期等均可用sl_bt_advertiser_set_timing接口来实现,本次修改间隔为500ms:
图5 ibeacon广播参数修改
|