CH32V208蓝牙从机sleep模式下功耗测试

本测试基于CH32V208W的开发板;蓝牙从机模式使用程序BLE_UART

在进行功耗测试的时候尽量去除额外耗电器件,将开发板上的VDD于VIO相连接,测功耗时直接给VDD供电。

将会对500ms,1s,2s,5s广播间隔进行测试;

测试前对程序先进行修改:在工程配置处将HAL_SLEEP的宏的配置置为TRUE;

将GPIO配置为和休眠期间的外部电平接近的输入上拉/输入下拉,固定电平以减小漏电;

        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); //enable clock
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); //enable clock
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE); //enable clock
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD, ENABLE); //enable clock
        GPIO_InitTypeDef GPIO_InitStructure = {0};            //gpio init struct
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_All;             //gpio pin
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;      //gpio mode
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;     //gpio speed
        GPIO_Init(GPIOA, &GPIO_InitStructure);                //gpio init
        GPIO_Init(GPIOB, &GPIO_InitStructure);                //gpio init
        GPIO_Init(GPIOC, &GPIO_InitStructure);                //gpio init
        GPIO_Init(GPIOD, &GPIO_InitStructure);                //gpio init

广播间隔及开关广播修改处:

// What is the advertising interval when device is discoverable (units of 625us, 80=50ms)
#define DEFAULT_ADVERTISING_INTERVAL        1600// 1600
修改此处的1600即可注意单位时间是625us,此时1600即为1s
uint8_t  initial_advertising_enable = TRUE;
 GAPRole_SetParameter(GAPROLE_ADVERT_ENABLED, sizeof(uint8_t), &initial_advertising_enable);
此处为初始化广播的位置将TRUE改为FALSE就可以关闭广播了

对广播间隔为500ms时进行功耗测试:

 对广播间隔为1s时进行功耗测试:

  对广播间隔为2s时进行功耗测试:

   对广播间隔为5s时进行功耗测试:

 关闭广播进行测试:

 功耗汇总表如下

 注意事项:

 CH32V208的在测功耗时:一般情况下是只要置1使能HAL_SLEEP宏,让协议栈管理休眠就好。

将不需要的TMOS事件循环关掉,关闭方法可以是直接注释掉相应的代码块,或者使用tmos_stop_task(),或者使用各种特定的方式关闭库中的循环,要看具体问题;

将GPIO配置为和休眠期间的外部电平接近的输入上拉/输入下拉,固定电平以减小漏电。

另附:
CH32V208的性能更为强大资源更为丰富;如果需要功耗表现更好的BLE系列MCU可以选择沁恒的CH592、CH582(这两款资源也较为丰富)。

 

posted @ 2023-09-27 21:56  小舟从此逝_1  阅读(244)  评论(0编辑  收藏  举报