打印

请教MCU低功耗问题

[复制链接]
1980|15
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主

最近在做一个简单的红外对管检测,如上图,整个芯片就用到这2个脚,其他都没用,都没接外界器件,PA2脚就用来输出控制发射管,PA1用来输入检测判断高低电平。

程序开始就把PA2拉高发射,PA1检测判断到有障碍,有障碍PA1就会出现一个短暂低电平的变化,然后就进入sleep模式,在用WDT溢出唤醒,再把PA2拉高,再检测。。。(如此循环下去),,进入sleep前就把没用的管脚和PA2都设置为弱上拉输出拉低,PA1就保持弱上拉输入。

现在就出现问题,测试过完全休眠可以达到6uA,但运行上面所述的就会出现一个跳变的电流,从6uA~160uA,硬件上是没问题的,别人就能做到6uA~60uA左右。
现在就是软件上的问题,是不是我的管脚设置出现问题还是其他的问题,纠结了几天,一直没找到问题。求高手指点啊!!
下面是芯片的管脚内部结构图

相关帖子

沙发
lyjian| | 2013-8-31 21:35 | 只看该作者
弱上拉了还输出低,明显就是想浪费电

使用特权

评论回复
板凳
jeasonpaul|  楼主 | 2013-8-31 21:50 | 只看该作者
lyjian 发表于 2013-8-31 21:35
弱上拉了还输出低,明显就是想浪费电

谢谢回复!!这个有关系的吗?不是说休眠时给它一个稳定的电平就OK了吗?可以结合电路和内部的IO结构图详细讲讲吗?到底什么时候才要用到它内部的弱上拉啊?:handshake

使用特权

评论回复
地板
shell.albert| | 2013-8-31 22:01 | 只看该作者
都弱上拉,还输出低,明显浪费电,2楼说的很对。
强弱上拉的区别在于对后级的负载能力。

使用特权

评论回复
5
jeasonpaul|  楼主 | 2013-8-31 22:08 | 只看该作者
shell.albert 发表于 2013-8-31 22:01
都弱上拉,还输出低,明显浪费电,2楼说的很对。
强弱上拉的区别在于对后级的负载能力。 ...

谢谢回复!!
那是不是要使能弱上拉,设置输出高啊?还是不要用弱上拉,直接输出低啊?
对这方面接触较少,可以详细说明吗?:)

使用特权

评论回复
6
chunyang| | 2013-8-31 22:31 | 只看该作者
弱上拉是通过一个电阻将IO输出拉高到Vcc,输出为0时,当然就会有电流从该电阻上流过,而且弱上拉时会有电流通路流经Q的发射结,这样的电路当然功耗较大。
改进方法:要么将输出配置成推挽态后输出逻辑0,要么改用PNP管或P沟道MOS管配合负逻辑设计驱动LED。前者要求MCU支持推挽型输出,后者任何MCU皆可用。

使用特权

评论回复
7
jeasonpaul|  楼主 | 2013-9-1 12:45 | 只看该作者
有人能给出个准确的答案吗,直接告诉我这2个IO口该怎么设置才能达到最小功耗啊

使用特权

评论回复
8
jiangqingqiao| | 2013-9-1 12:58 | 只看该作者
楼上不是说了吗,我觉得可行,你可以试试啊

使用特权

评论回复
9
tyw| | 2013-9-1 13:06 | 只看该作者
微功耗要领在于CPU冬眠后,周边连接都关闭.
由于CPU冬眠后I/O口为输出高,所以你的I/O所连接的设备要具有"1"关闭的特性.因此选用NPN管子是不合适的.要换成PNP管子,"1"截止,"0"打开才行.阿希?哈哈

使用特权

评论回复
10
gx_huang| | 2013-9-1 13:12 | 只看该作者
没有看懂LZ的意思。
是检测是否有障碍物的过程中,耗电瞬间达到160UA,而别人的是60UA吗?
硬件一样吗?

使用特权

评论回复
11
yuanlu20082002| | 2013-9-1 16:13 | 只看该作者
你应该是打开发送管时的电流时160uA 而别人是60uA.
那你在初使化时,I/O全部设置不使能弱上拉,这样会降低一些功耗。
根据三极管放大倍数,计算下三极管基极上的电阻到合适,R5为1K换成(假设单片机供电时5V)4.7K。这时功耗为减少4uA的功耗,其他类推。每个耗电的地方计算好参数,就会降低很多功耗的。
软件上的打开发送管的时间也计算好。如果原来打开发送时间原来是100us改成50uS,如果测试接收稳定正常。这样功耗又降低一半。

使用特权

评论回复
12
jeasonpaul|  楼主 | 2013-9-1 23:08 | 只看该作者
gx_huang 发表于 2013-9-1 13:12
没有看懂LZ的意思。
是检测是否有障碍物的过程中,耗电瞬间达到160UA,而别人的是60UA吗?
硬件一样吗? ...

谢谢回复!
硬件是没问题的。都一样的
都是在检测是否有障碍的过程,电流从6uA(休眠时的电流)开始慢慢上升40、60左右,但会突然出现一个瞬间达到160uA的电流,就一直想不懂,为什么会出现一个瞬间的160uA的电流,而别人的却没有!

使用特权

评论回复
13
jeasonpaul|  楼主 | 2013-9-1 23:17 | 只看该作者
yuanlu20082002 发表于 2013-9-1 16:13
你应该是打开发送管时的电流时160uA 而别人是60uA.
那你在初使化时,I/O全部设置不使能弱上拉,这样会降低 ...

谢谢回复!
意思是一直不用内部弱上拉吗?
硬件是没问题的,只是软件编程上的问题。只是想不懂为什么会出现一个瞬间的160uA电流,而别人的只是出现60uA左右的电流。

使用特权

评论回复
14
gx_huang| | 2013-9-2 08:11 | 只看该作者
VCC是多少?
R5=1K,光这个基极驱动电流就有:
(VCC-0.7)/1K,如果VCC=3V,已经是2.3mA了。
你这个160UA是怎么测试的?难道把GPIO的负载都去掉?

使用特权

评论回复
15
lanqiao1026| | 2013-9-2 10:11 | 只看该作者
仔细观察一下,160uA时,发生了什么事情!一定是发生了某个过程,才会变化的!

使用特权

评论回复
16
tty1| | 2013-9-2 10:17 | 只看该作者
jeasonpaul 发表于 2013-9-1 23:17
谢谢回复!
意思是一直不用内部弱上拉吗?
硬件是没问题的,只是软件编程上的问题。只是想不懂为什么会出 ...

你把别人的电路也贴出来,让大家帮你分析。

使用特权

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

本版积分规则

8

主题

23

帖子

0

粉丝