首页 > 其他分享 >CH57x,CH58x,CH59x等BLE芯片的休眠回调作用及使用方法

CH57x,CH58x,CH59x等BLE芯片的休眠回调作用及使用方法

时间:2025-01-10 15:23:39浏览次数:1  
标签:CH57x tmos 芯片 蓝牙 CH59x 休眠 任务 CH58x 执行

简介:

  在芯片工作期间,如果程序不是所有时刻都有任务在运行,因此在系统空闲期间,这些工作电流其实是浪费掉的,可以人为的控制在无任务进行时使芯片进入低功耗,等到有任务准备执行前再唤醒起来执行。

  在BLE蓝牙库中,就有这么一项低功耗处理措施。tmos时钟源来自于低速时钟,在休眠期间低速时钟会保持运转,并且由于我们每次配置tmos任务的运行时间时,都会传入一个时间参数,因此任意时刻,蓝牙库内部都是知道这些任务应该在什么时刻执行,并且哪些时间点是没有任务需要执行的,于是在我们初始化蓝牙库阶段,可以注册一个回调任务:

 

如果cfg.idleCB没有传入函数指针,则代表无休眠处理措施,如果传入了函数指针,则蓝牙库底层会以一定的间隔查询该函数的返回值:

只有返回值为0,才会代表芯片成功进入休眠,其他任意值都不进行休眠处理

 

下图可直观地看到任务的执行与无任务执行期间,芯片电流的变化趋势:

 

优缺点:

优点:1、工作期间可以节省大量电流消耗;2、管理很便捷,只需掌握tmos任务的编写以及如何调用,对于任务量较小的程序比较适用;

缺点:这种处理高度依赖tmos系统的管理,一旦脱离了tmos任务的管理,比如说while主循环中有一些自定义的任务在执行,但是这些任务tmos是不知道的,一旦进入休眠,这些主循环的处理都是会停止的,最终会出现外设工作不正常的现象。

 

应用拓展:

可以自定义一个休眠标志,在休眠时间到达后,关停所有任务,并将休眠标志置1,允许底层管理进入休眠:

 

标签:CH57x,tmos,芯片,蓝牙,CH59x,休眠,任务,CH58x,执行
From: https://www.cnblogs.com/azou/p/18664042

相关文章

  • 低功耗蓝牙芯片CH57x,CH58x,CH59x回读codeflash及dataflash数据
    一、读取Codeflash数据芯片内部程序是有加密的,不支持外部工具直接读取,因此只能通过内部接口读取,而ISP烧录器工具在烧录时,默认会擦除8k的数据,因此只能读到8k以后的codeflash部分:方式:烧录一份不超过8k的程序,烧录器烧录时不能勾选清空codeflash,保留8k以后的原固件数据,程序主体可......
  • CH58x/CH59x/CH57x RF_PHY(2.4g)切换Channel发送接收
    前言:在做某些应用的时候可能需要我们发送或者接收时切换对应的channel。此次完成测试的平台在WCH的CH592F上完成的。在工作发送过程中切换37、38、39三个信道进行轮询发送。具体需要使用最关键的函数是:RF_SetChannel实现代码如下:if(events&channl_37_tx_evt){......
  • CH58x/59x SPI0代码参考
    前言:代码参考为首字节模式和数据流模式,均使用DMA,建议使用数据流DMA。一、数据流/首字节收发代码参考数据流流程:主机定时器1ms间隔发送;从机接收数据;从机填入发送数据到DMA并通知主机接收;主机DMA接收数据;首字节流程:主机定时器1ms间隔发送;从机首字节接收并DMA接收完整数......
  • CH582,CH592,CH57x系列芯片看门狗中断使用示例
    #include"CH58x_common.h"/**********************************************************************@fnDebugInit**@brief调试初始化**@returnnone*/voidDebugInit(void){GPIOA_SetBits(GPIO_Pin_9);GPIOA_ModeCfg(GPIO_Pin......
  • ch58x/ch59xADC差分采样NTC电阻获取当前温度
    前言:之前的文章中也有关于使用I2C器件进行温度的采集的文章采集温度的方式不止使用传感器,也可以使用NTC温敏电阻进行采集,此方法的外围电路较为简单切成本较低,代码也较为容易实现。实现原理:先通过差分采样电路进行采集,采集之后可以获取NTC或者定值电阻的电压;已知这些信息可以通过......
  • CH57x/CH58x/CH59x获取从机广播信息
    有时需要通过主机设备(MCU非手机)获取从设备的广播信息例如广播包,MAC地址,扫描应答包等以下的程序片段及功能实现是在WCH的CH59X的observer例程上实现的;1、获取广播包所有的函数在库函数中都可以找到,具体实现函数如下:caseGAP_DEVICE_INFO_EVENT:{Observ......
  • CH57x/CH58X/CH59X/CH32F/V208OTA使用说明
    目前提供了两种OTA升级方式,方式一:带库升级;每次升级可以带着库一起进行升级(带库升级适用于flash较大的芯片)方式二:固定库升级;升级时库不会随着升级而升级(适用于flash不够用时)方式一:升级时需要同时烧录这三个固件:(可以使用isp工具同时烧录也可以使用合并工具将三个工程合并后再烧......
  • CH58x芯片Hardfault问题排查
    前言:针对RISC-V芯片进入HardFault_Handler函数的问题排查提供讲解。一、HardFault函数添加PC指针打印在公共文件的sys.c函数中找到函数并修改如下:__INTERRUPT__HIGH_CODE__attribute__((weak))voidHardFault_Handler(void){uint32_tv_mepc,v_mcause,v_mtval;p......
  • 低功耗蓝牙系列芯片CH57x,CH58x,CH59x实现蓝牙多通道配对/回连同一台电脑或多台电脑实
    依旧以老朋友CH583为例,我们随便打开一个HID例程,还是以HID_Keyboard例程做讲解:1、直奔主题到我们的库函数初始化函数中去,红圈圈中的SNVAddr配置信息为我们此次配对连接后所获取到的信息存储的地址区,配对信息中包含:对方MAC地址,设备信息,协商所得IRK密钥等关键信息,都会保存到SNVAddr......
  • CH57x,CH58x,CH59x芯片_SPI借助GPIO中断完成中断传输
    受其他项目的启发,如果IO充裕,且在SPI主机与SPI从机均可以自行编程的情况下,可以尝试在4线SPI的基础上增加两根GPIO线,通过IO中断的形式通知对方进行收数据;非SPI中断形式,以两颗CH582通讯为例,1、主机程序:voidmain(){SetSysClock(CLK_SOURCE_PLL_60MHz);GPIOA_ModeCfg......