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(这两款资源也较为丰富)。