Part Number:MSP430FR2673
我在上电后初始化了看门狗,并使用Timer1制作了一个ms定时定时喂狗。但发现在低功耗下,这种操作带来了很高的功耗,约300uA(裸片测试),这与我期望的功耗差距很大。当我不初始化看门狗与喂狗定时器后,裸片功耗直接下降到6个uA。
请问有什么方法能在低功耗下正常喂狗但又不会导致大量功耗方法吗?
我的看门狗配置如下:
/** * @brief 看门狗初始化 **/ void bsp_wdt_init(void) {WDTCTL = WDTPW + WDTCNTCL + WDTIS_2; /*看门口配置为4秒触发@ 16Mhz*/ } /** * @brief 喂狗 **/ void bsp_wdt_feed(void) {WDTCTL = WDTPW + WDTCNTCL;/*喂狗*/ } /** * @brief系统滴答定时器初始化 * * @details初始化1毫秒中断定时器 * * @returnnone */ void bsp_systick_init(void) {TB0CCR0 = 16000 - 1;TB0CCTL0 = CCIE;TB0CTL= TBSSEL__SMCLK + MC_1 + TBCLR; }
在开启看门狗时,我使用这个滴答定时器的中断进行了喂狗。
进入低功耗是这样的。
__bis_SR_register(LPM4_bits | GIE);
Yale Li:
您好,低功耗本质上是通过关闭时钟实现的。
功耗最低的时钟是选择VLO做为时钟源的ACLK,而看您代码中使用的是SMCLK;
MSP430FR4xx and MSP430FR2xx family user's guide (Rev. I)中Table 1-2. Operation Modes标明LPM4将会关闭所有时钟及CPU,您的设计在这一点上是矛盾的。时钟实际上还是打开的,功耗并不能达到LPM4的水平:
最后,您确定这种方式可以实现看门狗的功能吗?即使CPU的程序跑飞了,但配置成功的外设TimerB并不受影响,还是会定时喂狗的吧?一般来说都是计算好程序的运行时间,在程序的适当位置喂狗。
,
ying hou:
好的,我已经明白我的问题在哪了。那么请问我上电初始化了看门狗后进入了休眠,当芯片退出LPM4休眠时,看门狗会自行启动吗?
,
ying hou:
当进入LPM4低功耗时,看门狗是自动关闭了是吗?
,
Yale Li:
ying hou 说:当进入LPM4低功耗时,看门狗是自动关闭了是吗?
看门狗是不会关闭的。请参考MSP430FR4xx and MSP430FR2xx family user's guide (Rev. I)12.2.5 Clock Fail-Safe Feature: