未成熟的小麦 发表于 2020-3-19 11:37

GD32F103真正的低功耗怎么搞?

本帖最后由 未成熟的小麦 于 2020-3-20 10:33 编辑

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

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的功耗。上面补了个实验的图。

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没有任何外接电路连接,再用万用表去测试电流,排出串口漏电,刚看错了,你连 ...

断开了也没区别

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不耗电吗{:sweat:}
页: [1] 2 3
查看完整版本: GD32F103真正的低功耗怎么搞?