GD32F103真正的低功耗怎么搞?

[复制链接]
5511|50
手机看帖
扫描二维码
随时随地手机跟帖
未成熟的小麦|  楼主 | 2020-3-19 11:37 | 显示全部楼层 |阅读模式
本帖最后由 未成熟的小麦 于 2020-3-20 10:33 编辑

在使用GD32F103C8T6,用pmu_to_deepsleepmode(PMU_LDO_LOWPOWER, WFE_CMD);进入深度睡眠,或者用pmu_to_standbymode(WFE_CMD);进入待机模式以后,芯片确实不干活了,也能激活,但芯片的电流还有几个毫安,跟说明书上的电流特性几个uA差好远。
想请教下各位大神,进入低功耗模式有什么要注意的地方呢?在进入低功耗模式之前,有哪些操作能降低功耗呢?谢谢~

微信图片_20200320102834.jpg

使用特权

评论回复
ykwym| | 2020-3-19 12:00 | 显示全部楼层
你用的最小系统还是?

使用特权

评论回复
未成熟的小麦|  楼主 | 2020-3-19 12:08 | 显示全部楼层
ykwym 发表于 2020-3-19 12:00
你用的最小系统还是?

21IC官方资料下的包和例程改的,没跑别的系统,上来就打开时钟,初始化引脚,初始化pmu,待机

使用特权

评论回复
sjnh| | 2020-3-19 12:19 | 显示全部楼层
楼上已经问了你系统是什么?要描述清楚
判断是CPU本身耗电,还是外部电路,还是IO口设置问题, 例如悬空的引脚设置输出,有上拉的脚是不是设置有问题,等待

使用特权

评论回复
未成熟的小麦|  楼主 | 2020-3-20 10:32 | 显示全部楼层
本帖最后由 未成熟的小麦 于 2020-3-20 10:40 编辑
ykwym 发表于 2020-3-19 12:00
你用的最小系统还是?

不好意思,之前理解错了。是用最简单的板测了,只有芯片和32K振荡,高速振荡用芯片内部的,上电初始化了时钟和引脚,引脚都设置成低电平,就进入了standby模式了 。做出来3mA的功耗。上面补了个实验的图。

使用特权

评论回复
未成熟的小麦|  楼主 | 2020-3-20 10:34 | 显示全部楼层
本帖最后由 未成熟的小麦 于 2020-3-20 10:37 编辑
sjnh 发表于 2020-3-19 12:19
楼上已经问了你系统是什么?要描述清楚
判断是CPU本身耗电,还是外部电路,还是IO口设置问题, 例如悬空的 ...

不好意思,之前理解错了。是用最简单的板测了,只有芯片和32K振荡,高速振荡用芯片内部的。做出来3mA的功耗。上面补了个实验的图。

使用特权

评论回复
评论
未成熟的小麦 2020-3-20 12:06 回复TA
@sjnh :只接电源和地也一样 
sjnh 2020-3-20 11:26 回复TA
@未成熟的小麦 :你不会是带着仿真线量的吧? 
未成熟的小麦 2020-3-20 11:11 回复TA
@sjnh :试过除了烧写口和32K振荡口,其余全部设置成GPIO_MODE_OUT_PP,输出低电平,都是一样 
sjnh 2020-3-20 10:39 回复TA
你看看IO口配置,没有用的IO(外部没有连接的IO),别设置成输入,配置成输出 
ykwym| | 2020-3-20 11:08 | 显示全部楼层
未成熟的小麦 发表于 2020-3-20 10:32
不好意思,之前理解错了。是用最简单的板测了,只有芯片和32K振荡,高速振荡用芯片内部的,上电初始化了时 ...

GPIO配置为模拟输入

使用特权

评论回复
未成熟的小麦|  楼主 | 2020-3-20 12:07 | 显示全部楼层
ykwym 发表于 2020-3-20 11:08
GPIO配置为模拟输入

也还是那么大

使用特权

评论回复
xdqfc| | 2020-3-20 15:34 | 显示全部楼层
3mA??GD32E230在4MHz的主频运行下,我是讲运行的情况下也没有这么大的电流。你先把主频降下来看看。

使用特权

评论回复
未成熟的小麦|  楼主 | 2020-3-20 15:52 | 显示全部楼层
xdqfc 发表于 2020-3-20 15:34
3mA??GD32E230在4MHz的主频运行下,我是讲运行的情况下也没有这么大的电流。你先把主频降下来看看。
...

我用的是内部的IRC8M做主振荡,没用外部高速振荡,应该怎么设置低点的主频呢?是用分频吗?

使用特权

评论回复
blust5| | 2020-3-20 15:58 | 显示全部楼层
是不是外设在工作导致电流消耗过大

使用特权

评论回复
未成熟的小麦|  楼主 | 2020-3-20 15:59 | 显示全部楼层
blust5 发表于 2020-3-20 15:58
是不是外设在工作导致电流消耗过大

没有外设了,你看看我上面放的图,就一个芯片和一个32K的振荡

使用特权

评论回复
blust5| | 2020-3-20 16:01 | 显示全部楼层
未成熟的小麦 发表于 2020-3-20 15:59
没有外设了,你看看我上面放的图,就一个芯片和一个32K的振荡

我说的外设是单片机的外设,不是外部电路

使用特权

评论回复
未成熟的小麦|  楼主 | 2020-3-20 16:10 | 显示全部楼层
blust5 发表于 2020-3-20 16:01
我说的外设是单片机的外设,不是外部电路

初始化到进入standby就这样了,大概就配置了振荡、GPIO、PMU 。大哥能不能给个低功耗的初始化源码看看呢?谢谢
  rcu_osci_off(RCU_HXTAL);
    systick_config();
    nvic_config();

    IO_init();
       
       
        exti_flag_clear(SW1_EXTI);
    exti_flag_clear(SW2_EXTI);
        exti_flag_clear(SW3_EXTI);
    exti_flag_clear(SW4_EXTI);
    exti_flag_clear(SW5_EXTI);
    exti_flag_clear(SW6_EXTI);
    exti_flag_clear(EXTI_17);
       
        rcu_periph_clock_enable(RCU_PMU);
        pmu_deinit();
    pmu_wakeup_pin_enable();
        pmu_flag_clear(PMU_FLAG_RESET_WAKEUP);
        pmu_flag_clear(PMU_FLAG_RESET_STANDBY);
       
        gpio_init(GPIOA, GPIO_MODE_OUT_PP, GPIO_OSPEED_10MHZ,0xffff);
        gpio_init(GPIOB, GPIO_MODE_OUT_PP, GPIO_OSPEED_10MHZ,0xffff);
        gpio_init(GPIOC, GPIO_MODE_OUT_PP, GPIO_OSPEED_10MHZ,0xffff);
        gpio_init(GPIOD, GPIO_MODE_OUT_PP, GPIO_OSPEED_10MHZ,0xffff);
        GPIO_BC(GPIOA) = 0xffff;
        GPIO_BC(GPIOB) = 0xffff;
        GPIO_BC(GPIOC) = 0xffff;
        GPIO_BC(GPIOD) = 0xffff;
       
        rcu_periph_clock_disable(RCU_GPIOB);
        rcu_periph_clock_disable(RCU_GPIOC);
        rcu_periph_clock_disable(RCU_GPIOD);
        pmu_to_standbymode(WFI_CMD);

使用特权

评论回复
cosmoslogic| | 2020-3-20 16:14 | 显示全部楼层
本帖最后由 cosmoslogic 于 2020-3-20 16:15 编辑

请把你的串口线拔掉,保证MCU没有任何外接电路连接,再用万用表去测试电流,排出串口漏电,刚看错了,你连的是仿真器的数据线把,断开

使用特权

评论回复
cosmoslogic| | 2020-3-20 16:19 | 显示全部楼层
本帖最后由 cosmoslogic 于 2020-3-20 16:21 编辑

漏电流

使用特权

评论回复
未成熟的小麦|  楼主 | 2020-3-20 16:22 | 显示全部楼层
cosmoslogic 发表于 2020-3-20 16:14
请把你的串口线拔掉,保证MCU没有任何外接电路连接,再用万用表去测试电流,排出串口漏电,刚看错了,你连 ...

断开了也没区别
2.jpg

使用特权

评论回复
cosmoslogic| | 2020-3-20 16:25 | 显示全部楼层
根据你设置的IO状态来判断下到底有没有进入睡眠

使用特权

评论回复
未成熟的小麦|  楼主 | 2020-3-20 16:30 | 显示全部楼层
cosmoslogic 发表于 2020-3-20 16:25
根据你设置的IO状态来判断下到底有没有进入睡眠

怎么判断有没进去呢?后面的引脚操作都没动静了,应该是进了吧。而且这个时候接上烧录线,点烧录也不能烧录了。

使用特权

评论回复
ykwym| | 2020-3-20 16:41 | 显示全部楼层
未成熟的小麦 发表于 2020-3-20 16:10
初始化到进入standby就这样了,大概就配置了振荡、GPIO、PMU 。大哥能不能给个低功耗的初始化源码看看呢 ...

你那么大个亮着的led不耗电吗

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

7

主题

54

帖子

0

粉丝