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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值