打印

瑞萨R7F0C019芯片stop模式下功耗我只能改到0.4mA有没有降低功耗的方法

[复制链接]
2104|13
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
ashley0077|  楼主 | 2018-4-4 16:36 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
目前在使用瑞萨R7F0C019芯片,让芯片工作在stop模式下,功耗我只能改到0.4mA,程序就只让stop循环,所有外设都没使用,IO口都设置成了输出低电平,依旧降低不到50微安级别,有没有降低功耗的方法,或者修改什么?
void main(void)
{
    DI();                                       /* Disable interrupt */
    /* ---- Main loop ---- */
    while (1U)
    {
        STOP();                              
       NOP();
    }
    /* End user code. Do not edit comment generated here */
}

相关帖子

沙发
wangyisnen007| | 2018-4-4 16:43 | 只看该作者
芯片手册上芯片的最低功耗是多少呢?

使用特权

评论回复
板凳
ashley0077|  楼主 | 2018-4-4 17:04 | 只看该作者
只有几微安

使用特权

评论回复
地板
xch| | 2018-4-5 19:20 | 只看该作者
是独立运行还是连接着仿真器?
这个电流似乎对应主时钟未关闭。
如果是独立运行,将程序之中STOP()语句后的NOP();改成EI();看看是不是有挂起的中断未处理,使得MCU无法stop。

使用特权

评论回复
评论
xch 2018-4-5 19:22 回复TA
如果连接仿真器调试,在NOP()这里设置一个断点。看看是不是真的STOP 
5
ashley0077|  楼主 | 2018-4-8 16:02 | 只看该作者
xch 发表于 2018-4-5 19:20
是独立运行还是连接着仿真器?
这个电流似乎对应主时钟未关闭。
如果是独立运行,将程序之中STOP()语句后 ...

我尝试连着仿真器在NOP()处设置断点,运行起来会进入NOP();这是说明没有真正进入STOP?一般不是说执行STOP之后就会关闭主时钟的吗?

使用特权

评论回复
6
xch| | 2018-4-8 16:57 | 只看该作者
ashley0077 发表于 2018-4-8 16:02
我尝试连着仿真器在NOP()处设置断点,运行起来会进入NOP();这是说明没有真正进入STOP?一般不是说执行S ...

STOP 不是这样解释的。  

好像红灯亮了,照样有人闯红灯。


使用特权

评论回复
7
ashley0077|  楼主 | 2018-4-8 19:32 | 只看该作者
那有没有什么好的解决办法呢?我把一些输入脚全部置成低电平了,电路板上的输出脚大部分都置成了输出低电平,然后断开仿真器测得下来的电流是0.12mA,这个电流有点类似Halt 模式下的8M低速主时钟的功耗,但是我的副系统时钟32.768k也是可以用的,不明白为什么电流会这么高?

使用特权

评论回复
8
xch| | 2018-4-8 23:38 | 只看该作者
ashley0077 发表于 2018-4-8 19:32
那有没有什么好的解决办法呢?我把一些输入脚全部置成低电平了,电路板上的输出脚大部分都置成了输出低电平 ...

这个电流好像输入空闲引脚电流。 用铅笔逐个引脚碰碰,看看电流会不会变化。
如果变化,就检查该引脚设置

使用特权

评论回复
9
ashley0077|  楼主 | 2018-4-9 19:50 | 只看该作者
有个引脚是ad转换的输入脚,外接了电源分压1.2V,如果把这个脚给接地电流就很小了,就可以达到几微安了。谢谢大神指点~

使用特权

评论回复
10
ashley0077|  楼主 | 2018-4-9 20:21 | 只看该作者
xch 发表于 2018-4-8 23:38
这个电流好像输入空闲引脚电流。 用铅笔逐个引脚碰碰,看看电流会不会变化。
如果变化,就检查该引脚设置 ...

大神,我现在做的这个板子当时测试的电流是在所有外设都关闭,并且主程序也不做任何事情,端口都配置了输出低电平,还有那个ad脚置成了输入接地,才达到电流几微安,我把这些配置放到我的真正的程序里用起来就发现并不是那么实用,用了RTC用了IT用了外部中断,和ad转换,ad用完我就关闭了,分压电阻也选的很大的电阻,但是电路的电流还是,0.3毫安,这个时候我把ad引脚接地也没效果了,还是0.3毫安左右,但是我看了芯片资料那些功能加进去也不至于会产生那么大的电流啊,我的程序是用RTC0.5秒产生中断.IT定时器是125ms中断,这些功能我屏蔽之后发现也还是很大的电流,我考虑难道还是引脚没配置好,于是我在每次循环进入stop前都会把所有引脚置成输出低电平,这个时候就奇怪了发现电流反而变得更大变成了1.9mA了,我现在也不知道该怎么改了,发现怎么改电流都不合适

使用特权

评论回复
11
xch| | 2018-4-10 09:16 | 只看该作者
ashley0077 发表于 2018-4-9 20:21
大神,我现在做的这个板子当时测试的电流是在所有外设都关闭,并且主程序也不做任何事情,端口都配置了输 ...

在STOP 指令前后加两个函数,利用某个pin 输出CPU空闲状态占空比.

比如STOP前插入输出高电平函数.
STOP 后 插入输出低电平函数.
用万用表测量输出平均电压,可得.
如果低功耗,这个电压应该几乎等于MCU 的供电电压

使用特权

评论回复
12
sum123456| | 2018-4-11 13:44 | 只看该作者

大神,我现在做的这个板子当时测试的电流是在所有外设都关闭,并且主程序也不做任何事情,端口都配置了输出低电平,还有那个ad脚置成了输入接地,才达到电流几微安,我把这些配置放到我的真正的程序里用起来就发现并不是那么实用,用了RTC用了IT用了外部中断,和ad转换,ad用完我就关闭了,分压电阻也选的很大的电阻,但是电路的电流还是,0.3毫安,这个时候我把ad引脚接地也没效果了,还是0.3毫安左右,但是我看了芯片资料那些功能加进去也不至于会产生那么大的电流啊,我的程序是用RTC0.5秒产生中断.IT定时器是125ms中断,这些功能我屏蔽之后发现也还是很大的电流,我考虑难道还是引脚没配置好,于是我在每次循环进入stop前都会把所有引脚置成输出低电平,这个时候就奇怪了发现电流反而变得更大变成了1.9mA了,我现在也不知道该怎么改了,发现怎么改电流都不合适

使用特权

评论回复
13
ashley0077|  楼主 | 2018-4-11 15:34 | 只看该作者
现在板子功耗很低了,其实还是AD的问题,使用完AD功能,要执行关闭指令,并置ADCS=0; ADCE=0; ADCEN = 0U;这个时候电流才会降到很低。

使用特权

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

本版积分规则

1

主题

11

帖子

0

粉丝