STM8L101+si4463低功耗和自动唤醒配置

news/2024/10/28 22:31:51/

刚开始接触RF通信,借助成都亿佰特的demo很快完成了数据互传,但是功耗一直降不下去,ST和SiliconLabs官方的datasheet里分别说STM8L101在halt模式功耗为1uA(开AWU的情况下)、SI4463在standby模式为50nA,但是即使把STM8和SI4463以外的芯片都拆了,整板的实际测试值也比1uA大两个数量级。


一、关于低功耗


首先,把SI4463拿掉,只剩STM8L,在main函数直接进入halt模式,得到工作电流为0.4uA,达到标称值。

然后,将si4463接上,在main函数直接进入halt模式,工作电流飙升至167uA。为什么呢?

在ST官网找到了《AN3147:Power management in STM8L and STM8AL》,在“第五章 :Power management tips”中找到了问题的关键点——进入HALT之前必须将GPIO设为固定的电平状态,否则有漏电流存在。于是根据电路设计原理图,除了与SI4463连接的SPI_CSN设为输出高、SDN设为输出低,其余全设为输入上拉。电流降到了25uA,仍远远大于标称值。


图1 整板电路图


最后问题定位在SI4463的GIO设置上,亿佰特的SI4463模块采用的是TX和RX分离的模拟电路设计(图2),GIO2和GIO3控制选通开关,它们根据TX和RX的状态输出0和1,比如芯片处于TX状态时GIO2输出1、GIO3输出0,此时天线与TX形成通路,调制信号从TX口经过电感电路被发送出去。在使si4463进入低功耗之前,必须将GIO2、GIO3拉低。



图2 si4463参考电路设计                       

SI446X_GPIO_CONFIG(3, 3, 2, 2, 3, 0, 0x60);
SI446X_CHANGE_STATE(1); 

最后功率降到了1uA以下,与标称值相符。


二、关于AWU设置

AWU(Auto Wakeup Unit)的时钟源是独立的LSI(Low Speed Internal Clock),官方datasheet显示LSI的一致性比较差,从25KHz到75KHz不等(确实很差生气),所以配置AWU之前要先知道每一片芯片的LSI是多少,才能达到唤醒时间的预期值。首先,用TIM2测量LSI的频率,官方驱动库就有函数实现,函数原型如下

uint32_t TIM2_ComputeLsiClockFreq(uint32_t TIM2_TimerClockFreq);

官网驱动库也有AWU的配置函数 void AWU_LSICalibrationConfig(uint32_t LSIFreqHz), 这个函数给出的结果很糟糕,唤醒时间根本不对。于是自己根据datasheet写了个函数

#define AWU_MAX_INTERNVAL_COEFFICIENT        ((uint32_t)3932160)
#define AWU_APR_MAX_VALUE                    ((uint8_t)64)
#define AWU_TBR_MAX_VALUE                    ((uint8_t)0x0f)
#define AWU_APR_MIN_VALUE                    ((uint8_t)2)
#define AWU_TBR_MIN_VALUE                    ((uint8_t)0x01)
#define AWU_HIGH_RESOLUTION_THRESHOLD        ((uint32_t)6889)   


/*** @brief  Update APR register with the measured LSI frequency.Accuracy is much better than AWU_LSICalibrationConfig().* @param  LSIFreqHz -- the LSI frequency, in Hertz.internval -- AWU wake up interval, in milliseconds* @note   AWU must be disabled to avoid unwanted interrupts.* @retval None*/
ErrorStatus AWU_ConfigLSI(uint32_t LSIFreqHz, uint32_t internval)
{uint32_t tmp = 0, z = 0;uint8_t  y = 0, x = 0;uint8_t  flag = 0;/* Check parameter */assert_param(IS_LSI_FREQUENCY(LSIFreqHz));  z = LSIFreqHz * internval;if(internval>AWU_HIGH_RESOLUTION_THRESHOLD){tmp = z / 10240000;if( tmp>=AWU_APR_MIN_VALUE && tmp <= AWU_APR_MAX_VALUE){AWU->TBR |= 0x0e;AWU->APR = (tmp)-2;return SUCCESS;}tmp = z / 61440000;if( tmp>=AWU_APR_MIN_VALUE && tmp <= AWU_APR_MAX_VALUE){AWU->TBR |= 0x0f;AWU->APR = (tmp)-2;return SUCCESS;}  }/* 2^x*y = LSIFreqHz * internval */for(y=64;y>1;y=y>>1){tmp =  z/((uint32_t)y*1000) ; if(tmp>=1 && tmp<=4096)  /*value is between 2^0 and 2^12*/{flag = 1;break;}} /*计算TBR,再根据TBR推导出APR*/if(flag!=0){for(x=0;x<13;x++){if( (tmp>>x)==0 ){break;}}tmp = (uint32_t)1<<x;y = z/((uint32_t)tmp*1000);if(y<2){return ERROR;}AWU->TBR = x+1;AWU->APR = y-2;return SUCCESS;}else{return ERROR;}
}




参数internval是期望的唤醒时间,单位是ms,数值范围是1到60000。

设置好TBR和APR之后,只要使用AWU_Cmd(ENABLE)即可启动AWU,它只会在STM8处于halt模式下才开始计时,当计时达到设置的interval时产生中断,将STM8从halt模式唤醒。

/***** 补丁1:AWU设置函数存在BUG,修正了一下,现在可以放心使用了 20161205 *******/



http://www.ppmy.cn/news/503397.html

相关文章

STM32CUBEMX 待机模式最简单的RTC定时唤醒(低功耗电池产品必备)

文章意义&#xff1a; 看到很多技术帖子讲述RTC定时唤醒功能的时候&#xff0c;老是需要去读取当前时间&#xff0c;再设定下一个闹钟唤醒时间&#xff0c;无形中多了很多变量和操作。所以我决定分享一种简单的RTC定时唤醒方法&#xff0c;适合于不需要实现具体时间获取的场合…

STM32F407待机唤醒

疑问 在做待机唤醒实验时&#xff0c;会有这样的疑问&#xff1a;只有进入待机模式的代码&#xff0c;那么唤醒是如何唤醒的&#xff1f; 原理 &#xff08;此节主要针对待机唤醒原理进行简单介绍&#xff0c;可以根据自己情况自动略过&#xff09; STM32F4待机模式 在系统…

智芯MCU软件开发环境搭建

智芯MCU软件开发环境搭建 目录 智芯MCU软件开发环境搭建前言1 软件安装2 编译环境3 烧录环境4 新建工程结束语 前言 智芯科技的MCU主要应用于汽车行业&#xff0c;属于车规级的MCU&#xff0c;目前上市的MCU型号较少&#xff0c;相关资料也不多&#xff0c;所以这里出一期开发…

笔记本设置蓝牙唤醒_苹果手机的抬起唤醒功能耗电多吗?如何尽量延长电池续航时间...

事实上曾几何时&#xff0c;我们知道双击亮屏包括抬手亮屏&#xff0c;在安卓里面是常受欢迎&#xff0c;但同时又非常耗电的原因就在于&#xff0c;借助第三方程序的长住肯定是会增加电量的消耗&#xff0c;这一点也让很多喜欢双击亮屏&#xff0c;包括抬手亮屏的用户非常的矛…

stm8低功耗 唤醒

一&#xff0e;MCU耗能因素 现代的MCU一般使用CMOS技术&#xff0c;耗能包括2种&#xff0c;静态消耗和动态消耗。 总电能消耗静态消耗动态消耗&#xff0c; 即&#xff1a;IDDfIDynamicRun[uA/MHz]IStatic[uA]. 静态消耗&#xff1a;主要是晶体管消耗能量&#xff1b; 因…

手机功耗之唤醒源详解

和你一起终身学习&#xff0c;这里是程序员Android 经典好文推荐&#xff0c;通过阅读本文&#xff0c;您将收获以下知识点: 一、手机功耗问题浅析博文二、Sleep 、suspend三、SPM (System Power Manager)四、Deep idle五、SODI (screen on deep idle)六、systrace/ftrace七、w…

基于cycle of curves的Nova证明系统

1. 引言 主要见斯坦福大学Wilson Nguyen、Dan Boneh和微软研究中心Srinath Setty 2023年论文《Revisiting the Nova Proof System on a Cycle of Curves》。 前序博客有&#xff1a; Nova: Recursive Zero-Knowledge Arguments from Folding Schemes学习笔记 在2021年Nova …

【算法设计与分析】期末复习

文章目录 复习大纲第一章算法概述1.1算法与程序1.2 算法复杂性分析 第二章递归与分治策略分治法的基本思想递归与分治的关系&#xff1a;用分治法解决的问题的几个特征&#xff1a;例题&#xff1a; 第三章动态规划动态规划的基本思想&#xff1a;分治与动态规划算法的异同&…