arm带蓝牙模块的微控制器BlueNRG-1 低功耗模式

绪论

BlueNRG-1 是由 STMicroelectronics(意法半导体)生产的一款低功耗蓝牙系统级芯片(SoC)。它专为无线短距离通信应用设计,广泛应用于物联网(IoT)设备、可穿戴设备、智能家居、医疗设备以及其他需要无线连接的场合。 以下是 BlueNRG-1 的一些关键特性:

  1. 低功耗蓝牙(BLE):支持蓝牙4.0及以上版本,包括所有核心BLE功能,适合低功耗应用。

  2. 集成度:集成了射频前端、基带处理器、微控制器单元(MCU)和内存,减少了外部组件的需求。

  3. 紧凑的封装:提供小型化的封装选项,适合空间受限的应用。

  4. 灵活性:支持多种配置和编程选项,包括对固件的定制,以满足不同客户的需求。

  5. 开发工具:ST 提供了一套完整的软件开发工具(SDK),包括协议栈、示例代码和开发板,以帮助开发者快速开发产品。

  6. 安全性:提供加密功能和安全连接,保护数据传输免受未授权访问。

  7. 应用支持:适合需要长电池寿命和无线连接的各种应用,如健康和健身、家居自动化、远程控制等。

BlueNRG-1 通过其集成的解决方案,为开发者提供了一种快速、灵活且成本效益高的途径,以将无线通信功能集成到他们的产品中。

1 BlueNRG-1 HW 低功耗模式

为了在低功耗、短启动时间和可用唤醒源之间寻求最佳平衡,BlueNRG-1 HW 支持三种低功 耗模式:

• CPU-Halt 模式

− 在该模式下,只有 CPU 停止工作。所有设备外设继续运行并可在发生中断/事件时 唤醒 CPU。这是最低级别的节能模式。

• 睡眠模式

− 在该模式下,CPU 停止且所有外设均被禁用。仅低速振荡器模块和外部唤醒源模 块运行。

− 唤醒源为唤醒定时器或 IO9、IO10、IO11、IO12 和 IO13。

− 当上述源触发唤醒时,系统回到运行模式且所有外设启用。应用需等到高速振荡器 稳定后,才能从睡眠模式退出。

• 待机模式

− 在该模式下,CPU 停止且所有外设均被禁用。唤醒源只有 IO9、IO10、IO11、 IO12 和 IO13。

− 应用需等到高速和低速振荡器稳定后,才能从待机模式退出。

− 该模式是最高级别的节能模式。 BlueNRG-1 数据表上列出了所有低功耗模式的电流消耗。

2 BlueNRG-1 低功耗支持

BlueNRG-1 DK 软件包提供的软件支持所有 BlueNRG-1 HW 低功耗模式。

低功耗软件将来自应用的低功耗请求与无线操作模式相结合,选择适用于当前情况的最佳低 功耗模式。在无线模块与应用请求之间进行这种协商的目的是避免丢失无线通信数据。由低 功耗软件负责此类协商。

当 BlueNRG-1 退出任何低功耗模式时,发生复位。此复位导致所有外设配置和应用上下文 丢失。低功耗软件采用一种机制,在节能程序被调用时保存并恢复所有外设配置和应用上下 文。

因此,从应用的角度来看,从低功耗程序退出是完全透明的,这意味着从低功耗模式唤 醒时,CPU 继续执行低功耗函数被调用后的下一个指令。

低功耗软件执行下列节能模式:

• SLEEPMODE_RUNNING

− 在该低功耗模式下,一切处于激活并运行的状态。事实上不会使用该模式,定义它 的目的是确保信息的完整性:它不是真正的节能模式。

• SLEEPMODE_CPU_HALT

− 该节能模式执行 HW CPU-Halt 低功耗模式。

• SLEEPMODE_WAKETIMER

− 该节能模式执行硬件睡眠低功耗模式。

• SLEEPMODE_NOTIMER

− 该节能模式执行硬件待机低功耗模式。

为了启用任意低功耗模式,应用应调用函数“BlueNRG_Sleep()”。

uint8_t BlueNRG_Sleep(SleepModes sleepMode,
 uint8_t gpioWakeBitMask,
 uint8_t gpioWakeLevelMask,
 uint32_t sleep_time);

其中:

• sleepMode 是低功耗模式,将启用:

− SLEEPMODE_RUNNING

− SLEEPMODE_CPU_HALT

− SLEEPMODE_WAKETIMER

− SLEEPMODE_NOTIMER

• gpioWakeBitMask 是可将芯片从低功耗模式唤醒的 IO 的位掩码:

− WAKEUP_IO9

− WAKEUP_IO10

− WAKEUP_IO11

− WAKEUP_IO12

− WAKEUP_IO13

如果该字段为零,将忽略 gpioWakeLevelMask 参数。

• gpioWakeLevelMask 是用于设置每个唤醒源的激活唤醒级别的位掩码:

− WAKEUP_IO_LOW,当 IO 为低电平时唤醒系统

− WAKEUP_IO_HIGH,当 IO 为高电平时唤醒系统

• sleep_time 是深度睡眠超时,以毫秒为单位。唤醒源也可以是 IO。如果此超时等于 0, 节能软件将自动按照当前无线操作模式设置超时。

函数返回状态:

• BLUENRG_SLEEP_CONFIGURATION_ERROR

• SUCCESS 低功耗软件导出对应用有用的其他函数:

• BlueNRG_WakeupSource. − 该函数返回低功耗模式的上一个唤醒源。

• BlueNRG_IdleSleep.

− 该函数等待中断指令“WFI”,并暂停内核的执行,直至发生一次中断。这是使 BlueNRG-1 进入 HW CPU-Halt 低功耗模式的另一种方式。

• App_SleepMode_Check.

− 该函数允许应用在特殊情况下设置其他低功耗模式。这意味着应用可以使用函数 App_SleepMode_Check()修改在主循环中设置的低功耗模式。在调用 BlueNRG_Sleep()函数时,低功耗软件根据无线状态机、应用在主循环中请求的 低功耗模式和从 App_SleepMode_Check()请求的低功耗模式,与要应用的睡眠 模式协商。

− 例如,假设应用在主循环中设置了睡眠模式 SLEEPMODE_WAKETIMER。中断向 应用发送传感器准备提供一些测量值的信号。为避免进入睡眠模式,应用可以将 App_SleepMode_Check()设置为 SLEEPMODE_RUNNING,因此,当主循环执 行 BlueNRG_Sleep()时,该函数与低功耗模式协商以应用 SLEEPMODE_RUNNING。

3 BlueNRG-1 低功耗模式示例

下面几节提供了一些低功耗模式应用用例。

3.1 低功耗模式 SLEEPMODE_RUNNING

在该低功耗模式下,一切处于激活并运行的状态:这实际上不是低功耗模式。典型源代码如 下:

while(1) /*main loop*/
{
    /* BLE 协议栈时间片 */
    BTLE_StackTick();
    /* 应用程序时间片 */
    APP_Tick();
    /* 低功耗管理 */
    BlueNRG_Sleep(SLEEPMODE_RUNNING, 0, 0, 0);
}

3.2 低功耗模式 SLEEPMODE_CPU_HALT

在该模式下,只有 CPU 停止工作。所有外设继续运行并可在发生中断时唤醒 CPU。典型源 代码如下:

while(1) /*main loop*/
{
    /* BLE 协议栈时间片 */
    BTLE_StackTick();
    /* 应用程序时间片 */
    APP_Tick();
    /* 低功耗管理 */
    BlueNRG_Sleep(SLEEPMODE_CPU_HALT, 
     WAKEUP_IO13| WAKEUP_IO11,
     (WAKEUP_IO_LOW<< WAKEUP_IO11)|(WAKEUP_IO_LOW<< WAKEUP_IO13),0);
}

唤醒源为 IO13 和 IO11,它们对低电平触发。所有外设中断也可以唤醒 BlueNRG-1。 如果无线操作模式正在执行不能停止的操作,从而不允许此低功耗请求,则低功耗软件内部 自动将此低功耗模式转换为 SLEEPMODE_RUNNING。

3.3 低功耗模式 SLEEPMODE_WAKETIMER

在该模式下,CPU 停止且所有外设均被禁用。仅低速振荡器模块和外部唤醒源模块运行。

while(1) /*main loop*/
{
     /* BLE 协议栈时间片 */
     BTLE_StackTick();
     /* 应用程序时间片 */
     APP_Tick();
     /* 低功耗管理 */
     BlueNRG_Sleep(SLEEPMODE_WAKETIMER, WAKEUP_IO13, 
     WAKEUP_IO_LOW<< WAKEUP_IO13, 2000);
}

唤醒源为对低电平触发的 IO13 和 2 秒超时。 在本例中,应用想要启用低功耗模式 WAKETIMER。如果无线操作模式处于连接状态或广播 状态,则栈接受应用请求的低功耗模式,但是如果有必要,将更改低功耗软件内部的超时, 以符合连接间隔时间配置文件或广播间隔时间配置文件。

3.4 低功耗模式 SLEEPMODE_NOTIMER

在该低功耗模式下,CPU 停止且所有外设均被禁用。仅外部唤醒源模块运行。

while(1) /*main loop*/
{
    /* BLE 协议栈时间片 */
    BTLE_StackTick();
    /* 应用程序时间片 */
    APP_Tick();
    /* 低功耗管理 */
    BlueNRG_Sleep(SLEEPMODE_NOTIMER, WAKEUP_IO13, 
     WAKEUP_IO_HIGH << WAKEUP_IO13, 0);
}

唤醒源是高电平触发的 IO13。

在本例中,应用想要启用低功耗模式 NOTIMER。如果无线模块处于连接状态,在与无线栈 协商后,低功耗软件将低功耗模式更改为 WAKETIMER,以符合连接时间配置文件。如果无 线模块处于空闲状态,无线栈将接受应用请求的低功耗模式 NOTIMER,并且低功耗软件不 更改模式。

  • 20
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
ARM控制器和嵌入式系统是两个密切相关的概念。ARM控制器是一种基于ARM架构的处理器,常用于嵌入式系统中。嵌入式系统是一种被嵌入在其他设备中的计算机系统,用于控制和管理该设备的各种能。 ARM控制器是一种非常常见的处理器架构,具有、高性能和高可靠性的特点。它被广泛用于各种嵌入式应用中,比如智能手机、平板电脑、家用电器等。ARM架构具有良好的兼容性,可以支持不同的软件开发工具和操作系统,如Android、Linux等。 嵌入式系统是一种专门设计用于控制和管理设备的计算机系统。它通常由硬件和软件两部分组成,硬件部分包括处理器、存储器、输入输出接口等,软件部分包括操作系统和应用程序。嵌入式系统通常需要满足一些特定需求,如实时性、、小体积等。 在嵌入式系统中,ARM控制器被广泛应用。它具有丰富的外围接口和强大的计算能力,可以满足各种设备的控制和管理需求。ARM控制器的软硬件资源丰富,可供开发人员进行灵活的开发和定制。同时,ARM的生态系统也非常完善,有各种开发工具和支持资源可供选择。 清华MOOC是清华大学开设的在线教育平台,其中也有关于ARM控制器和嵌入式系统的相关课程。通过学习清华MOOC中的课程,可以深入了解ARM控制器和嵌入式系统的原理和应用,掌握相应的开发技能。这对于希望从事嵌入式系统开发的人而言,是一种很好的学习资源。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MUKAMO

你的鼓励是我们创作最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值