6。深度睡眠的配置¶
配置DA14531或DA14585/586设备深度睡眠模式,遵循下面提到的步骤。
打开接近记者项目:…项目/ target_apps ble_examples / prox_reporter / Keil_5
打开文件user_proxr.h这是在user_app文件夹中。
定义CFG_APP_GOTO_DEEP_SLEEP选择完成后,设备进入睡眠模式广告。
#定义CFG_APP_GOTO_DEEP_SLEEP
选择触发机制,从深度睡眠中唤醒模式通过以下方式,
#如果定义(CFG_APP_GOTO_DEEP_SLEEP)/ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * **深睡眠模式和之后- - - - - -向上从深睡眠配置**选择的触发机制来之后向上从深睡眠。****- - - - - -CFG_DEEP_SLEEP_WAKEUP_POR- - - - - -之后向上从运动销****- - - - - -CFG_DEEP_SLEEP_WAKEUP_GPIO- - - - - -之后向上从唤醒控制器****- - - - - -CFG_DEEP_SLEEP_WAKEUP_RTC- - - - - -之后向上从清债信托公司计时器(只有在DA14531)****- - - - - -CFG_DEEP_SLEEP_WAKEUP_TIMER1- - - - - -之后向上从Timer1(只有在DA14531)****请注意:**一个硬件重置或权力周期将总是之后向上的系统从深睡眠。** * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * /# undef CFG_DEEP_SLEEP_WAKEUP_POR#定义CFG_DEEP_SLEEP_WAKEUP_GPIO
请注意
DA14585/586可以从深度睡眠醒来从穷销或GPIO只。
在同一个文件,配置保留RAM内存来保存。关闭任何内存块使用PD_SYS_DOWN_RAM_OFF和PD_SYS_DOWN_RAM_ON保留。禁用所有内存块时,应在Flash或OTP的代码。禁用当前内存块会降低睡眠不过它将增加所需要的能量唤醒。
/ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * **深睡眠模式配置** * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * /#定义CFG_DEEP_SLEEP_RAM1 PD_SYS_DOWN_RAM_OFF#定义CFG_DEEP_SLEEP_RAM2 PD_SYS_DOWN_RAM_OFF#定义CFG_DEEP_SLEEP_RAM3 PD_SYS_DOWN_RAM_OFF#定义CFG_DEEP_SLEEP_PAD_LATCH_EN假
在文件中user_proxr.c通过选择CFG_DEEP_SLEEP_WAKEUP_GPIO,选择的port_pin,设备从沉睡中醒来,这样的文件,
#如果定义(CFG_DEEP_SLEEP_WAKEUP_GPIO)wkupct_enable_irq(WKUPCT_PIN_SELECT(GPIO_BUTTON_PORT,GPIO_BUTTON_PIN),/ /选择销WKUPCT_PIN_POLARITY(GPIO_BUTTON_PORT,GPIO_BUTTON_PIN,WKUPCT_PIN_POLARITY_LOW),/ /极性低1,/ /1事件0);/ /消除抖动时间=0# endif
在user_periph_setup.h,配置GPIO_BUTTON_PORT和GPIO_BUTTON_PIN,就像我们已经配置了P0_5设备从深度睡眠,醒来
/ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // *按钮配置* // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * /#如果定义(__DA14531__)#定义GPIO_BUTTON_PORT GPIO_PORT_0#定义GPIO_BUTTON_PIN GPIO_PIN_5其他#
起床使用上电复位(运动),定义CFG_DEEP_SLEEP_WAKEUP_POR和命令取消其余的唤醒机制。使用SW1 /主板上的复位按钮唤醒设备。
#定义CFG_DEEP_SLEEP_WAKEUP_POR
使用RTC醒来(实时时钟)定时器DA14531(只),定义CFG_DEEP_SLEEP_WAKEUP_RTC和命令取消其余的唤醒机制。
#如果定义(__DA14531__)#定义CFG_DEEP_SLEEP_WAKEUP_RTC# undef CFG_DEEP_SLEEP_WAKEUP_TIMER1# endif
通过定义,RTC配置为产生一个中断后10秒。这将唤醒设备从深度睡眠模式。时间可以修改通过改变alarm_time中断。证交会在函数configure_rtc_wakeup在user_proxr.c如下所示,
alarm_time。证券交易委员会+ =10;
起床使用Timer1 DA14531(只),定义CFG_DEEP_SLEEP_WAKEUP_TIMER1和命令取消其余的唤醒机制。
#如果定义(__DA14531__)# undef CFG_DEEP_SLEEP_WAKEUP_RTC#定义CFG_DEEP_SLEEP_WAKEUP_TIMER1# endif
保存并编译(F7)项目
打开我们的SmartSnippets工具箱和点击分析器(可以从我们的门户雷竞技电竞平台对话框半导体网站),观察BLE事件和深度睡眠。
如果您使用的是DA14531模块,确保断电flash在进入深度睡眠通过调用spi_flash_power_down()函数app_advertise_complete在user_proxr.c像这样,
spi_flash_power_down();/ /把系统成深睡眠put_system_into_deep_sleep();
6.1。测量深度睡眠电流¶
为了测量深度睡眠电流数字万用表,增加广告间隔距离记者user_config.h下项目。遵循下面提到的步骤:
打开文件user_config.h这是在user_config文件夹中。
2。修改默认的超时处理程序配置广告设备,通过配置.adv_scenario DEF_ADV_WITH_TIMEOUT和改变超时值3 s例如,.advertise_period = MS_TO_TIMERUNITS(18000),如下所示,. .代码:
/ ** * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ***默认的处理程序配置(适用于只有为@app_default_handlers。c)** * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ** /静态常量结构体default_handlers_configurationuser_default_hnd_conf={/ /配置的做广告操作使用通过的默认的处理程序/ /可能的值:/ /- - - - - -DEF_ADV_FOREVER/ /- - - - - -DEF_ADV_WITH_TIMEOUT。adv_scenario=DEF_ADV_FOREVER,/ /广告永远/ /配置的做广告期在情况下的DEF_ADV_WITH_TIMEOUT。/ /它是测量在计时器单位。使用MS_TO_TIMERUNITS宏来转换/ /从毫秒(女士)来计时器单位。。advertise_period=MS_TO_TIMERUNITS(3000年),/ /这是为3年代/ /配置的安全开始操作的的默认的处理程序/ /如果的安全是启用(CFG_APP_SECURITY)/ /可能的值:/ /- - - - - -DEF_SEC_REQ_NEVER/ /- - - - - -DEF_SEC_REQ_ON_CONNECT。security_request_scenario=DEF_SEC_REQ_NEVER};
这将配置广告时期3 s之后,该设备将进入深度睡眠模式。设备可以通过编程从深度睡眠模式唤醒唤醒触发机制上一节中提到的。
保存并编译项目
按以下步骤在这里在第十二章OTP程序员或第13章SPI Flash程序员编程设备在Flash或OTP,然后引导。
使用数字万用表,把积极的万用表J9[4]和消极J9主板的[3],如下图所示,
深度睡眠观察当前值显示在仪表中。典型的数字是下面提到的IBAT_LOW值提高模式和巴克IBAT_HIGH值模式。
改变刺激模式,把跳投在阁下[1 - 2]在主板上,如睡眠模式概述章所示。
重复步骤1到步骤6