AN4820,AN4820

文件 2
应用笔记 BlueNRG-1低功耗模式 前言 BlueNRG-1是超低功耗蓝牙低能量(BLE)单模片上系统,符合Bluetooth®规范。
其架构核心为CortexM032位。
本应用笔记将介绍BlueNRG-1设备的低功耗模式。
2017年6月 DocID028870Rev1[EnglishRev1] 1/10 目录 目录 AN4820 1BlueNRG-1HW低功耗模式...............................................................3 2BlueNRG-1低功耗支持......................................................................4 3BlueNRG-1低功耗模式示例...............................................................6 3.1低功耗模式SLEEPMODE_RUNNING..............................................63.2低功耗模式SLEEPMODE_CPU_HALT............................................63.3低功耗模式SLEEPMODE_WAKETIMER.........................................63.4低功耗模式SLEEPMODE_NOTIMER...............................................7 4

缩略语列表..........................................................................................


8 5版本历史

.............................................................................................


9 2/10 DocID028870Rev1[EnglishRev1] AN4820 BlueNRG-1HW低功耗模式
1 BlueNRG-1HW低功耗模式 为了在低功耗、短启动时间和可用唤醒源之间寻求最佳平衡,BlueNRG-1HW支持三种低功耗模式: •CPU-Halt模式−在该模式下,只有CPU停止工作。
所有设备外设继续运行并可在发生中断/事件时唤醒CPU。
这是最低级别的节能模式。
•睡眠模式−在该模式下,CPU停止且所有外设均被禁用。
仅低速振荡器模块和外部唤醒源模块运行。
−唤醒源为唤醒定时器或IO9、IO10、IO11、IO12和IO13。
−当上述源触发唤醒时,系统回到运行模式且所有外设启用。
应用需等到高速振荡器稳定后,才能从睡眠模式退出。
•待机模式−在该模式下,CPU停止且所有外设均被禁用。
唤醒源只有IO9、IO10、IO11、IO12和IO13。
−应用需等到高速和低速振荡器稳定后,才能从待机模式退出。
−该模式是最高级别的节能模式。
BlueNRG-1数据表上列出了所有低功耗模式的电流消耗。
DocID028870Rev1[EnglishRev1] 3/10 BlueNRG-1低功耗支持 AN4820
2 BlueNRG-1低功耗支持 BlueNRG-1DK软件包提供的软件支持所有BlueNRG-1HW低功耗模式。
低功耗软件将来自应用的低功耗请求与无线操作模式相结合,选择适用于当前情况的最佳低功耗模式。
在无线模块与应用请求之间进行这种协商的目的是避免丢失无线通信数据。
由低功耗软件负责此类协商。
当BlueNRG-1退出任何低功耗模式时,发生复位。
此复位导致所有外设配置和应用上下文丢失。
低功耗软件采用一种机制,在节能程序被调用时保存并恢复所有外设配置和应用上下文。
因此,从应用的角度来看,从低功耗程序退出是完全透明的,这意味着从低功耗模式唤醒时,CPU继续执行低功耗函数被调用后的下一个指令。
低功耗软件执行下列节能模式: •SLEEPMODE_RUNNING−在该低功耗模式下,一切处于激活并运行的状态。
事实上不会使用该模式,定义它的目的是确保信息的完整性:它不是真正的节能模式。
•SLEEPMODE_CPU_HALT−该节能模式执行HWCPU-Halt低功耗模式。
•SLEEPMODE_WAKETIMER−该节能模式执行硬件睡眠低功耗模式。
•SLEEPMODE_NOTIMER−该节能模式执行硬件待机低功耗模式。
图1:BlueNRG-1节能模式 4/10 为了启用任意低功耗模式,应用应调用函数“BlueNRG_Sleep()”。
uint8_tBlueNRG_Sleep(SleepModessleepMode,uint8_tgpioWakeBitMask,uint8_tgpioWakeLevelMask,uint32_tsleep_time); 其中:•sleepMode是低功耗模式,将启用: DocID028870Rev1[EnglishRev1] AN4820 BlueNRG-1低功耗支持 −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进入HWCPU-Halt低功耗模式的另一种方式。
•App_SleepMode_Check.−该函数允许应用在特殊情况下设置其他低功耗模式。
这意味着应用可以使用函数App_SleepMode_Check()修改在主循环中设置的低功耗模式。
在调用BlueNRG_Sleep()函数时,低功耗软件根据无线状态机、应用在主循环中请求的低功耗模式和从App_SleepMode_Check()请求的低功耗模式,与要应用的睡眠模式协商。
−例如,假设应用在主循环中设置了睡眠模式SLEEPMODE_WAKETIMER。
中断向应用发送传感器准备提供一些测量值的信号。
为避免进入睡眠模式,应用可以将App_SleepMode_Check()设置为SLEEPMODE_RUNNING,因此,当主循环执行BlueNRG_Sleep()时,该函数与低功耗模式协商以应用SLEEPMODE_RUNNING。
DocID028870Rev1[EnglishRev1] 5/10 BlueNRG-1低功耗模式示例 AN4820 3 3.13.2 3.3 BlueNRG-1低功耗模式示例 下面几节提供了一些低功耗模式应用用例。
低功耗模式SLEEPMODE_RUNNING 在该低功耗模式下,一切处于激活并运行的状态:这实际上不是低功耗模式。
典型源代码如下: while
(1)/*mainloop*/{/*BLE协议栈时间片*/BTLE_StackTick();/*应用程序时间片*/APP_Tick();/*低功耗管理*/BlueNRG_Sleep(SLEEPMODE_RUNNING,0,0,0);} 该低功耗模式无需唤醒源。
低功耗模式SLEEPMODE_CPU_HALT 在该模式下,只有CPU停止工作。
所有外设继续运行并可在发生中断时唤醒CPU。
典型源代码如下: while
(1)/*mainloop*/{/*BLE协议栈时间片*/BTLE_StackTick();/*应用程序时间片*/APP_Tick();/*低功耗管理*/BlueNRG_Sleep(SLEEPMODE_CPU_HALT, WAKEUP_IO13|WAKEUP_IO11,(WAKEUP_IO_LOW<所有外设中断也可以唤醒BlueNRG-
1。
如果无线操作模式正在执行不能停止的操作,从而不允许此低功耗请求,则低功耗软件内部自动将此低功耗模式转换为SLEEPMODE_RUNNING。
低功耗模式SLEEPMODE_WAKETIMER 在该模式下,CPU停止且所有外设均被禁用。
仅低速振荡器模块和外部唤醒源模块运行。
6/10 DocID028870Rev1[EnglishRev1] AN4820 典型源代码如下: while
(1)/*mainloop*/{ /*BLE协议栈时间片*/BTLE_StackTick();/*应用程序时间片*/APP_Tick();/*低功耗管理*/BlueNRG_Sleep(SLEEPMODE_WAKETIMER, WAKEUP_IO13,WAKEUP_IO_LOW< 在本例中,应用想要启用低功耗模式WAKETIMER。
如果无线操作模式处于连接状态或广播状态,则栈接受应用请求的低功耗模式,但是如果有必要,将更改低功耗软件内部的超时,以符合连接间隔时间配置文件或广播间隔时间配置文件。
3.4 低功耗模式SLEEPMODE_NOTIMER 在该低功耗模式下,CPU停止且所有外设均被禁用。
仅外部唤醒源模块运行。
典型源代码如下: while
(1)/*mainloop*/{/*BLE协议栈时间片*/BTLE_StackTick();/*应用程序时间片*/APP_Tick();/*低功耗管理*/BlueNRG_Sleep(SLEEPMODE_NOTIMER, WAKEUP_IO13,WAKEUP_IO_HIGH< 在本例中,应用想要启用低功耗模式NOTIMER。
如果无线模块处于连接状态,在与无线栈协商后,低功耗软件将低功耗模式更改为WAKETIMER,以符合连接时间配置文件。
如果无线模块处于空闲状态,无线栈将接受应用请求的低功耗模式NOTIMER,并且低功耗软件不更改模式。
DocID028870Rev1[EnglishRev1] 7/10 缩略语列表
4 缩略语列表 表1:文档中所用缩略语的列表 术语BLEHW 意义低功耗蓝牙硬件 AN4820 8/10 DocID028870Rev1[EnglishRev1] AN4820
5 版本历史 表2:文档版本历史 日期2016年6月29日 表3:中文文档版本历史 日期2017年6月17日 版本历史 版本
1 版本
1 变更初始版本。
变更中文初始版本。
DocID028870Rev1[EnglishRev1] 9/10 重要通知-请仔细阅读 AN4820 意法半导体公司及其子公司(“ST”)保留随时对ST产品和/或本文档进行变更、更正、增强、修改和改进的权利,恕不另行通知。
买方在订货之前应获取关于ST产品的最新信息。
ST产品的销售依照订单确认时的相关ST销售条款。
买方自行负责对ST产品的选择和使用,ST概不承担与应用协助或买方产品设计相关的任何责任。
ST不对任何知识产权进行任何明示或默示的授权或许可。
转售的ST产品如有不同于此处提供的信息的规定,将导致ST针对该产品授予的任何保证失效。
ST和ST徽标是ST的商标。
所有其他产品或服务名称均为其各自所有者的财产。
本文档中的信息取代本文档所有早期版本中提供的信息。
本文档的中文版本为英文版本的翻译件,仅供参考之用;若中文版本与英文版本有任何冲突或不一致,则以英文版本为准。
©2017STMicroelectronics-保留所有权利 10/10 DocID028870Rev1[EnglishRev1]

标签: #彻底删除 #打印机 #文件夹 #文件 #注册机 #隐藏文件 #文件 #文件