This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] MSP430F6459:MSP430F6459 ACLK在LPM3模式下关闭

Guru**** 662690 points
Other Parts Discussed in Thread: MSP430F6459, MSP-EXP430FR5994
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/633971/msp430f6459-msp430f6459-aclk-shutdown-in-lpm3-mode

部件号:MSP430F6459
主题中讨论的其他部件: MSP-FET430UIFMSP-TS430PZ100USBMSP-EXP430FR5994

大家好,

在LPM3模式下,ACLK仍应工作。 但MSP430F6459中的以下代码表明它将关闭ACLK( XT1=32KHz的源代码)。

此外,如果我的PCBA与MSP-FET430UIF连接,ACLK也是正常的(LPM3)。

需要您的帮助。

谢谢。

此致,

SeaFesse

#include <msp430f6459.h>

void main (void)
{

WDTCTL = WDTPW | WDTHOLD; //停止WDT

P1DIR || BIT0;
P1SEL || BIT0; //WFP 1.0 --- ACLK输出

PJDIR |= BIT2;
// PJSEL &=~BIT2;

同时(BAKCTL和LOCKBAK) //解锁XT1引脚以进行操作
BAKCTL &=~(LOCKBAK);


//设置UCS
UCSCTL3 |= SELREF__XT1CLK; //设置DCO FLL参考= XT1
UCSCTL4 |=拉美_ XT1CLK; //设置ACLK = XT1

__bis_sr_register (SCG0); //禁用FLL控制回路
UCSCTL0 = 0x0000; //设置尽可能低的DCOx,MODx
UCSCTL1 = DCORSEL_5; //选择DCO范围16MHz操作
UCSCTL2 = FLLD_1 | 243; //将DCO乘数设置为8MHz
//(N + 1)* FLLRef = Fdco
//(243 + 1)* 3.2768万 = 8MHz
//设置FLL Div = fDCOCLK/2
__BIC_SR_REGISTER (SCG0); //启用FLL控制回路

//当DCO范围位已存在时,DCO的最坏情况下稳定时间
//更改的是n x 32 x 32 x f_MCLK / f_FLL_reference。 请参阅5xx中的UCS章节
// UG进行优化。
// 32 x 32 x 8 MHz/ 3.2768万 Hz = 25万 = MCLK周期,以便DCO稳定下来
__DELAY周期(25万);

//循环,直到XT1,XT2和DCO故障标志被清除
做
{
UCSCTL7 &=~(XT2OFFG | XT1LFOFFG | DCOFFG);
//清除XT2,XT1,DCO故障标志
SFRIFG1 &=~OFIFG; //清除故障标志
} 同时(SFRIFG1和OFIFG); //测试振荡器故障标志






同时(1)
{
__bis_sr_register (LPM3_bits | GIE); //输入LPM0,启用中断
__no_operation(); //用于调试器

}

}



  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好,SeaFesse,

    您能否澄清您遇到的问题? 您是否说当代码位于LPM3中时,代码应该关闭ACLK,但当您将PCB连接到MSP-FET430UIF时,它仍然出现? 您认为ACLK在LPM3中仍然可用是正确的。

    谢谢!
    Ryan
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好Ryan:

    您是否认为当代码处于LPM3中时,它应该关闭ACLK,但当您将PCB连接到 MSP-FET430UIF时,它仍然出现? [/引述]

    不,我说ACLK应该仍在使用或不使用MSP-FET430UIF处理LPM3。 但是,如果我的PCBA与MSP-FET430UIF断开连接,那么ACLK就无法在WFP 1.0 上输出。

    另一方面,如果MSP-FET430UIF与我的PCBA连接,则ACLK运行良好。  

    顺便说一句,我今天解决了这个问题。 硬件发动机保持引脚VBAT未连接。 我浏览了"电池备份系统"章节的用户指南,发现此针脚应与之连接

    如果 应用程序中不需要电池备用系统,则使用DVCC。

    因此,本问题转而探讨MSP-FET430UIF如何使这些功能有所不同。 JTAG是否会影响 电池备份系统?  

    此致,

    Seafesse。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,SeaFesse,

    您认为VBAT应连接到DVCC是正确的。 我相信我复制了您在使用MSP-TS430PZ100USB目标板时看到的行为。

    当您插入最初为主板供电的电缆(通过USB或JTAG连接器)时,主板电源电压不稳定,导致DVCC下降到配置的高侧SVS级别以下。 由于BAKCTL寄存器中的BAKDIS =0,为备用提供的子系统(包括XT1振荡器)供电的电源从DVCC切换到VBAT。

    当VBAT成为电源时,它连接到VBAK引脚上的电容器,电容器会快速放电,振荡器会断电,解释为什么您在WFP 1.0 上没有看到ACLK。 下图显示了此行为。

    将MCU连接到调试器后,将重置电路板,DVCC已经稳定,因此XT1始终由DVCC供电。 这就是为什么在拔下VBAT跳线的情况下,仍能在WFP 1.0 上看到ACLK。 下图显示了发生这种情况的时间。 由于VBAT不会成为电源,因此它不会连接到VBAK上的电容器,其值保持为0。

    此致,

    Ryan

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,Ryan:

    非常感谢您抽出时间重现此问题。  我仍然有疑问,需要你们的进一步帮助。

    当您插入最初为主板供电的电缆(通过USB或JTAG连接器)时,主板电源电压不稳定,导致DVCC下降到配置的高端SVS级别以下。 由于BAKDIS = BAKCTL寄存器中的0,为备用提供的子系统(包括XT1振荡器)供电的电源从DVCC切换到VBAT。

     我同意板载电源最初不是很稳定。但是,当我断开我的PCBA与UIF的连接, 然后通过MSP-EXP430FR5994为PCBA供电时,电源应该在一段时间后最终保持稳定,这意味着DVCC将高于SH SVlevel, 备份供应商子系统应该自动切换到DVCC,而ACLK应该恢复运行。可能需要时间,但我相信3到4秒就足够了。 然而,正如我们所看到的那样,阿克莱克仍然是"死的"。

    此外,我在上面粘贴的代码,如果我将LPM3更改为LPM0,你会发现ACLK始终工作,无论VBAT或DVCC的状态如何。如果原因是你上面描述的,很难解释。

    此致,

    Seafesse。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,Seafesse,

    如果您更改了发布的代码以包括

    BAKCTL |= BAKDIS; 

    之后

    同时(BAKCTL和LOCKBAK) //解锁XT1引脚以进行操作
    BAKCTL &=~(LOCKBAK); 

    然后,不管输入lpm3还是用于为板供电的电源,ACLK信号都应保持由DVCC供电并保持打开。

    由于您的硬件设置和代码最初未遵循《用户指南》中的指导原则,因此该行为可能与《用户指南》中指定的内容不匹配。

    此致,

    Ryan