当前文档版本为 v0.5.0,您可以访问当前页面的 开发中 版本以获取最近可能的更新。

Bluetooth: Peripheral / Heart-rate Monitor

1 功能概述

此项目演示了蓝牙从机的功能,该工程专门暴露了HR (Heart Rate)GATT服务。

一旦设备连接上,它就会产生虚拟的心率值。

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 演示说明

  1. 烧录完成后,设备自动启动蓝牙广播,可以在手机或抓包工具上获取如下信息:

    • Service UUID: 0x180D, 0x180A, 0x180F

    • Device Name: Zephyr Heartrate Sensor

  2. 当手机或其它主设备与其建立连接后,串口log 会显示连接信息,如下:

    Connected
    
  3. 此时,如果使能了Heart Rate Measurement,主机将收到温度数据,如下:

    image

    Peripheral HR 手机端 nRF Connect Service界面

    image

    Peripheral HR 手机端 nRF Connect Log界面

6 低功耗电流测试演示说明

  1. 如果需要测试最低电流的话,我们需要使能 DCDC 模式,首先打开samples_panchip\bluetooth\peripheral_hr目录下的prj_lp_xtl32768.conf文件,使能CONFIG_SOC_DCDC_PAN1080=y,默认是处于注释状态的。

  2. 打开samples_panchip\bluetooth\peripheral_hr\src中的main.c,将宏TEST_LOW_POWER_CURRENT_1S设置为1。使能后会使得 peripheral_hr 广播时为 1 秒周期间隔,同时连接上以后也会更新为 1 秒连接间隔。

  3. 使用 ZAL 工具重新编译下载程序。

  4. 然后使用电流测试工具观测电流,下图为 DCDC 模式 48M 主频广播电流:

    image

    Peripheral HR 功耗测量

  5. 注意在不同的系统时钟下、不同的发射功率下的平均电流是不同的。

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%