【技术大神】系统功耗优化大法:软件篇


在电池供电的医疗,消费电子及自动化家居产品中,更长的电池寿命一直是工程师热衷的话题,低功耗不仅依赖于硬件设计,同时也依赖于硬件的使用方法。针对带有MCU的产品,嵌入式软件设计的好坏对功耗也有很大的影响。本文我们就讨论一下如何在源代码上对功耗进行一些优化。
我们经常会在设计中遇到这样的问题,就是需等待I/O或外围设备的状态发生变化,方可进行相关的操作。去完成这个任务,我们可以用轮询等待的方式,但这种方式比较适合状态变化很快的情况。如果I/O或者外围设备的状态变化周期很长或者没有周期性,那么轮询等待的方式就会浪费大量的CPU时间,从中情况我建议采用中断的方式比较合适,或者利用Timer中断来完成功能。
延时是我们设计中经常遇到的另一个问题。我们可以用for或者while循环的方式来进行软件延时,例如:
这种软件延时会导致CPU不停的执行指令来达到让期望时间消耗掉,同时电能也被无谓的消耗了。在长时间延时的场合,应用硬件定时器是一个更好的延时方法。配置好定时器的相关寄存器之后,CPU就可以进入低功耗模式等待定时器的中断到来,这样可以更好的节省功耗。
传统DMA技术可应用于提高传输速度。现在很多的MCU,比如SILICON LABS EFM32系列单片机可以通过DMA技术来提高设备的灵活性、速度和功耗。在DMA传输过程中可以让CPU进入低功耗模式,从而代替CPU直接完成相关的工作,在EFM32的调试中发现应用DMA比直接CPU完成相同的工作功耗会更低一些。
合理的应用基于任务的软件设计方法或者RTOS设计方法。在基于任务的设计中,空闲任务可以被定义为优先级最低的任务,只有在没有其它任务要执行的时候才执行空闲任务。空闲任务是一个很好的执行功耗管理的地方。实际上,在每次进入空闲任务的时候,它就会设置处理器进入某一低功耗模式。很多的处理器都有很多种不同的低功耗模式,他们可以把不同的内核进行部分关闭,也可以关闭或者降低时钟的频率。
CPU的频率问题。CMOS MCU的能量消耗理论上按照如下公式进行计算:P=f×U^2×k,其中f是时钟频率,U是供电电压,k是一个常数。
这说明时钟频率是电源消耗的一个因素,如果系统以50MHz运行的情况下,会有很少的机会进入睡眠模式,那么同一系统以100MHz运行就会有50%的时间进入睡眠模式。如果最终时钟频率和功耗不是线性关系,那么选择一个合适的时钟频率来达到低功耗就显得很重要。
以上只是一些基本的软件优化方法,在实际的应用中合理的运用这些优化方法,可以让MCU以更加环保的方式进行工作。
作者:BYGT
看到这里您是否又有项目灵感需实现,点击下面开发软件帮你忙。
- |
- +1 赞 0
- 收藏
- 评论 3
本网站所有内容禁止转载,否则追究法律责任!
评论
全部评论(3)
-
MH居士 Lv3. 高级工程师 2018-12-20先MARK,找时间再看
-
大虾 Lv6. 高级专家 2018-01-21比较有参考价值,对我们解决处于临界状态的整机功耗超标问题很有意义。
-
winthony Lv6. 高级专家 2016-09-05系统功耗确实是个头疼的问题,需要特别注意,尤其是电池供电系统
相关推荐
【经验】如何使用32位超低功耗MCU外设反射系统功能?
外设反射系统(PRS)是 Silicon Labs EFM32系列MCU专有的外设互联总线,它允许不同的外设无需CPU干预即可直接相互通信。
世界上最节能的微控制器EFM32之十大低功耗奥秘
Silicon Labs EFM32 32 位微控制器系列是世界上最为节能的微控制器,特别适用于低功耗和能源敏感型应用,包括能源、水表和燃气表、楼宇自动化、警报及安防和便携式医疗/健身器材。本文着重强调10个Silicon Labs32位MCU功耗低的因素。
SILICON LABS 32-bit Microcontroller选型表
SILICON LABS 32位MCU选型,频率24MHz~80MHz,Flash存储4kB~2048kB,RAM存储2kB~512kB。
产品型号
|
品类
|
系列
|
Frequency(MHz)
|
Flash (kB)
|
RAM (kB)
|
Vdd min(V)
|
Vdd max(V)
|
Package Type
|
Package Size (mm)
|
Internal Osc.
|
Debug Interface
|
Cryptography
|
Dig I/O Pins
|
ADC 1
|
DAC
|
USB
|
Cap Sense
|
LCD
|
Temp Sensor
|
Timers (16-bit)
|
UART
|
USART
|
SPI
|
I2C
|
I2S
|
EMIF
|
RTC
|
Comparators
|
EFM32GG290F512-BGA112
|
32位MCU
|
EFM32 Giant Gecko
|
48
|
512
|
128
|
1.98
|
3.8
|
BGA112
|
10x10
|
±2%
|
ETM; SW
|
AES-128 AES-256
|
90
|
12-bit, 8-ch., 1 Msps
|
12-bit, 2 ch.
|
-
|
Cap Sense
|
-
|
Temp Sensor
|
4
|
7
|
3
|
3
|
2
|
1
|
0
|
RTC
|
2
|
选型表 - SILICON LABS 立即选型
SILICON LABS EFM32PG23/EFM32PG22 32-bit Microcontrollers选型表
EFM32PG23 Series 2 and EFM32PG22 Series 2 MCUs
产品型号
|
品类
|
Series
|
Core
|
Max GPIO
|
Max LCD Segments
|
Max Temperature(℃)
|
Vdd Min (V)
|
Vdd Max (V)
|
Frequency(MHz)
|
Flash (kB)
|
RAM (kB)
|
Dig I/O Pins
|
Security
|
ADC 1
|
USB
|
Temp Sensor
|
UART
|
RTC
|
Package Type
|
Package Size (mm)
|
Internal Osc.
|
Debug Interface
|
Cryptography
|
EFM32PG23B200F128IM40
|
Microcontroller
|
EFM32PG23 Series 2
|
ARM Cortex-M33
|
34
|
4 x 20
|
125
|
1.71
|
3.8
|
80
|
128
|
64
|
29
|
Vault
|
16-bit, 12-ch., 1 Msps
|
×
|
Temp Sensor
|
3
|
RTC
|
QFN40
|
5x5
|
2%
|
Secure; SW; ETM
|
AES-1
AES-256
|
选型表 - SILICON LABS 立即选型
超低功耗MCUEFM32能耗模式探讨
世强代理的Silicon Labs EFM32 MCU 旨在在低能耗模式下实现高度的自主运行。该MCU 智能结合了外围设备、低漏电 RAM、数据保持、DMA 和互联能力、低功耗振荡器以及极短的唤醒时间,因此长时间在低能耗模式下的运行效果很好,大幅降低了能耗。
使用Simplicity Studio开发Silicon Labs 32位低功耗MCU EFM32JG,怎样打开浮点printf()?
Simplicity Studio集成开发环境IDE使用带newlib-nano的GCC。为了节省代码尺寸,newlib-nano中的printf缺省状态下并未 支持浮点输出。 加入"-u _printf_float" 作为链接选项以获得printf函数对%f的支持。为达此目的: 在project explorer中右击工程根部选中Properties导航到C/C++ Build > Settings > Tool Settings > Gnu ARM C Linker > Miscellaneous添加"-u _printf_float" 到Linker flags。
SILICON LABS EFM32 Wonder Gecko 32-bit Microcontroller选型表
SILICON LABS 32位MCU选型,基于48MHz Frequency,64kB~256kB Flash,32kB RAM等参数进行选型。
产品型号
|
品类
|
Frequency(MHz)
|
Flash (kB)
|
RAM (kB)
|
Dig I/O Pins
|
ADC 1
|
DAC
|
Cap Sense
|
Temp Sensor
|
Timers (16-bit)
|
UART
|
USART
|
SPI
|
I2C
|
I2S
|
EMIF
|
RTC
|
Comparators
|
Vdd min(V)
|
Vdd max(V)
|
Package Type
|
Package Size (mm)
|
Internal Osc.
|
Debug Interface
|
Cryptography
|
ADC
|
EFM32WG230F128-QFN64
|
Microcontroller
|
48
|
128
|
32
|
56
|
12-bit, 8-ch., 1 Msps
|
12-bit, 2 ch.
|
Cap Sense
|
Temp Sensor
|
4
|
5
|
3
|
3
|
2
|
1
|
0
|
RTC
|
2
|
1.98
|
3.8
|
QFN64
|
9x9
|
±2%
|
ETM; SW
|
AES-128 AES-256
|
8 x Ch 500 x MSPS 12 x bit
|
选型表 - SILICON LABS 立即选型
最多节省90%能耗,USB微控制器EFM8UB强势来袭!
EFM8UB是一个高性价比的MCU系列,内置USB外设接口(具有8KV静电防护)及高精度的晶振、时钟恢复电路和收发模块,兼容全速USB2.0,无需外部晶体。
SILICON LABS EFM32 Leopard Gecko 32-bit Microcontroller选型表
SILICON LABS 32位MCU选型,基于48MHz Frequency,64kB~256kB Flash,32kB RAM等参数进行选型。
产品型号
|
品类
|
Frequency(MHz)
|
Flash (kB)
|
RAM (kB)
|
Dig I/O Pins
|
ADC 1
|
DAC
|
Cap Sense
|
Temp Sensor
|
Timers (16-bit)
|
UART
|
USART
|
SPI
|
I2C
|
I2S
|
EMIF
|
RTC
|
Comparators
|
Vdd min(V)
|
Vdd max(V)
|
Package Type
|
Package Size (mm)
|
Internal Osc.
|
Debug Interface
|
Cryptography
|
EFM32LG230F128G-QFN64
|
Microcontroller
|
48
|
128
|
32
|
56
|
12-bit, 8-ch., 1 Msps
|
12-bit, 2 ch.
|
Cap Sense
|
Temp Sensor
|
4
|
5
|
3
|
3
|
2
|
1
|
0
|
RTC
|
2
|
1.98
|
3.8
|
QFN64
|
9x9
|
±2%
|
ETM; SW
|
AES-128 AES-256
|
选型表 - SILICON LABS 立即选型
SILICON LABS EFM32 Gecko 32-bit Microcontroller选型表
SILICON LABS 32位MCU选型,基于32MHz Frequency,16kB~128kB Flash,8kB或16kB RAM等参数进行选型。
产品型号
|
品类
|
Frequency(MHz)
|
Flash (kB)
|
RAM (kB)
|
Dig I/O Pins
|
ADC 1
|
DAC
|
Cap Sense
|
Temp Sensor
|
Timers (16-bit)
|
UART
|
USART
|
SPI
|
I2C
|
I2S
|
EMIF
|
RTC
|
Comparators
|
Vdd min(V)
|
Vdd max(V)
|
Package Type
|
Package Size (mm)
|
Internal Osc.
|
Debug Interface
|
EFM32G200F16-QFN32
|
Microcontroller
|
32
|
16
|
8
|
24
|
12-bit, 4-ch., 1 Msps
|
12-bit, 1-ch.
|
Cap Sense
|
Temp Sensor
|
2
|
0
|
2
|
2
|
1
|
0
|
0
|
RTC
|
2
|
1.98
|
3.8
|
QFN32
|
6x6
|
±2%
|
SW
|
选型表 - SILICON LABS 立即选型
Silicon Labs 32位低功耗MCU EFM32JG1P在故障指示器的应用中,GPIO拉低后,电平为0.8V,而不是0V,根本原因是什么?
Silicon Labs 32位低功耗MCU EFM32JG1P GPIO拉低后,电平为0.8V,主要是因为底下大焊盘PIN0没有连接到GND或者与GND接触不良造成。
【资讯】芯科携手Micrium打造低功耗MCU+RTOS软件解决方案
全新的MCU+RTOS通过将RTOS与内建MCU的多协议硅芯片、工具和软件栈结合,将获得全面性的嵌入式解决方案
SILICON LABS EFM32 Tiny Gecko 32-bit Microcontroller选型表
SILICON LABS 32位MCU选型,基于32MHz Frequency,4kB~32kB Flash,2kB或4kB RAM等参数进行选型。
产品型号
|
品类
|
Frequency(MHz)
|
Flash (kB)
|
RAM (kB)
|
Dig I/O Pins
|
ADC 1
|
DAC
|
Cap Sense
|
Temp Sensor
|
Timers (16-bit)
|
UART
|
USART
|
SPI
|
I2C
|
I2S
|
EMIF
|
RTC
|
Comparators
|
Vdd min(V)
|
Vdd max(V)
|
Package Type
|
Package Size (mm)
|
Internal Osc.
|
Debug Interface
|
EFM32TG108F16-QFN24
|
microcontroller
|
32
|
16
|
4
|
17
|
—
|
12-bit
|
Cap Sense
|
Temp Sensor
|
2
|
2
|
1
|
1
|
1
|
1
|
0
|
RTC
|
2
|
1.98
|
3.8
|
QFN24
|
5x5
|
±2%
|
SW
|
选型表 - SILICON LABS 立即选型
32位低功耗MCU EFM32G232F64,其片内振荡器的精度是多少?
32位低功耗MCU EFM32G232F64的片内振荡器的精度为±2%。
32位低功耗MCU EFM32G232F64,使用片内高速RC振荡器HFRCO时,其频率为多少?
32位低功耗MCU EFM32G232F64,使用片内高速RC振荡器HFRCO时,其频率可配置为1MHz,7MHz,11MHz,14MHz,21MHz和28MHz。
电子商城
现货市场
服务

可定制波导隔离器频率覆盖5.5GHz~110GHz,插损损低至0.25dB、隔离度、正向方向功率、封装尺寸参数。
最小起订量: 1pcs 提交需求>

可定制板装式压力传感器支持产品量程从5inch水柱到100 psi气压;数字输出压力传感器压力范围0.5~60inH2O,温度补偿范围-20~85ºС;模拟和数字低压传感器可以直接与微控制器通信,具备多种小型SIP和DIP封装可选择。
提交需求>
登录 | 立即注册
提交评论