HC32L130J8TA华大单片机低功耗笔记
低功耗基础设置
华大芯片有一个非常nice的功能就是低功耗,在进入深度休眠的时候外面需要把一些用到的外设进行关闭,来实现低功耗,具体如下:
App_LowPowerModeGpioSet(); //IO配置
M0P_SYSCTRL->PERI_CLKEN_f.ADC = TRUE;
M0P_BGR->CR_f.BGR_EN = FALSE; //关BGR
M0P_SYSCTRL->PERI_CLKEN_f.ADC = FALSE;
其中IO配置需要根据硬件的具体设计来设置,设置的规则如下:
未使用的IO:上拉输入,或者输出低电平不上拉不下拉(推荐上拉输入,官网文档也是这样推荐)
使用的IO:输入输出引脚都可设置为输入,上下拉根据具体电路而定;输出引脚可改为输入或者输出,输出高低电平根据具体的电路设计而定;ADC引脚需要保持原来的属性,输出低电平下拉; 串口TX和RX引脚设置为输入,上拉;(使用的引脚推荐保持输入输出的属性)
注意:(IO配置目的是让该引脚不工作)设置为输入状态的引脚一定要有电平,不能悬空,悬空会导致功耗有高有低,应该根据电路设计设置为内部上拉或者下拉的状态。
IO配置函数的具体实现,大家要根据自己的硬件设计进行更改,并不适用与大家的开发板
/*********************************************************************
* @brief 未使用的 GPIO 配置
* @note N
* @param N
* @retval N
**********************************************************************/
static void App_LowPowerModeGpioSet(void)
{
///< 打开GPIO外设时钟门控
Sysctrl_SetPeripheralGate(SysctrlPeripheralGpio, TRUE);
//swd as gpio
Sysctrl_SetFunc(SysctrlSWDUseIOEn, TRUE);
///< 配置为数字端口 1 模拟 0 数字
M0P_GPIO->PAADS = 0; //0000 1101 0011 0010 0D32
M0P_GPIO->PBADS = 0; //1000 0000 0000 0000 PB15模拟
M0P_GPIO->PCADS = 0;
M0P_GPIO->PDADS = 0;
//输出 1 输入; 0输出
M0P_GPIO->PADIR = 0x7B1F; //0111 1011 0001 1111
M0P_GPIO->PBDIR = 0XF3F8; //1111 0011 1111 1000
M0P_GPIO->PCDIR = 0XFFFF;
M0P_GPIO->PDDIR = 0XFFFF;
//输出 1 高电平; 0低
M0P_GPIO->PAOUT = 0X0000; ///0000 0000 0000 0000
M0P_GPIO->PBOUT = 0X0006; ///0000 0000 0000 0110
// 上拉: 1 上拉; 0 不上拉
M0P_GPIO->PAPU = 0x790C; //0111 1001 0000 1100 //A4不上拉
M0P_GPIO->PBPU = 0X03F8; // 0000 0011 1111 1000
M0P_GPIO->PCPU = 0xFFFF;
M0P_GPIO->PDPU = 0xFFF7; // 除 D3 Boot0 1111 0111 F7
//下拉: 1 下拉; 0 不下拉
M0P_GPIO->PAPD = 0x0213; //0000 0010 0001 0011
M0P_GPIO->PBPD = 0xF000; //1111 0000 0000 0000
M0P_GPIO->PDPD = 0x0008; //0000 0000 0000 1000
}
续航计算
根据我的实际情况我进入了氧气和二氧化续航时间的计算
电池容量为5500mAH
氧气的计算分为两部分:休眠功耗和唤醒功耗
休眠功耗的计算:首先我根据得到的数据我采用了一个小周期拿到了休眠时间为5s的功耗,然后计算一天包含多少个5s,再把它乘以5s的功耗得到休眠一天的耗电量;
唤醒功耗的计算:首先我根据采集得到的数据获取到唤醒一个周期的功耗,然后计算一天需要唤醒几次,频率设为为30min唤醒一次。所以我需要唤醒48次。用48次乘以唤醒周期的功耗得到唤醒一天的耗电量;
合计:将休眠一天的耗电量加上唤醒一天的耗电量得到一天的总的耗电量
因为电池多少存在损耗,就再基础的容量上进行采用其80%的容量进行计算
最后得到的天数为:合计一天耗电量/电池容量*0.8=具体天数(注意计算时单位要统一)
【金山文档 | WPS云文档】 氧气和二氧化碳续航功耗记录
https://kdocs.cn/l/cnxmH1ShR9fm
作者:北秋