cw32系列芯片支持3种工作模式,运行模式、休眠模式以及深度休眠模式,本文以cw32l083为例介绍低功耗模式的特性。mcu上电以后,系统自动进入运行模式,可以通过软件配置,进入休眠或者深度休眠两种低功耗模式,进入低功耗运行状态后,可以通过外设中断触发唤醒机制,使得系统返回到运行模式,三种工作模式的转换机制如下图所示:
三种模式下cpu、时钟及外设状态:
• 运行模式(active mode)
运行模式下 cpu 正常运行,所有模块用户均可正常使用。
• 休眠模式(sleep mode)
休眠模式下,cpu 停止运行,所有外设不受影响,所有i/o引脚保持状态不变。
• 深度休眠模式(deepsleep mode)
深度休眠模式下,cpu停止运行,高速时钟(hse、hsiosc)自动关闭,低速时钟(lse、 lsi、rc10k、rc150k)保持原状态不变。深度休眠模式的功耗远小于休眠模式。
cw32l083可以使用等待中断专用指令,wfi(wait for interrupt),配合系统控制寄存器(scr, system control register)的sleeponexit和sleepdeep位域,可实现立即进入或退出(中断服务程序)时进入休眠模式或深度休眠模式。
• 立即进入
执行wfi指令,mcu将立即进入休眠模式(sleepdeep为0时)或深度休眠模式(sleepdeep为1时)
• 退出时进入
将sleeponexit位置1,当退出最低优先级的中断服务程序后,mcu会进入休眠模式(sleepdeep为0时)或深度休眠模式(sleepdeep为 1时),而不需执行wfi指令 。
注:在深度休眠模式下,系统将自动关闭高速时钟,如果需要在深度休眠模式下使部分外设仍保持运行,则需要在进入深度休眠模式前,启动相应的低速时钟并将该外设时钟设置为此低速时钟。
在休眠模式或深度休眠模式下,均可通过中断来唤醒cpu,返回到运行模式。如果用户在中断服务程序中执行wfi命令进入休眠(包括深度休眠),则需要比此中断更高优先级的中断才能唤醒cpu,因此,强烈建议在准备进入休眠前,应先处理完所有中断服务程序,并且清除所有中断请求和中断标志,以下是配置进入低功耗模式时所需注意的事项。
• 建议在进入低功耗模式前加一段时间的延迟,以免出现上电就进入低功耗模式,无法烧录程序。
• 系统可以配置从deepsleep唤醒后,系统时钟来源是hsi还是进入休眠前的时钟。
• 系统进入低功耗模式,端口状态不会发生改变,此时需要客户根据实际应用来配置端口状态来达到理想的功耗值,未用端口建议配置为模拟模式。
• 其他的rtc等低功耗运行模块因在深度休眠下高速时钟停止运行,所以如果需要在深度休眠模式下运行rtc等模块,需配置模块时钟源为lsi或lse。
根据上述内容,可以配置cw32l083的低功耗应用的例程,具体的代码可以查看cw32l083的固件库中pwr_currentconsumption这一例程,配置pa04和pa05为引脚输入,并开启下降沿中断,在中断服务函数改变gkeystatus的值,从而使得mcu在main中进入低功耗休眠模式。
volatile uint8_t gkeystatus; volatile uint32_t gflagwakeupirq = 0; int main(void){ rcc_hsi_enable( rcc_hsiosc_div6); //配置系统时钟为hsi 8m inittick(8000000ul); //初始化systick led_init(); //led初始化 bsp_pb_init(); //按键初始化 while (1) { gkeystatus = 0;//在没有进入低功耗模式前,pc03每间隔1s翻转一次状态 do { pc03_tog(); //翻转led1 systickdelay(1000); //延迟1s. } while (gkeystatus == 0); pc03_setlow(); //pc03置低 deepsleepmodetest(); //进入深度睡眠模式 }}//按键初始化,设置pa05沿下降沿触发中断void bsp_pb_init(void){ gpio_inittypedef gpio_initstructure = {0}; //打开gpioa时钟 regbits_set(cw_sysctrl->ahben, sysctrl_ahben_gpioa_msk); gpio_initstructure.pins = gpio_pin_5; gpio_initstructure.mode = gpio_mode_input_pullup; gpio_initstructure.it = gpio_it_falling; gpio_init(cw_gpioa, &gpio_initstructure); gpio_configfilter(cw_gpioa, gpio_pin_5, gpio_fltclk_rc10k); //设置gpioa的中断等级为3 nvic_setpriority(gpioa_irqn, 0x03); gpioa_intflag_clr(gpiox_icr_pin5_msk ); nvic_enableirq(gpioa_irqn);}//led i/o初始化void led_init(void){ gpio_inittypedef gpio_initstructure = {0}; //打开gpio时钟 regbits_set(cw_sysctrl->ahben, sysctrl_ahben_gpioc_msk); gpio_initstructure.pins = gpio_pin_2 | gpio_pin_3; gpio_initstructure.mode = gpio_mode_output_pp; gpio_init(cw_gpioc, &gpio_initstructure); pc03_setlow();}void deepsleepmodetest(void){ gpio_inittypedef gpio_initstructure = { 0 }; pwr_inittypedef pwr_initstructure = { 0 }; //打开gpio时钟 regbits_set(cw_sysctrl->ahben,sysctrl_ahben_gpioa_msk|\ sysctrl_ahben_gpiob_msk | \ sysctrl_ahben_gpioc_msk | sysctrl_ahben_gpiof_msk); gpio_initstructure.mode = gpio_mode_analog; gpio_initstructure.it = gpio_it_none; gpio_initstructure.pins = gpio_pin_all; gpio_init(cw_gpioa, &gpio_initstructure); gpio_init(cw_gpiob, &gpio_initstructure); gpio_init(cw_gpioc, &gpio_initstructure); gpio_init(cw_gpiof, &gpio_initstructure); //关闭gpio时钟 regbits_clr(cw_sysctrl->ahben,sysctrl_ahben_gpioa_msk| \ sysctrl_ahben_gpiob_msk | \ sysctrl_ahben_gpioc_msk | sysctrl_ahben_gpiof_msk); bsp_pb_init(); //按键初始化 // 唤醒后自动使用内部高速时钟(hsi) rcc_wakeupclk_config(rcc_sysctrl_wakeupclken); pwr_initstructure.pwr_sevonpend = pwr_sevonpend_disable; pwr_initstructure.pwr_sleepdeep = pwr_sleepdeep_enable; pwr_initstructure.pwr_sleeponexit = pwr_sleeponexit_disable; pwr_config(&pwr_initstructure); pwr_gotolpmmode(); sysclkconfig_deepsleep(); led_init(); systickdelay(200); pc02_sethigh(); }}//gpioa中断服务函数void gpioa_irqhandler(void){ if(regbits_get(cw_gpioa->isr, gpiox_isr_pin5_msk) > 0) { gkeystatus = 1; gpioa_intflag_clr(gpiox_icr_pin5_msk);//清除cw_gpio中断标志 }}
上述代码可以看到在未进入低功耗模式之前,led1每1s翻转一次,通过按键key2进入低功耗模式后,led1灯灭,当再次按下key2后,重新回到正常的运行模式,led1每一秒翻转一次。通过测量可以得到,进入到低功耗模式之后,功耗显著降低。
作为一名硬件狗,你不应该坐以待毙,“高薪”、“管理”两手抓起来!
关于K8s最详细的解析
NP2300BHR(20 v n沟道增强型MOSFET)
反激式稳压器的特性及应用
量具电路厂商:北京福星晓程电子科技股份有限公司简介
CW32 低功耗模式的特性介绍
华为荣耀未来手机Magic今日发布:配置信息最新汇总
养老的智能床垫有哪些功能?
锻造过程氧化皮清洗水泵的保养方法是怎样的
天线近场测量技术探讨
凯迪拉克在美销量重回 电动化布局将助力其进入全新发展阶段
Firefly关于-RTC 使用简介
服装材料纤维、造纸、动物细毛种类检测及其损伤分析
创新才能造就国产智能手机之王
杭州市城管局党组成员一行莅临英飞特电子参观调研
阿里达摩院宣布研发AI芯片性价比是同类产品40倍
pcb是如何制造出来的
2019年1月份北美PCB销售订单量大幅下落
增强边缘智能需要什么
全面的计算成像技术研究分析