你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32F030低功耗测试  

[复制链接]
nk714 发布时间:2015-8-28 19:25
本帖最后由 nk714 于 2015-8-28 19:41 编辑
1 N1 L; M6 M0 h9 w; m" p' Y, W% a; e( a" t4 N% {& m
测试芯片:STM32F0308 a2 V' C! G) d/ @  M) s
测试PCB板:自主读卡模块PCB
+ G0 P" C4 o; k测试电源:PCB板5V输入经过低压差LDO输出3.3V LDO自身功耗2.99uA
, H- ^6 V, K/ P' w2 ?" S低功耗模式:待机模式+IWDG看门狗唤醒- r2 @1 `/ L7 a# Z$ ~

- ~7 {2 x6 ^; j! r+ G1 Z& d& {* E

( C$ E9 e8 Y$ O" \$ o5 q/ A电流数据:
  w& D. {. I/ T9 c. a  jSMT32F030C8T6                   4.32uA   
+ A: G$ _( n, ^( M7 I低压差LDO                           2.99uA
5 f2 k, e/ i* I' x4 p读卡IC低功耗                       0.07uA# \2 @2 y0 ~0 ?2 N4 B% j" @& y$ {

$ z2 a' t1 y% J! t( F: Y9 K) V+ c. n+ H3 A/ ]* u' W

9 n* x5 b: x5 \; r, ~2 ?- {1 Z/ b  O1 m9 x: c
低功耗测试注意事项:: M) p4 J: E- \
测试过程中也曾经出现电流大的现象,现在逐一说明
0 r6 m$ [, v: |1 D1 B* B0 ], {8 Y
1.最开始直接调用库函数《PWR_EnterSTANDBYMode();》进入待机模式函数,发现电流有几个mA,经过测量IO口发现进入待机模式后个别IO口有高电平有低电平,电流消耗明显,因此在进入待机模式前先将全部IO配置为输入模式、下拉使能,再次测试进入待机模式,电流减小为17.25uA。
  G6 k- @: q3 m/ X8 F# W4 X7 z* E# B2 D
2.17.25uA也与数据手册待机模式的几个微安还是相差甚远,最后经过全面搜罗资料与借鉴别人经验发现一个特点,STM32F030必须在进入待机模式前调用《RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR, ENABLE);》使能电源管理寄存器时钟函数,否则也能进入待机模式,但电流会增大十几个微安。此时电流减小为3.24uA。
7 d" I4 ?3 C; x0 }) t' T5 f2 V% }$ v7 _
3.配置好IWDG看门狗,电流略有增加变为4.32uA,看门狗消耗电流1.08uA。此时待机低功耗模式基本正常。
: L/ [7 c! }5 i8 t9 {7 R
" ^- \5 t! j3 a0 R- W3 w$ G" m0 A+ W$ i4 I# @, J4 c" R! g
1 W* o) }4 K( D2 o

& ~& K- m' `! d/ m5 D9 q6 _  v* D- `% z; S/ F
调试经验:0 A$ P6 Q; h6 n; Y$ Q
1.如果进入待机模式电流为mA级别,那一定是IO口或者外设配置问题导致消耗电流比较大,需要重点检查IO配置和外设配置。
$ {8 v% C5 @; z+ t8 I) E3 @) u$ j/ w  t/ F7 X
2.如果进入待机模式电流为几十uA的级别,那就要确认是否已经使能电源管理的时钟,如果电源管理时钟已经使能则需要检查PCB板焊接后是否清洗干净,实测焊接一个外部芯片或者电源的滤波电容,若不清洗干净会导致电流增大数uA到数十uA, 所以电流在数十uA级别时不一定是配置问题,有可能是你的PCB板没洗干净导致电流泄露引起的电流过大。切记PCB洗干净,否则也会在测试过程中发现每焊接一次再测试板子的电流就与上次测试电流不同了,我是每次焊接完成拿洗板水清晰两次,芯片的话引脚会清晰多次。
/ n( Y0 m- l# p
, \! `/ B+ n! C* [/ y* ~4 l3.测试电流最好用指针的微安表,能直观的观察到电流的变化和波动,数字万用表数字跳动很难确定实际功耗电流。并且不同级别的数字表测试uA电流有可能差别很大,甚至比指针表大很多,不要盲目迷信数字表,我用安捷伦的手持表测试uA依然数字乱跳。
1 Z: Z0 j6 {$ c: P7 v' [0 Z2 O+ J. e6 p: ?$ H  A
4.指针微安表可以并接一个低压差的二极管,来保护uA表免受在上电过程中的瞬间大电流的冲击。这个是通过二极管的PN结压降实现的,原理请自行百度。
( w: |  }! T6 V0 N& j: p$ e( E+ ~! _( E$ R7 ?
5.关于编程,我是用SWD接口编程,为了省空间去掉了SWD的复位脚,造成进入待机模式后时钟停止无法进入编程模式,此时只要先用镊子将复位脚对地短接,然后点击下载,看到下载器开始检测芯片时松开复位脚即可正常编程。; X; v8 y; i% t0 K5 }7 ?

7 F2 H9 \  `4 ?- M* ^
" R- Q7 n; \; e1 W) q- e9 ?
6 Q. N! t, m* m5 u) h" Z5 r! v" R$ Q% K7 O) f5 p2 [. T
最终效果
2 @1 \+ l+ f, n2 H; H5 P测试板最终效果实现每200ms唤醒一次,然后启动读卡芯片读卡,成功读到卡后通过UART接口把卡号发送出去然后进入休眠,若检测不到卡片则直接进入休眠等待下次唤醒。正常工作电流:有卡时=12uA~14uA  无卡时=9uA~11uA
7 a# y. a- |* a1 q: M5 N) B. x4 G& Q- w* J$ s: A

4 J6 ?* Y4 u7 Y
7 I4 j1 @) p  b* l# L! T部分测试代码示例# F1 Q4 a% c" v0 k: r
int main(void)
  a- ?; l& }5 H/ s5 I{
! @6 S1 S- n3 L# l    SystemInit();                                        // 配置系统时钟           
3 d/ o$ p* s3 o* |% n8 ^    SysTick_Config(TICK_10ms);                 // 配置系统时基定时器
7 D1 W' S3 M; P) G; t4 ?" R    IWDG_Init(IWDG_200ms);                    // 初始化看门狗
3 J% F, w! ^7 B' ^+ r3 J6 g# y2 K3 u% b) F
    while(1)$ f* u# V1 I  l: r: m
    {3 ^) j/ l- r# {5 ^
         LowPowerIOConfig();                      // 所有IO口配置为输入 下拉使能
/ g- Y* k. a9 d3 p$ g& d         RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR, ENABLE); // 使能电源管理时钟
: S9 S) X4 M; d( M3 u( K0 O* B, ^$ E         PWR_EnterSTANDBYMode();            // 进入待机模式2 H" @5 M1 f: G+ e5 k
     }
5 G6 w' X3 |- E% c$ h}  P2 d9 b) D; m, \2 ^" \# O
2 Y) g1 q. i4 Q; b6 o
  e; i$ `. F' G/ x- M
致谢:4 v" d! H" R+ x; |
调试过程中一度进入毫无头绪的过程中,网络搜索很多描述都是不完全的,大多数是只写了低功耗当中注意的个别要点,但也有了很好的借鉴,为了方便其他朋友调试,写了这篇从头到尾的调试笔记,只希望尽量完整描述整个调试过程,供大家偶然借鉴之以期望少走弯路。同时感谢各个论坛中的分享自己调试经验的朋友。, d; G/ k: v6 z0 i" H( Z
& A& ?2 B3 z# h2 f3 X  L3 b8 z
% @- J: B& J! |* d1 L

2 h- S" p, {4 M. W
赞 收藏 7 评论22 发布时间:2015-8-28 19:25

举报

22个回答
laishipeng 回答时间:2017-6-15 13:58:28
楼主,我用的芯片也是stm32f0的,请问下,开了PWR时钟无法唤醒怎么回事呢?不开时钟的时候是可以正常唤醒的,开了就不行了。
1 Q1 {1 N6 f$ {$ N" N RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR, ENABLE); // 使能电源管理时钟(就是这句)
liugf 回答时间:2019-1-24 14:19:57
我在用STM32F030C8T6做低功耗产品,停止CPU还有1毫安多,一直降不下来,正在发愁时。看了本帖子,采用这些方法,功耗立即降下来,效果非常好。* }. b/ D6 o; F7 J% k- {- Q
谢谢帖主nk714,谢谢技术大牛。
党国特派员 回答时间:2015-9-3 15:45:13
好文章,值得学习。。。 null - 副本 - 副本 - 副本.png null - 副本 - 副本.png null - 副本 (3).png null.png
mark0668 回答时间:2015-8-28 20:59:00
感谢分享!
wyxy163@126.com 回答时间:2015-8-29 14:24:41
提示: 作者被禁止或删除 内容自动屏蔽
夏明smile 回答时间:2015-8-29 16:15:09
内核问题一直不知道是怎么回事????
nk714 回答时间:2015-9-1 23:35:50
数码小叶 发表于 2015-8-29 14:24& x- E2 h$ l) u& ?$ x% n
无图,用啥测试的
5 Q( ^7 f6 a) B, s  e1 J' \7 c1 P
用指针微安表头
nk714 回答时间:2015-9-1 23:37:23
夏明smile 发表于 2015-8-29 16:15. U& b" |: p! o2 @+ U' l
内核问题一直不知道是怎么回事????

+ k# K1 B/ O1 \内核有什么问题?
夏明smile 回答时间:2015-9-3 09:06:14
nk714 发表于 2015-9-1 23:377 o1 y/ b, H. ]( ^
内核有什么问题?
7 V" a& E  v2 l+ `7 H5 C: W6 w
内核不一样,移植起来有些麻烦
32F 回答时间:2015-11-11 15:35:14
% D# X' z. \* ~! J- A% }
好文章,值得学习
peter001 回答时间:2015-11-12 13:00:54
值得学习
32F 回答时间:2015-12-1 11:46:50

' A# ^5 {& `# p3 n  H  v* e
) \) A% \7 e1 h2 B. w- p" v5 ^好文章,值得学习
123456Kelly 回答时间:2015-12-6 10:32:12
很不错,感谢分享。
Ω囿圉Ω 回答时间:2016-11-10 19:57:53
学习了。
zbber 回答时间:2016-11-10 23:51:37
好文章,值得学习
zengyi703-16313 回答时间:2016-11-11 08:10:40
学习了  
12下一页

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版