当前位置: 首页 > news >正文

有关CH585三模例程中RF低功耗睡眠处理的讲解

一、LP模式

①一级睡眠、保持连接

浅睡时间到达,可主动调用:

image

 idel_sleep_flag成立后,启动RF_SLEEP_EVENT,

image

 

上报率切换任务解析:

/********************************************************************** @fn      app_switch_samping_rate** @brief   is_connected : 如果当前已连接成功,填TURE,否则填FALSE** @return  none*/
/*查看dongle侧配对任务中定义的bound.pertime值,该值为RTC中断间隔*/
void app_switch_samping_rate(uint16_t new_rate, uint8_t is_connected)
{samping_rate = new_rate;if(work_mode==MODE_2_4G){if(samping_rate>500)//1KHz及以上,采用0分频,即不分频,通过主循环的LowPower_Idle实现低功耗
        {//1KHz以上,使用sleep来不及睡眠唤醒,因此采用idle形式做低功耗处理RFRole_LowPower( 0 );TMR0_TimerInit(FREQ_SYS / (samping_rate-1));//设置与上报率对应的定时器定时周期
            TMR0_Disable();tmos_stop_task(app_taskId, APP_LOWPOWER_SEND_PACKET_EVT);tmos_stop_task(app_taskId, APP_SLEEP_EVENT);if(is_connected){TMR0_Enable();TMR0_ITCfg(ENABLE, TMR0_3_IT_CYC_END);PFIC_EnableIRQ(TMR0_IRQn);//启动定时器中断
            }}else//dongle端pertime设置的是32ms一次通讯连接
        {if((!samping_rate_recover) || (samping_rate == samping_rate_recover))//如果samping_rate_recover标志为0,说明没有进入idle睡眠阶段//此处也可用if(!idle_sleep_flag)判断代替
            {if(samping_rate>250)//500Hz
                {RFRole_LowPower( 16 );;//16分频->2ms一次通讯连接,最多睡眠2ms会被RTC产生中断唤醒起来执行一轮主循环
                }else if(samping_rate>125)//250Hz
                {RFRole_LowPower( 8 );//8分频->4ms一次通讯连接,最多睡眠4ms会被RTC产生中断唤醒起来执行一轮主循环
                }else//125Hz
                {RFRole_LowPower( 4 );//4分频->8ms一次通讯连接,最多睡眠8ms会被RTC产生中断唤醒起来执行一轮主循环
                }}else//保持连接、待机模式,采用0分频,即不分频->32ms一次通讯连接,最多睡眠32ms会被RTC产生中断唤醒起来执行一轮主循环
            {RFRole_LowPower( 0 );}TMR0_Disable();//关闭定时器外设,低功耗期间,不依赖定时器做键扫if(is_connected){last_rtc_count = RTC_GetCycle32k();tmos_set_event(app_taskId, APP_LOWPOWER_SEND_PACKET_EVT);//启动低功耗睡眠任务(可用做低功耗期间的扫描标志位)
            }}}
}

 

 

APP_LOWPOWER_SEND_PACKET_EVT解析:

image

 

主循环:

image

 

查标志做一次采样、本例程以模拟数据发送作为示例:

image

 

执行完采样,会跑入睡眠任务,

image

image

 

http://www.jsqmd.com/news/687144/

相关文章:

  • Steam Achievement Manager:重新定义你的游戏成就掌控权
  • 如何快速掌握RePKG:Wallpaper Engine资源提取与转换的终极指南
  • TVA技术在化工行业视觉检测的最新进展(3)
  • 2026年收藏必备:保姆级教你搞定论文AIGC率(附平台测评+独家去AI痕迹工具) - 降AI实验室
  • 终极指南:5个技巧让Obsidian表格管理效率提升90%
  • 电源噪声抑制减少高速时钟抖动基础手段
  • 赛博朋克2077存档编辑器:3步解锁夜之城无限可能
  • 文档插件《道斯通图》不震撼首发 免费下载直接使用
  • React Hook 性能调优与重复渲染问题
  • 终极指南:深度定制你的《赛博朋克2077》游戏体验
  • 审批流和状态机到底怎么选?一次讲清规则边界、适用场景与系统设计取舍
  • 深圳市场地位认证机构推荐指南 - 速递信息
  • 别再瞎用_nop_()了!51单片机I2C时序不准的锅,原来是函数调用在捣鬼
  • 终极指南:如何用VisualCppRedist AIO一键解决所有Windows运行库问题
  • 2026年4月5款维普降AI率软件盘点:嘎嘎降AI和率零领先
  • 2026年石墨制品厂家推荐排行榜:涵盖石墨电极、石墨坩埚、石墨回收,适配冶金/钢铁/铸造/化工行业全场景解决方案深度解析 - 海棠依旧大
  • 如何在VMware中解锁macOS虚拟机:终极免费解决方案指南
  • Qwen3.5-2B端侧部署实测:Jetson Orin NX运行可行性验证
  • NsEmuTools:NS模拟器自动化管理效率工具
  • 热门的在线PH检测仪哪家好?深度测评十大流量计品牌 - 仪表人小余
  • 如何用OpenVINO AI插件让Audacity拥有专业级音频处理能力?
  • 5分钟掌握kill-doc:30+文档平台免费下载终极方案
  • 量子计算框架C2|Q⟩的设计与电路转译技术解析
  • 告别fbtft!在香橙派Zero上为1.3寸ST7789V屏幕编译TinyDRM驱动(附完整设备树配置)
  • Claude 4.7 Opus 登陆 AWS Bedrock:Agentic Coding 实测数据与接入方案解析
  • 如何免费获取VMware Workstation Pro 17许可证密钥:解决虚拟化环境激活难题
  • 别再只用默认密码了!手把手教你为华为设备Console口配置AAA认证(附SecureCRT连接避坑指南)
  • 剖析2026年北京口碑佳的保洁企业,水晶灯美式、简约、多边形清洗服务哪个靠谱 - mypinpai
  • 告别Bluedroid!在ESP32上切换到NimBLE堆栈,实测内存节省了30%
  • Mac Mouse Fix:如何将普通鼠标变成macOS上的生产力倍增器?