扫码加入

  • 正文
  • 相关推荐
申请入驻 产业图谱

BlueNRG-LPS 开机峰值电流优化指南:软件寄存器配置实操

4小时前
147
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

BlueNRG 系列芯片开机瞬间会出现约 20mA 的峰值电流,这一数值超过了多数纽扣电池 15mA 的典型耐受上限,容易导致设备启动异常或电池寿命缩短。值得注意的是,仅 BlueNRG-LPS 系列支持通过软件修改寄存器限制峰值电流,BlueNRG-1/2、BlueNRG-LP 受硬件设计限制无法实现该功能。本文基于 ST 官方 LAT1356 应用笔记,详解峰值电流的测试方法与软件优化流程,适配 STEVAL-IDB012V1A 开发板及同类硬件。

1. 核心背景与适用范围

1.1 问题核心

  • 默认现状:BlueNRG-LPS 开机峰值电流约 20mA,超出纽扣电池耐受范围;
  • 优化原理:通过配置芯片 PWR->CR5 寄存器的 SMPS_PRECH_CUR_SEL 字段,限制 SMPS 预充电电流
  • 档位范围:支持 2.5mA、5mA、10mA、20mA(默认)四档可调,满足不同供电场景需求。

1.2 工具清单

  • 硬件:STEVAL-IDB012V1A 开发板、LPM01A 功率测量板、Type-C USB 线、适配连接线;
  • 软件:STM32CubeMonitor-Power 工具、STM32CubeIDE/IAR(代码编译)、rf_driver_ll_pwr.h 头文件(含 API 函数)。

2. 开机峰值电流测试方法

2.1 硬件连接步骤

  1. 将待测 BlueNRG-LPS 开发板与 LPM01A 功率测量板按图示连接;
  2. 配置 LPM01A 板的 J9/J10 跳线:PIN#1 接 GND,PIN#3 接 3V 输出;
  3. 连接 JP_VBLE 跳线至 PIN2,确保功率测量通路导通;
  4. 用 Type-C USB 线将 LPM01A 板连接至 PC。

2.2 软件测试操作

  1. 安装并打开 STM32CubeMonitor-Power 工具;
  2. 选择对应串口,点击 “连接” 按钮建立通信;
  3. 按需设置采样时长、数据精度等参数,点击 “START ACQUISITION” 开始采集;
  4. 观察工具生成的电流波形,默认状态下可清晰看到 20mA 左右的开机峰值电流(持续约 2550us)。

3. 软件优化步骤:限制峰值电流

3.1 核心 API 函数说明

ST 已封装专用 API 函数(定义于 rf_driver_ll_pwr.h),无需直接操作寄存器,调用即可实现电流限制:
  • 设置电流档位:LL_PWR_SetSMPSPrechargeLimitCurrent(uint32_t CurrentLimit)
  • 读取当前档位:LL_PWR_GetSMPSPrechargeLimitCurrent(void)

3.2 代码修改实操

  1. 打开 BlueNRG-LPS 项目工程,定位至 main.c 文件;
  2. 在系统时钟初始化(SystemInit)完成后、BLE 协议栈初始化(DeviceInit)前,插入电流限制函数调用(关键位置不可错);
  3. 按供电需求选择对应档位,核心代码示例如下:

(1)限制为 10mA(通用适配档位)

int main(void)
{
  PowerSaveLevels stopLevel;
  
  // 系统时钟初始化(原有代码)
  if(SystemInit(POWER_CONSUMPTION_DEMO_SYSTE_CLOCK, POWER_CONSUMPTION_DEMO_BLE_CLOCK) != SUCC)
  {
    while(1); // 初始化失败处理
  }
  
  BSP_IO_Init();
  UART_Init(); // 串口初始化(原有代码)
  
  // 核心配置:设置开机峰值电流为10mA
  LL_PWR_SetSMPSPrechargeLimitCurrent(LL_PWR_SMPS_PRECH_LIMIT_CUR_10);
  
  // BLE协议栈初始化(原有代码)
  ModulesInit();
  DeviceInit();
  
  printf("Power Consumption Testrn");
  // 后续业务逻辑代码...
}

(2)其他档位快速配置

  • 5mA 档位(低功耗场景):LL_PWR_SetSMPSPrechargeLimitCurrent(LL_PWR_SMPS_PRECH_LIMIT_CUR_5)
  • 2.5mA 档位(超高电池敏感场景):LL_PWR_SetSMPSPrechargeLimitCurrent(LL_PWR_SMPS_PRECH_LIMIT_CUR_2_5)
  • 恢复默认 20mA:LL_PWR_SetSMPSPrechargeLimitCurrent(LL_PWR_SMPS_PRECH_LIMIT_CUR_20)

3.3 编译与验证

  1. 保存代码后编译工程,确保无语法错误;
  2. 固件下载至开发板;
  3. 重复 “峰值电流测试流程”,验证实际峰值电流是否与配置档位一致。

4. 优化效果对比

配置档位 核心代码 实测峰值电流 持续时间 适用场景
默认配置 无(或 LL_PWR_SMPS_PRECH_LIMIT_CUR_20) 约 20mA 2550us 无电池电流限制的供电场景
10mA 档位 LL_PWR_SMPS_PRECH_LIMIT_CUR_10 约 10mA 缩短至 1800us 普通纽扣电池供电(平衡启动速度与电池保护)
5mA 档位 LL_PWR_SMPS_PRECH_LIMIT_CUR_5 约 5mA 1120us 低功耗设备、小容量电池场景
2.5mA 档位 LL_PWR_SMPS_PRECH_LIMIT_CUR_2_5 约 2.5mA 980us 超高电池敏感场景(如长效低功耗传感器)

5. 关键注意事项

  1. 调用时机:必须在系统时钟初始化后、BLE 协议栈初始化前调用 API,否则配置不生效;
  2. 芯片兼容性:仅 BlueNRG-LPS 支持该功能,其他 BlueNRG 系列调用会编译报错,需提前确认芯片型号;
  3. 测量校准:修改档位后需重新测试验证,避免因硬件差异导致实际电流与配置档位偏差;
  4. 平衡取舍:电流档位越低,开机预充电时间略有延长,需在 “电流限制” 与 “启动速度” 间找到平衡点。
BlueNRG-LPS 的开机峰值电流优化无需额外硬件修改,通过 ST 封装的 API 函数即可快速实现,核心是找准函数调用位置并选择合适电流档位。该方案能有效将峰值电流控制在电池耐受范围内,避免设备启动异常,延长电池使用寿命,操作简单且兼容性强,适用于各类依赖纽扣电池供电的 BlueNRG-LPS 设备。

相关推荐