STM32L系列低功耗调试《实用篇》

            不知道大家有没有和我一样的经历,看官方数据手册,什么休眠2uA, 停机多少nA,这么换成自己调试的时候就是上百uA

    了,差的不是一个数量级,有木有这样的感受~

           最近在做一个NB项目,用到了如下外设: 外部唤醒引脚,串口,SPI,DMA,ADC,RTC,模拟IIC等外设,可以说是一个综合型项

    目了吧,    最后调试下来整机<10uA 待机功耗(实测 8.2uA, RTC 1s 唤醒一次,NB模块待机 2uA );

    硬件介绍:

        单片机是STM32L151R8T6-100pin 的,外接一个SPI 数据存储器,2 个IIC 的传感器,NB 串口模块;

        系统直接采用3.2V磷酸铁锂电池供电;

        SPI存储器和IIC传感器的电源直接用IO 口来控制使能;

  低功耗调试技巧:

        ① 开机时候除了PA13 和PA14 不要初始化外,其他IO 口全部初始化成无上拉模拟输入;

            IO 口作为输出的话,Speed 建议设置成400KHz(对于串口115200 来说,400K 是足够了),SPI 速度稍微快点

        ② 可以设置成2M的速度;

        ③ 串口的Rxd引脚设置成模拟输入(有无上下拉看实际效果);

            Txd引脚设置开漏无上下拉;

        ④ SPI的4个脚全部配置成开漏无上下拉,然后输出低电平;

        ⑤ 如果一些IO口配置成上拉输出,睡眠的时候必须要拉低,这个时候一定要将该IO配置成开漏无上下拉的;

        ⑥ 睡眠之前要关闭ADC ,串口和SPI 等外设;

            关闭外设三部曲: 

                    a) 先将开启的中断全部关闭掉;

                    b) xxx_Cmd(xxx,DISABLE);

                    c) xxx_Deinit(xxx);

                    ps: 网上说最后还需要关闭外部IO 总线时钟, 其实这个真没有必要!

          ⑦ 唤醒后记得将睡眠之前配置的IO 和外设全部再重新初始化一遍喔~

                 按照我的建议调试,发现休眠后功耗依然很大,请仔细看看你的外设电是不是没有断彻底,mos管或者三极管上还有漏电

        什么的,用的DC-DC功耗比较大等等;

        当所有的外设都关闭完之后,功耗依然不理想,请检查每个IO口配置是否合理;

        对于IO口检查的原则就是不能形成回路(通俗的说就是不能有压差);

        当IO口内部形成回路的时候,外部是测不出来的 :

            例如配置成上拉输入,睡眠时候输出低电平这样的情况就只能在代码里找问题了;


猜你喜欢

转载自blog.csdn.net/yunjie167/article/details/80939794