1184|2

92

帖子

0

TA的资源

一粒金砂(高级)

楼主
 

全能小网关|CH32V208--第四篇:低功耗测试 [复制链接]

本帖最后由 xiaolinen 于 2024-7-6 22:03 编辑

一:电路图修改

        将下图中的D1(LED灯)和R1电阻拆除,减少电流的耗损。

 
二:低功耗模式
        2.1,CH32V208的低功耗模式包括:睡眠模式,停止模式,待机模式,具体如下图所示:

 

        2.1,active模式
                CH32V208在正常运行工作状态的电流情况,如下图所示:
 

        2.3,sleep模式

                2.3.1,PA0引脚输入低电平触发外部中断EXTI_Line0退出sleep睡眠模式,程序在唤醒后继续执行。

                2.3.2,重点代码,如下图所示:

  • /*********************************************************************
  • * @fn EXTI0_INT_INIT
  • *
  • * @brief EXTI0中断配置,使PA0发生中断,唤醒sleep休眠
  • *
  • * @return none
  • */
  • void EXTI0_INT_INIT(void)
  • {
  • GPIO_InitTypeDef GPIO_InitStructure = {0};
  • EXTI_InitTypeDef EXTI_InitStructure = {0};
  • NVIC_InitTypeDef NVIC_InitStructure = {0};
  • RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO | RCC_APB2Periph_GPIOA, ENABLE);
  • GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
  • GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
  • GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  • GPIO_Init(GPIOA, &GPIO_InitStructure);
  • /* GPIOA.0 ----> EXTI_Line0 */
  • GPIO_EXTILineConfig(GPIO_PortSourceGPIOA, GPIO_PinSource0);
  • EXTI_InitStructure.EXTI_Line = EXTI_Line0;
  • EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
  • EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;//下降沿
  • EXTI_InitStructure.EXTI_LineCmd = ENABLE;
  • EXTI_Init(&EXTI_InitStructure);
  • NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQn;
  • NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
  • NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2;
  • NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  • NVIC_Init(&NVIC_InitStructure);
  • }
  • /*********************************************************************
  • * @fn sleep_mode_enable
  • *
  • * @brief 使能sleep休眠模式
  • *
  • * @return none
  • */
  • void sleep_mode_enable(void)
  • {
  • __WFI();
  • }

                2.3.3,sleep模式下电流情况,如下图所示:

 

        2.4,stop模式

                2.4.1,PA0引脚输入低电平触发外部中断EXTI_Line0退出stop睡眠模式,程序在唤醒后继续执行。

                2.4.2,重点代码,如下图所示:

  • /*********************************************************************
  • * @fn EXTI0_INT_INIT
  • *
  • * @brief EXTI0中断配置,使PA0发生中断,唤醒sleep休眠
  • *
  • * @return none
  • */
  • void EXTI0_INT_INIT(void)
  • {
  • GPIO_InitTypeDef GPIO_InitStructure = {0};
  • EXTI_InitTypeDef EXTI_InitStructure = {0};
  • NVIC_InitTypeDef NVIC_InitStructure = {0};
  • RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO | RCC_APB2Periph_GPIOA, ENABLE);
  • GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
  • GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
  • GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  • GPIO_Init(GPIOA, &GPIO_InitStructure);
  • /* GPIOA.0 ----> EXTI_Line0 */
  • GPIO_EXTILineConfig(GPIO_PortSourceGPIOA, GPIO_PinSource0);
  • EXTI_InitStructure.EXTI_Line = EXTI_Line0;
  • EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
  • EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;
  • EXTI_InitStructure.EXTI_LineCmd = ENABLE;
  • EXTI_Init(&EXTI_InitStructure);
  • NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQn;
  • NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
  • NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
  • NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  • NVIC_Init(&NVIC_InitStructure);
  • }
  • /*********************************************************************
  • * @fn stop_mode_enable
  • *
  • * @brief 使能stop休眠模式
  • *
  • * @return none
  • */
  • void stop_mode_enable(void)
  • {
  • PWR_EnterSTOPMode(PWR_Regulator_LowPower, PWR_STOPEntry_WFI);
  • }

                2.4.3,stop模式下电流情况,如下图所示:

 

        2.5,standby模式

                2.5.1,WKUP (PA0)引脚的上升沿退出待机模式,唤醒后程序复位。

                2.5.2,重点代码,如下图所示:

  • /*********************************************************************
  • * @fn gpio_init
  • *
  • * @brief GPIO初始化
  • *
  • * @return none
  • */
  • void gpio_init(void)
  • {
  • GPIO_InitTypeDef GPIO_InitStructure = {0};
  • /* To reduce power consumption, unused GPIOs need to be set as pull-down inputs */
  • RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOB|
  • RCC_APB2Periph_GPIOC|RCC_APB2Periph_GPIOD|RCC_APB2Periph_GPIOE, ENABLE);
  • GPIO_InitStructure.GPIO_Pin = GPIO_Pin_All;
  • GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD;
  • GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  • GPIO_Init(GPIOA, &GPIO_InitStructure);
  • GPIO_Init(GPIOB, &GPIO_InitStructure);
  • GPIO_Init(GPIOC, &GPIO_InitStructure);
  • GPIO_Init(GPIOD, &GPIO_InitStructure);
  • GPIO_Init(GPIOE, &GPIO_InitStructure);
  • }
  • /*********************************************************************
  • * @fn PWR_WakeUpPinCmd
  • *
  • * @brief Enables or disables the WakeUp Pin functionality.
  • *
  • * @param NewState - new state of the WakeUp Pin functionality
  • * (ENABLE or DISABLE).
  • *
  • * @return none
  • */
  • void PWR_WakeUpPinCmd(FunctionalState NewState)
  • {
  • if(NewState)
  • {
  • PWR->CSR |= (1 << 8);
  • }
  • else
  • {
  • PWR->CSR &= ~(1 << 8);
  • }
  • }
  • /*********************************************************************
  • * @fn PWR_EnterSTANDBYMode
  • *
  • * @brief Enters STANDBY mode.
  • *
  • * @return none
  • */
  • void PWR_EnterSTANDBYMode(void)
  • {
  • PWR->CTLR |= PWR_CTLR_CWUF;
  • PWR->CTLR |= PWR_CTLR_PDDS;
  • NVIC->SCTLR |= (1 << 2);
  • __WFI();
  • }

                2.5.3,standby模式下电流情况,如下图所示:

 

三:声明

        本次记录的实验,主要是为了熟悉芯片各种低功耗模式的进入和退出方法,所记录的电流情况,并不是各个低功耗模式下的最低情况。

查看本帖全部内容,请登录或者注册
此帖出自无线连接论坛

最新回复

主要是为了熟悉芯片各种低功耗模式的进入和退出方法,所记录的电流情况,并不是各个低功耗模式下的最低情况。 明白,就是为了熟悉   详情 回复 发表于 2024-7-7 09:24
点赞 关注(1)
 

回复
举报

7032

帖子

0

TA的资源

五彩晶圆(高级)

沙发
 

主要是为了熟悉芯片各种低功耗模式的进入和退出方法,所记录的电流情况,并不是各个低功耗模式下的最低情况。

明白,就是为了熟悉

此帖出自无线连接论坛

点评

不要这么理解,不要这么理解,只是为后续进一步使用做一下铺垫  详情 回复 发表于 2024-7-7 14:13
 
 

回复

92

帖子

0

TA的资源

一粒金砂(高级)

板凳
 
Jacktang 发表于 2024-7-7 09:24 主要是为了熟悉芯片各种低功耗模式的进入和退出方法,所记录的电流情况,并不是各个低功耗模式下的最低情况 ...

不要这么理解,不要这么理解,只是为后续进一步使用做一下铺垫

此帖出自无线连接论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
推荐帖子
查看计算机网络故障的命令

一、Ping命令 Ping命令在检查网络故障中使用广泛。网络管理人员经常会接到远程用户反映他的主机有故障,如不能对一个或几个远程系 ...

原来2007年是个伟大的半导体60周年

晶体管60周年和集成电路50周年 上世纪最伟大的基础发明之一 http://www.esmchina.com/ARTICLES/2005JUN/5/SEMIHISTORY_ESMC. ...

基于SA7527日光灯隔离驱动板

最近买了2块,SA7527日光灯隔离驱动板:适用于 T8(尺寸大的那种) T10; IC原来未知,先抄板,画原理图;最后通过论坛发了个帖 ...

LCD单层菜单翻滚的实现

在很多项目中我们都需要菜单,特别是多层菜单应用比较广泛,但是写一个能够很方便移植的多层菜单非常麻烦,我们这里就先研究一下 ...

使用ccs烧写uboot

我使用的是:DVRRDK_04.01.00.02 包 按照指导文档:DM81xx_DVR_RDK_Install_Guide.pdf ,按照DVR包,并编译uboot,内核, ...

15周年庆]EE DIY(进度)--上位机UI改动

本帖最后由 RCSN 于 2021-7-12 18:00 编辑 DIY项目详情看此贴 之前的上位机UI主题等实在丑,再优化了下UI,搞了个EE专用 ...

【国产FPGA高云GW1N-4系列开发板测评】——5、内部Flash和外部Flash程序固化测试

本帖最后由 gs001588 于 2021-12-20 00:47 编辑 【国产FPGA高云GW1N-4系列开发板测评】——5、内部Flash和外部Fla ...

一文了解增强式 eCall 汽车设计

汽车应用领域的 eCall 设计对于很多工程师来说还是比较复杂的,今天就聊聊增强式 eCall 汽车如何设计更加最简单,分享一些射频设 ...

【USB充电器DIY】快充模块测试

在安装前,先测试一下快充模块,避免DIY时出问题,再换就麻烦了。 选择的3个快充模块,两个3口一个5口,加起来有11个充电 ...

硬件工程师面试

893667 兄弟们 这个面试题 我除了看出有个R5的过流保护 真没看出其他功能。面试就问这个电路有什么功能,R5的作用。

快速回复 返回顶部 返回列表