历史上的今天
今天是:2024年09月10日(星期二)
2018年09月10日 | 无线路灯项目——STM32L低功耗相关
2018-09-10 来源:eefocus
1.STM32L主要特性
影响功耗的两大要素,一个是电压,一个是频率
2.高效的处理
如果仅考虑处理功耗的话,用mA/DMIPS来表达,M3的核会比其他16位架构的MCU要好(这里感觉指的主要就是其竞争对手的MSP430)
NOTE中提到一种典型的应用:便携式健康医疗设备,设备可运行在4MHZ的时钟下,这时的核电压只需最低的1.2V,外部电压最低可至1.65V
3.多种低功耗模式
相对于STM32F系列,L系列多了low power run和low power sleep两种模式
为了降低功耗,可以使用最低的主时钟,MSI
4.低功耗外设
其中有一些外设是为低功耗定制的,比如STM32L1xx中有一个12bit,1MSps的ADC,如果这个ADC一直工作的话,会严重降低设备的续航,这个ADC典型的电流是1.45mA。ADC的启动时间是3.5us,转换一次的时间是1us,那么一次开机且转换6次的时间不超过10us,ADC的关闭是立即的。像这样一次开机转换6次的动作,我们执行的频率是1KHZ,那么平均下来,ADC的电流功耗是10.5uA(以上的ADC参数仅是大概地举个例子,具体的还是要看芯片的Datasheet)
在高速时钟的系统中,外设的开启和关闭的时间是可以忽略的,但是在低速的低功耗系统中,这个时间是不能忽略的。例如在一个1MHZ的系统中,一个指令的执行时间就相当于1MSps ADC的采样时间了。如果ADC在这种低速的情况下工作,要达到高采样速率,是达不到的,对后续的DSP造成影响。为此,ST对ADC设计成这样:不管Core的频率是多少,ADC的时钟都是内部16MHZ的时钟,是它最高的时钟。即使在一个32KHZ的系统中,一个指令的长度是30us,那么ADC在30us内也可以完成多次转换,得到多个采样值,后续可完成DSP,若只需采样一次的话,只需花费30us内的4.5us。
以下三个外设在STOP模式依然可以工作:
1.两个比较器,可以组成一个窗口电压比较,3uA
2.RTC,可以做成闹钟,1uA
3.LCD控制器,5uA(不包括LCD功耗)
5.时钟系统
STM32L1提供了5种时钟。
两个外部时钟(高精度,高功耗,额外成本):
●HSE(high-speed external crystal),4-24MHZ
●LSE(low-speed external crystal),32.768KHZ
三个内部时钟(低精度,低功耗,不需额外成本):
●HSI(high-speed internal RC oscillator),16MHZ
●MSI(high-speed external RC oscillator),64KHZ-4MHZ
●LSI(high-speed external RC),37KHZ
下表是5种时钟的特性总结:
其中MSI可由LSE来校正精度,最终可至0.5%
主时钟可由HSE、HSI、MSI这三种时钟提供
下面以进入Low power sleep mode为例子
// RCC 时钟系统重启
RCC_DeInit();
/* Flash 0 wait state */
FLASH_SetLatency(FLASH_Latency_0);
/* Disable Prefetch Buffer */
FLASH_PrefetchBufferCmd(DISABLE);
/* Disable 64-bit access */
FLASH_ReadAccess64Cmd(DISABLE);
/* Enable the PWR APB1 Clock */
RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR, ENABLE);
/* Select the Voltage Range 2 (1.5V) */
PWR_VoltageScalingConfig(PWR_VoltageScaling_Range2);
/* Wait Until the Voltage Regulator is ready */
while(PWR_GetFlagStatus(PWR_FLAG_VOS) != RESET)
{}
/* HCLK = SYSCLK = 262.144KHz */
RCC_HCLKConfig(RCC_SYSCLK_Div1);
/* PCLK2 = HCLK */
RCC_PCLK2Config(RCC_HCLK_Div1);
/* PCLK1 = HCLK */
RCC_PCLK1Config(RCC_HCLK_Div1);
/* Set MSI clock range to 262.144KHz */
RCC_MSIRangeConfig(RCC_MSIRange_2);
/* Select MSI as system clock source */
RCC_SYSCLKConfig(RCC_SYSCLKSource_MSI);
/* Wait till PLL is used as system clock source */
while (RCC_GetSYSCLKSource() != 0x00)
{}
/* Enable The ultra Low Power Mode */
PWR_UltraLowPowerCmd(ENABLE);
/* Enable the power down mode during Sleep mode */
FLASH_SLEEPPowerDownCmd(ENABLE);
/* Request to enter SLEEP mode with regulator in low power mode */
PWR_EnterSleepMode(PWR_Regulator_LowPower, PWR_SLEEPEntry_WFI);
史海拾趣
|
小且精彩的迷你本:採用NVIDIA Tegra 600MHz處理器 Mobinnova展示「Elan」Netbook Mobinnova 「 Elan 」 Netbook 外觀設計時尚 支援 HDMI 、 DVI 及 D-Sub 輸出 可升高機身設計令使用更方便 內建 Firefox 瀏覽器使用與一般 PC 無異 支援 720p HD 硬體解碼 NVIDIA 上週五邀 ...… 查看全部问答> |
|
传感器是名副其实的朝阳产业,即使在国际金融危机蔓延的2008年,我国传感器市场仍然有逆势增长20%以上的良好表现。传感器产业以其技术含量高、经济效益好、渗透能力强、市场前景广等特点为世人瞩目。由中国电子元件行业协会敏感元器件与传感器分会( ...… 查看全部问答> |
|
上拉电阻和下拉电阻的选择应结合开关管特性和下级电路的输入特性进行设定,主要需要考虑以下几个因素:1. 驱动能力与功耗的平衡。以上拉电阻为例,一般地说,上拉电阻越小,驱动能力越强,但功耗越大,设计是应注意两者之间的均衡。2. 下级电路的 ...… 查看全部问答> |
|
各位好~ 有个问题想跟大家讨论下: 在CE下,驱动中能否使用WaitForMultipleObjects来等待多个中断事件? 前些天记得有个帖子说过,驱动中不能用WaitForMultipleObjects来等待多个事件,实际上我也试了下,没有成功,情况是这样的: 1.用两个IR ...… 查看全部问答> |
|
西思科技高薪招聘WINCE嵌入式软件工程师(必须有WINCE底层工作经验)/Windows Mobile(CE)应用软件工程师 公司专注WINCE/WINDOWS MOBILE产品开发,有微软正式授权。有屏蔽房、频谱仪、网络仪等全套开发设备。因发展需要,在上海诚聘嵌入式软件工程师、应用软件工程师。 薪资:有意向后可以面谈 嵌入式软件工程师 任职资格 1. 英语四级以 ...… 查看全部问答> |
|
最近正在熟悉stm32系列的单片机,和以前用的51系列的相比功能强大很多。为了彻底的熟悉它,现在计划利用它设计一款高性能的开发板。初步定了如下指标:外扩2M(128K×16)SRAM、SD卡接口、320240TFT彩色液晶(支持触摸屏)、具有六路独立AD输 ...… 查看全部问答> |
|
写程序的时候,变量和函数命名是避免不了的,每个公司都一套自己的命名规则,我本热比较喜欢驼峰法,也就是匈牙利命名,说说你喜欢的命名规则!~可以附上例子哦,如下:变量:int *pMax 指向一个最大数的指针,当然我是随便举的例子函 ...… 查看全部问答> |
|
【求助】关于CC1100 CRC_AUTOFLUSH的问题,求教各位大侠,感激不尽 小弟新学CC1100芯片,配合MSP430一起使用。最近配置CC1100时,发现PKTCTRL1.CRC_AUTOFLUSH 位如果使能的话,就接收不到数据了。在PKTCTRL0中的CRC_EN已经打开。其他配置不变,如果CRC_AUTOFLUSH不打开的话,接收是没有问题的,一打开就收不到数据。 ...… 查看全部问答> |




