你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

stm32l051和cc1101在低功耗模式下问题。

[复制链接]
儒墨之争 提问时间:2017-9-11 16:32 /
求助!!!遇到个超级奇葩的问题,抠破了头,陷进去了几天也找不出原因,不知道可有大神遇到过相同问题。
调低功耗stop模式已经10uA了,以为能快乐的玩耍,谁知道如下面程序//后面屏蔽的语句,加1个或者2个具体加几句都会有影响没具体试过,都会导致功耗直接100多uA以上。接着在只有10uA程序中又试着加个while(0);功耗也飚到100多uA,我直接加三个while(0);功耗变为了正常的10uA.这现象已经把我弄疯了。
void TIM2_Pin_Close(void)
{
LL_GPIO_InitTypeDef LL_GPIO_InitStruct;
uint8_t i;

//LL_TIM_InitTypeDef  LL_TIM_InitStruct;
LL_IOP_GRP1_EnableClock(LL_IOP_GRP1_PERIPH_GPIOA);
LL_GPIO_InitStruct.Pin  = LL_GPIO_PIN_0;
LL_GPIO_InitStruct.Mode = LL_GPIO_MODE_INPUT;
//LL_GPIO_InitStruct.Speed= LL_GPIO_SPEED_HIGH;
//LL_GPIO_InitStruct.OutputType = LL_GPIO_OUTPUT_PUSHPULL;
//LL_GPIO_InitStruct.Pull = LL_GPIO_PULL_NO;
LL_GPIO_InitStruct.Alternate = LL_GPIO_AF_0;
LL_GPIO_Init(GPIOA,&LL_GPIO_InitStruct);
LL_GPIO_ResetOutputPin(GPIOA,LL_GPIO_PIN_0);
}
收藏 评论17 发布时间:2017-9-11 16:32

举报

17个回答
儒墨之争 回答时间:2017-9-22 10:22:30
终于找到问题了,还是上拉电阻造成的,这个板子用了3933和CC1101,两个共用的SPI,两个芯片片选刚好相反一个低电平一个高电平,并且相位也不通,两个芯片切换使用中会有个类似初始化的选择芯片过程。片选脚不注意设成上拉输出了,结果就变成如果片选是低的时候功耗就不正常了。

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2 结贴奖励

查看全部评分

MrJiu 回答时间:2017-9-11 23:32:48
LL库啊。。。没搞过,现在正要搞CC1101,可否告知一二你的CC1101怎么配置的!!!
儒墨之争 回答时间:2017-9-12 10:53:20
MrJiu 发表于 2017-9-11 23:32
LL库啊。。。没搞过,现在正要搞CC1101,可否告知一二你的CC1101怎么配置的!!! ...

用SmartRF_Studio配置。设频率、速率都可以,然后会生成代码。
MrJiu 回答时间:2017-9-12 13:53:04
儒墨之争 发表于 2017-9-12 10:53
用SmartRF_Studio配置。设频率、速率都可以,然后会生成代码。

用这个SmartRF_Studio配置我也知道。。。对了问你个问题,切换一个通道需要多长实际稳定?
儒墨之争 回答时间:2017-9-12 14:47:12
MrJiu 发表于 2017-9-12 13:53
用这个SmartRF_Studio配置我也知道。。。对了问你个问题,切换一个通道需要多长实际稳定? ...

你怎么个用法?我读写器是弄收发单独模块所以通道是固定的,当然可以频道可以自由配置。标签采用一发一收,频道不一样,一个数据包大约4ms。收发反正是毫秒级,通道切换具体时间没测过,但是看数据手册,空闲模式->收发模式都才几百微秒,所以应该是不超过毫秒级的。
MrJiu 回答时间:2017-9-12 15:46:34
儒墨之争 发表于 2017-9-12 14:47
你怎么个用法?我读写器是弄收发单独模块所以通道是固定的,当然可以频道可以自由配置。标签采用一发一收 ...

通道固定肯定不行,绝对死翘翘。。。发送和模式切换都是小事情,我问的是从一个频道切换到另外一个频道,比如从433M,切换到434M,需要多长时间稳定。。。。

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2

查看全部评分

儒墨之争 回答时间:2017-9-12 16:54:03
MrJiu 发表于 2017-9-12 15:46
通道固定肯定不行,绝对死翘翘。。。发送和模式切换都是小事情,我问的是从一个频道切换到另外一个频道, ...

其实是一个意思,换频道你肯定要先进入standby模式,然后在进入Tx/Rx模式,换通道那时间都可以不算,主要还是你模式改变的时间。
五哥1 回答时间:2017-9-13 13:24:31
LL库,大神呀
xuqiang_kobe 回答时间:2017-9-14 17:57:30
最近我也在调试STM32L051。你说的问题没有遇到。但是我有个疑问:在stop模式了,程序已经不运行了。怎么还会执行你所说的“添加的几个while(0)”那??

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2

查看全部评分

xuqiang_kobe 回答时间:2017-9-15 09:25:24
我是昨天刚看到你的帖子,只是简单说了下。首先 stm32l051进入stop模式时我是关闭了FLASH
具体程序见下
void StopMode_Entering(void)//停止模式进入
{
    __HAL_PWR_CLEAR_FLAG(PWR_FLAG_WU);//电源控制/状态寄存器 (PWR_CSR) 中的 WUF 位 = 0
    __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE2);//当 V CORE 处于范围 2 时,才能进入低功耗睡眠模式
    __HAL_FLASH_SLEEP_POWERDOWN_ENABLE();//在睡眠模式下FLASH为掉电
   
    HAL_PWREx_EnableUltraLowPower();//V REFINT 在低功耗模式下关闭
    HAL_PWREx_EnableFastWakeUp();//PWR_CR 寄存器中的 ULP 位置 1时,必须使能快速唤醒(PWR_CR中的 FWU 位置 1)
   
    __HAL_RCC_HSI_CONFIG(RCC_HSI_DIV4);//请求对 16 MHz HSI 进行 4 分频 ,且HSI16 振荡器开启
    __HAL_RCC_WAKEUPSTOP_CLK_CONFIG(RCC_STOP_WAKEUPCLOCK_HSI);//选择内部 16 MHz (HSI16) 振荡器作为从停止模式唤醒时钟(如果 HSI16DIVEN=1,则选择 HSI16/4)
    HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON,PWR_STOPENTRY_WFI);
}

当然我做的是首先进入“低功耗运行状态”,然后再进入“停止状态”。难道你想进入停止状态时还想让程序(即:内核)运行??


我也遇到一个问题:不知道你遇到了吗?
就是:系统的时钟(即:SYSCLK)为4M(用的HSI内部晶振),在低功耗运行(所有的外设都关闭了)时会有30uA的周期性变化(见下解释周期性变化)。SYSCLK再高也会出现这种周期性变化,只不过是变化幅度有所增加。当把SYSCLK降到65.536K时(MSI)就会很稳。

30uA的周期性变化为:变化周期为50秒的时间内变化,它是由805uA一直减小,到773uA时瞬间变大到805uA,这个周期时间为50秒。

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2

查看全部评分

12下一页

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版