建议使用以下浏览器,以获得最佳体验。 IE 9.0+以上版本 Chrome 31+ 谷歌浏览器 Firefox 30+ 火狐浏览器
请选择 进入手机版 | 继续访问电脑版
设置昵称

在此一键设置昵称,即可参与社区互动!

确定
我再想想
选择版块
标签
您还可以添加5个标签
  • 没有搜索到和“关键字”相关的标签
  • 云产品
  • 解决方案
  • 技术领域
  • 通用技术
  • 平台功能
取消

jiekechoo

发帖: 19粉丝: 1

级别 : 合作伙伴

发消息 + 关注

发表于2018年12月20日 17:34:32 3809 2
直达本楼层的链接
楼主
显示全部楼层
[问题求助] 【亿琪软件】NB-IoT 终端设备低功耗--软件设计(2018.12.20更新)

上一篇:【【亿琪软件】NB-IoT 终端设备低功耗--硬件设计(2018.12.20更新),我们给大家介绍了低功耗硬件设计相关内容,这一篇来聊聊低功耗软件设计方面的内容。在低功耗设备中,软件设计至关重要,由软件驱动硬件进入低功耗模式可以节省更多能耗。


一、开关电源软性开关

  • 单独配备开关电源IC,LDO具备一个“EN”口,可以通过单片机输出高低电平进行驱动,一般情况下通过GPIO控制高电平开启,低电平关闭,如果是外部传感器或耗电大户,可以通过IO控制方式节省电源;

  • 如果是频繁发送数据的NB设备,不建议将NB模组作为单独IC控制,因为海思芯片模组本身在PSM模式下也就3-5uA的耗电量,如果整个模组下电,再次开启时联网更加耗电,所以要根据需求来设计软硬件;


二、双芯模式:MCU+NB模组

1、单片机MCU伪代码,以STM32L系列单片机HAL库为例:

//开启低功耗模式
HAL_PWREx_EnableUltraLowPower();
HAL_PWREx_EnableFastWakeUp();

//联网
connect_network();

while(1)
{
    //发送数据
    send_data();
    
    //AT+NSOSTF,快速关闭连接,使得模组立即进入PSM模式,否则需要等待运营商配置的idle时间
    send_over();
    
    
    //重置RTC服务
    HAL_RTCEx_DeactivateWakeUpTimer(&hrtc);
    
    //重要!!!!关闭与NB通讯的串口
    SystemPower_Pre_STOP();
    
    //开启RTC唤醒中断
    HAL_RTCEx_SetWakeUpTimer_IT(&hrtc, 0xffff, RTC_WAKEUPCLOCK_RTCCLK_DIV16);
    
    //进入低功耗模式STOP
    HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON, PWR_STOPENTRY_WFI);
    
    //重要!!!!打开与NB通讯的串口
    SystemPower_Post_STOP();
    
    //退出STOP模式后重新初始化时钟
    SystemClockConfig_STOP();
    
    //延时几秒
    HAL_Delay(5000);
    
}
/**
 * 进入低功耗模式前处理
 */
void SystemPower_Pre_STOP(void){
	GPIO_InitTypeDef GPIO_InitStruct;

	/*Configure GPIO pin : USART1=> PA9, PA10 */
	GPIO_InitStruct.Pin = GPIO_PIN_9|GPIO_PIN_10;
	GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
	GPIO_InitStruct.Pull = GPIO_NOPULL;
	HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);

}
/**
 * 退出低功耗模式后处理
 */
void SystemPower_Post_STOP(void){
	GPIO_InitTypeDef GPIO_InitStruct;

	/*Configure GPIO pin : USART1=> PA9, PA10 */
    GPIO_InitStruct.Pin = GPIO_PIN_9|GPIO_PIN_10;
    GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
    GPIO_InitStruct.Pull = GPIO_PULLUP;
    GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
    GPIO_InitStruct.Alternate = GPIO_AF7_USART1;
    HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);

}



2、这里,NB模组特性需要注意的就是发送完数据需要立即关闭UDP连接,使得模组立即进入PSM模式,使用AT命令:

void send_over(void)
{
    // 发送逻辑
    // AT+NSOSTF=0,117.78.47.187,5683,0x200,1,AA\r\n
}

!效果立竿见影!


三、单芯模式:OPENCPU

未完,待续!


四、完整例程

举报
分享

分享文章到朋友圈

分享文章到微博

Happen

发帖: 3粉丝: 4

级别 : 版主

发消息 + 关注

发表于2018年12月21日 09:34:27
直达本楼层的链接
沙发
显示全部楼层

高手终于出手啦

点赞 评论 引用 举报

狼行万里

发帖: 0粉丝: 0

级别 : 新手上路

发消息 + 关注

发表于2019年11月18日 17:30:16
直达本楼层的链接
板凳
显示全部楼层

高手多出一些这样功耗例子 供学习

点赞 评论 引用 举报

游客

富文本
Markdown
您需要登录后才可以回帖 登录 | 立即注册