Bluetooth: Peripheral / Heart-rate Monitor¶
2 环境要求¶
board: 支持 BLE 的蓝牙设备
uart(option): 用来显示串口log
测试软件: nRF Connect
3 编译和烧录¶
例程位置:zephyr\samples_panchip\bluetooth\peripheral_hr
使用 ZAL 工具可以对其进行编译、烧录、打开 VS Code 调试等操作。关于 ZAL 工具的详细介绍请参考:Zephyr APP Launcher 工具介绍。
4 配置文件说明¶
prj.conf
默认配置文件,该文件默认不包含低功耗
prj_lp_xtl32768.conf
该配置文件使能低功耗功能,低功耗时使用xtl32768进行计数,配置参数详细说明参考下方章节7 低功耗Config配置参数说明。
5 演示说明¶
烧录完成后,设备自动启动蓝牙广播,可以在手机或抓包工具上获取如下信息:
Service UUID: 0x180D, 0x180A, 0x180F
Device Name: Zephyr Heartrate Sensor
当手机或其它主设备与其建立连接后,串口log 会显示连接信息,如下:
Connected
此时,如果使能了
Heart Rate Measurement
,主机将收到温度数据,如下:
6 低功耗电流测试演示说明¶
如果需要测试最低电流的话,我们需要使能 DCDC 模式,首先打开
samples_panchip\bluetooth\peripheral_hr
目录下的prj_lp_xtl32768.conf
文件,使能CONFIG_SOC_DCDC_PAN1080=y
,默认是处于注释状态的。打开
samples_panchip\bluetooth\peripheral_hr\src
中的main.c
,将宏TEST_LOW_POWER_CURRENT_1S
设置为1。使能后会使得 peripheral_hr 广播时为 1 秒周期间隔,同时连接上以后也会更新为 1 秒连接间隔。使用 ZAL 工具重新编译下载程序。
然后使用电流测试工具观测电流,下图为 DCDC 模式 48M 主频广播电流:
注意在不同的系统时钟下、不同的发射功率下的平均电流是不同的。
7 低功耗Config配置参数说明¶
CONFIG_PM=y
低功耗使能总开关
CONFIG_SYS_CLOCK_HW_CYCLES_PER_SEC=32000
CONFIG_SYS_CLOCK_TICKS_PER_SEC=32000
这两个config一般需要设置为一样的,表示低功耗模式时,系统处于唤醒工作状态时对应的时钟工作频率,此处需要和实际工作频率对应上。
如果低功耗睡眠时和唤醒工作时的真实频率不一致的时候需要加一区别,一般情况下和低功耗时工作频率保持一致。
CONFIG_BT_CTLR_SLEEP_CLOCK_SOURCE=1
低功耗时的睡眠时钟源选择:0表示是RCL(芯片内部的低速晶振,计数精度相对差一点);1表示是XTL;2表示工作时使用ACT32K(此选项禁止低功耗模式)。
CONFIG_BT_CTLR_SLEEP_CLOCK_HZ=32000
低功耗睡眠时的真实时钟频率:真实时钟需要使用者来告知zephyr,即使是XTL,可能是32000,也可能是32768,需要使用者告知来决定实际工作的处理。
CONFIG_BT_CTLR_SLEEP_TIMER_ACCURACY=5
低功耗时的晶振精度:
- 0: 500ppm
- 1: 250ppm
- 2: 150ppm
- 3: 100ppm
- 4: 75ppm
- 5: 50ppm
- 6: 30ppm
- 7: 20ppm
通过设置该参数可以影响Rx开窗时的Window大小,选择大的ppm, 对于精度差的晶振,可以对连接有一定改善,但同时也有可能影响功耗。
CONFIG_PM_ACT_XTL_CONVERT=n
工作时ACT32K和低功耗睡眠时的32K转换使能,可以选择不同的唤醒工作基准时钟和睡眠基准时钟,该功能一般是开发人员使用。
6 RAM/Flash资源使用情况¶
Memory region Used Size Region Size %age Used
FLASH: 233036 B 1020 KB 22.31%
SRAM: 30940 B 52 KB 58.11%
IDT_LIST: 0 GB 2 KB 0.00%