5.深度睡眠的配置¶
按照下面的步骤配置DA14531设备到深度睡眠模式。
- 从以下方式打开Proximity Reporter项目:...项目/ target_apps / ble_examples / prox_reporter / keil_5
- 打开文件user_proxr.h在user_app文件夹下。
- 定义CFG_APP_GOTO_DEEP_SLEEP选择广告完成后设备进入的睡眠模式。
#定义CFG_APP_GOTO_DEEP_SLEEP
- 通过以下步骤选择触发机制从深度睡眠模式中唤醒,
#f定义(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#define cfg_deep_sleep_wakeup_gpio.
- 在同一文件中,配置要保留的保留RAM内存。要关闭任何RAM块,请使用PD_SYS_DOWN_RAM_OFF和PD_SYS_DOWN_RAM_ON保留。当禁用所有RAM块,代码应该在Flash或OTP。禁用RAM块将降低睡眠电流,但它将增加叫醒所需的能量。
/ *****************************************************************************************深睡眠模式配置*****************************************************************************************/#定义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,选择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#别的
- 要使用Power on Reset (POR)唤醒,定义CFG_DEEP_SLEEP_WAKEUP_POR并取消唤醒机制的其余部分。使用主板上的SW1/Reset按钮唤醒设备。
#定义CFG_DEEP_SLEEP_WAKEUP_POR
- 要使用RTC (Real Time Clock)计时器唤醒,定义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唤醒,请定义CFG_DEEP_SLEEP_WAKEUP_TIMER1并拒绝唤醒机制的其余机制。
#如果定义(__DA14531__)# undef CFG_DEEP_SLEEP_WAKEUP_RTC#定义CFG_DEEP_SLEEP_WAKEUP_TIMER1# endif
- 保存并编译(F7)该项目
- 打开我们的SmartSnippets工具箱并单击Power Profiler(可从我们的门户获得雷竞技电竞平台Dialog Semiconductor支持门户),观察BLE事件和深度睡眠。
5.1.测量深度睡眠电流¶
为了通过数字万用表测量深度睡眠电流,在邻近记者项目下增加广告间隔user_config.h。遵循以下步骤:
- 打开文件user_config.h它位于User_Config文件夹下。
2.通过将.adv_scenario配置为DEF_ADV_WITH_TIMEOUT,并将超时值修改为3s,来更改缺省处理程序配置,例如,.advertise_period = MS_TO_TIMERUNITS(18000),如下所示。代码:
/ *******************************************************************************************默认的处理程序配置(适用于只要为@app_default_handlers.c)******************************************************************************************/静态常量结构体default_handlers_configuration.user_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之后设备将进入深度睡眠模式。该设备可以通过编程唤醒的触发机制从深度睡眠模式中唤醒,如上一节所述。
- 保存并编译项目
- 按照步骤这里在第12章OTP程序员或第13章SPI Flash程序员编程的设备要么在Flash或OTP,然后从那里引导。
- 使用数字万用表,将万用表的正极连接到主板的J9[4],负极连接到主板的J9[3],如下图所示。
- 观察仪表显示的深度睡眠电流值。下面提到了典型的数字,其中IBAT_LOW值用于Boost模式,而IBAT_HIGH值用于Buck模式。
- 要更改为Boost模式,请使用子板上的开关并将其放到L.在主板上,将跳线放在J4 [1-2]上,如睡眠模式概述章节所示。
- 重复1到6的步骤