打印
[技术问答]

NE76E003功耗大问题

[复制链接]
5663|29
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
原设计使用STM8S003,移植到NE76E003.
使用4路IO的普通输入输出功能,功耗达到3mA。原设计约1mA。
有什么方案降低功耗,代码如下:
void main (void)
{

  Set_All_GPIO_Quasi_Mode;                                        // Define in Function_define.h
  set_CLOEN;  
  P13_Quasi_Mode;//使用
  P14_Quasi_Mode;//使用
  P15_Quasi_Mode;//使用
  P16_Quasi_Mode;//使用
  //IO操作
  while(1)
  {
     //IO操作
     delay_ms(10);/**/
  }
}

沙发
yiyigirl2014| | 2018-6-7 16:12 | 只看该作者
你这种一直全速跑,肯定耗电。

使用特权

评论回复
评论
xch 2018-6-10 10:04 回复TA
如果是低功耗的ARM M0+ ,20mhz速率跑也不会超过1mA。可能这mcu比较差劲 
板凳
yiyigirl2014| | 2018-6-7 16:16 | 只看该作者

这个功能用了吗

使用特权

评论回复
地板
yiyigirl2014| | 2018-6-7 16:16 | 只看该作者
空闲模式下通过保持程序计数器使CPU挂起。在空闲模式下没有程序代码的取指和运行,这迫使CPU处于待机状态。程序计数器(PC),堆栈指针(SP),程序状态字(PSW),累加器(ACC)和其他寄存器在空闲模式下保持其值不变。端口引脚保持原有状态,在空闲模式下继续工作。通常空闲模式下的功耗约为工作状态下的一半。
既然在空闲模式下,外设电路,如定时器和串口仍然工作,则可以通过使能相应中断源来唤醒CPU。用户能通过向IDL (PCON.0)位写1,使设备进入空闲模式。这条指令是系统进入空闲模式前的最后一条指令。
有两种方法可以中止空闲模式,方法一、任何使能的中断发生都可以使系统退出空闲模式。中断发生自动清零IDL位,中止空闲模式,且将执行中断源对应的中断服务程序(ISR),直到执行RETI返指令,返回后立即执行使CPU进入空闲模式的指令,使CPU进入空闲模式。第二种方法是除软件复位外的所有复位,如果看门狗复位用来中止空闲模式,WIDPD (WDCON.4)需要设置为1,让WDT在空闲模式下继续运行。

使用特权

评论回复
5
yiyigirl2014| | 2018-6-7 16:17 | 只看该作者
掉电模式
掉电模式是N76E003进入最低功耗状态的工作模式,通过停止系统时钟源保持功耗在“微安” 级。CPU和外设,如定时器或UART都待机,Flash 内存也停止,所有动作完全停止,功耗降到最低。可以通过向PD (PCON.1)写1进入掉电模式。这条指令是系统进入掉电模式前的最后一条指令。在掉电模式下,RAM 保存其内容,端口引脚的值也保持掉电模式前的不变。
N76E003有多种方法可以退出掉电模式。方法一,除软件复位外的所有复位。欠压检测复位也使CPU从掉电模式唤醒,在系统进入掉电模式之前要确保使能欠压检测。即使为了降低功耗,我们还是建议在掉电模式下开启BOD欠压检测功能。当然RST引脚的复位或上电复位也可以使CPU退出掉电模式。RST引脚复位或上电复位后,CPU初始化,并从程序开始地址执行程序。
方法二,可以通过外部中断使N76E003从掉电模式唤醒。触发外部中断管脚会重启系统时钟,在振荡器稳定后,设备执行外部中断对应的中断服务程序(ISR)。从ISR返回后,设备立即执行使系统进入掉电模式的指令接下来的指令。可以将芯片从掉电模式唤醒的中断有:外部中断 ̅̅̅̅̅̅̅ 和 ̅̅̅̅̅̅̅、引脚中断、WDT中断、WTK中断和欠压中断。

使用特权

评论回复
评论
Lchen1990 2018-11-20 10:27 回复TA
请教P20的引脚中断该怎么写呢? 
6
yiyigirl2014| | 2018-6-7 16:17 | 只看该作者
另外平时应用切换到10K振荡器。

使用特权

评论回复
7
xuanhuanzi| | 2018-6-7 17:32 | 只看该作者
没用到休眠的方式和掉电方式,肯定功耗高

使用特权

评论回复
8
Z_H_Z1102|  楼主 | 2018-6-7 17:56 | 只看该作者
xuanhuanzi 发表于 2018-6-7 17:32
没用到休眠的方式和掉电方式,肯定功耗高

除了PD模式没有别的方法降低功耗了是吗?
也不是说PD模式不能用,不过这个产品使用轮询模式容错率更高一些

使用特权

评论回复
9
Z_H_Z1102|  楼主 | 2018-6-7 17:57 | 只看该作者
yiyigirl2014 发表于 2018-6-7 16:17
另外平时应用切换到10K振荡器。

10K振荡器是指它有1M主频的工作模式吗?这个产品不能够外挂晶振

使用特权

评论回复
10
捉虫天师| | 2018-6-7 22:29 | 只看该作者
Z_H_Z1102 发表于 2018-6-7 17:56
除了PD模式没有别的方法降低功耗了是吗?
也不是说PD模式不能用,不过这个产品使用轮询模式容错率更高一 ...

有什么轮巡的?可以定时器唤醒轮巡也可以啊。不一定非要一直开着,看你的实效性,如果不是那种轮巡频率高的, 你可以100ms唤醒一次。这样也是可以总体降下去功率的。

使用特权

评论回复
11
捉虫天师| | 2018-6-7 22:30 | 只看该作者
不进入掉电模式或者空闲模式,肯定功率降不下来。

使用特权

评论回复
12
捉虫天师| | 2018-6-7 22:30 | 只看该作者
低功耗的精髓就是:系统休眠。中断唤醒。

使用特权

评论回复
13
09kk小熊| | 2018-6-8 08:15 | 只看该作者
时间要求不高的情况下可以把主时钟切换成内部10k

使用特权

评论回复
14
yjgna| | 2018-6-8 09:09 | 只看该作者
主时钟16MHz 是可以分频的, 可以分频到1MHz使用

使用特权

评论回复
评论
gx_huang 2018-6-9 09:46 回复TA
@Z_H_Z1102 :看来你不懂MCU内部时钟结构和功耗组成 
yjgna 2018-6-8 13:45 回复TA
@Z_H_Z1102 :应该是可以降低功耗的, 参考中文手册23.3章节 
Z_H_Z1102 2018-6-8 11:34 回复TA
就算分频也不是主频降低,也不会降低功耗吧? 
15
Z_H_Z1102|  楼主 | 2018-6-8 11:33 | 只看该作者
捉虫天师 发表于 2018-6-7 22:30
低功耗的精髓就是:系统休眠。中断唤醒。

轮询的频率约20ms……

使用特权

评论回复
16
Z_H_Z1102|  楼主 | 2018-6-8 11:34 | 只看该作者
09kk小熊 发表于 2018-6-8 08:15
时间要求不高的情况下可以把主时钟切换成内部10k

要用i2C   所以才想起来10K不够用啊

使用特权

评论回复
17
dongnanxibei| | 2018-6-8 15:28 | 只看该作者
可以算一下,你需要的频率,是否满足休眠条件。

使用特权

评论回复
18
小明的同学| | 2018-6-8 15:50 | 只看该作者
想低功耗又想全速运行,怎么可能。

使用特权

评论回复
19
ztb| | 2018-6-8 23:07 | 只看该作者
高低频率切换运行,等待(如轮询)时使用低频时钟只要不丢信号尽可能的低,执行任务时变成高频。这样就可以兼顾性能与功耗了。其实,程序安排好了大部分时间是在等等某个条件的。

使用特权

评论回复
20
xuanhuanzi| | 2018-6-11 16:52 | 只看该作者
呵呵,不用低功耗模式怎么可能digong低功耗。

使用特权

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

本版积分规则

21

主题

82

帖子

4

粉丝