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.

[参考译文] MSP430F5659:xt1时钟不稳定,RTC中断未生成。

Guru**** 2587345 points
Other Parts Discussed in Thread: MSP430F5659

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/614914/msp430f5659-xt1-clock-is-not-stable-and-rtc-interrupts-are-not-generating

部件号:MSP430F5659

您好,

这里我的项目我正在使用MSP430F5659系列进行电压监控,RTC用途,我们也启用了电池备用模块。 在我面临的问题时,请参阅以下问题。

1)我已连接Super Cap以用于RTC Battery Backup并启用Battery Backup充电器,但Super Cap未在充电,而探测Vbat针脚时显示Zero Only (仅为零)。

2)如果我启用了Vbat ADC,它只显示零值。

上述电池备用充电器启用超级充电的示意图,下面给出了"我的软件配置"。

void BatteryBackupConfig()(无效电池BackupConfig())

BAKCTL |= BAKADC;
BAKCHCTL |= CHPWD|CHV0|CHC0|CHEN;
}

3)我的XT1时钟不稳定,振荡为32 KHz,56 KHz,6 KHz。 我在配置时钟之前清除了锁定位。 在这里,我连接了我的时钟电路。

 我的低频时钟软件配置如下所示。

void TurnOnLFXT1 (void)

P7SEL || BITS0 + BITS1;//XT1IN,XT1OUT
RTCCTL1 &=~RTCHOLD;

UCSCTL4 |=拉美_ XT1CLK;
UCSCTL6 &=~(XT1OFF);
UCSCTL6 ||(XT1DRIVE0_L | XT1DRIVE1_L);
UCSCTL6 &=~(XTS);
UCSCTL6 |= XCAP_3;
执行{
UCSCTL7 &=~(XT1LFOFFG);
//清除XT2,XT1,DCO故障标志
SFRIFG1 &=~OFIFG;//清除故障标志
} While ( UCSCTL7 & XT1LFOFFG );
}

4)我使用的XT2时钟是12 MHz,所以我给DCO提供了12 MHz时钟,我的生成8 MHz时钟,然后给MCLK和SMCLK提供了此时钟  

它工作正常。如果我清除了XT2OFFIG标志,那么调试UART不能正常工作(为UART提供了SMCLK),并且它显示了一些垃圾。这里是我的软件代码,用于此时钟。

void SetupClock (void)


P7SEL || BIX2 + BIT3;//XT2IN,XT2OUT

UCSCTL3 |= SELREF_5 | FLLREFIV_4;//设置DCO FLL参考= XT2并除以4
UCSCTL4 |= SESL__DCOCLK | SELM__DCOCLK;  


__bis_sr_register(SCG0);//禁用FLL控制回路
UCSCTL0 = 0x0000;//设置可能的最低DCOx,MODx
UCSCTL1 = DCORSEL_5;//为DCO范围16MHz操作选择5
UCSCTL2 = FLLD_1 + 7;//为8MHz设置DCO乘法器

//(N + 1)* FLLRef = Fdco
//(7 + 1)* 1M = 8MHz
//设置FLL Div = fDCOCLK/2


__BIC_SR_REGISTER(SCG0);//启用FLL控制回路

UCSCTL6 |= XT2DRIVE_2;
UCSCTL6 &=~(XT2OFF);


//当DCO范围位已存在时,DCO的最坏情况下稳定时间
//changed是n x 32 x 32 x f_MCLK / f_FLL_reference。 请参阅5xx中的UCS章节
//UG进行优化。
//32 x 32 x 8 MHz / 1MHz = 8192 = MCLK周期,以便DCO稳定下来
__DELAY周期(8192);
while ( UCSCTL7 & XT2OFFIG ){
UCSCTL7 &=~(DCOFFG + XT2OFFIG);
//清除XT2,XT1,DCO故障标志
SFRIFG1 &=~OFIFG;//清除故障标志
__DELAY周期(1万);
}
}

我的主要功能是下面的plz check。

void main()

日历_t curTime;
disable_watchdog ();
SetupClock();/*设置时钟8MHZ*/


debug_console();/*设置debug UART */
DEBUG_PUT_STRING("Debug UART \r\n");


BatteryBackupConfig();
BatteryBackUpLockCliar();


TurnOnLFXT1();
DEBUG_PUT_STRING("低频时钟\r\n");


curTime.seconds = 0x00;
curTime.minutes = 0x10;
curTime.hours = 0x17;
curTime.DayOfWeek = 0x4;
curTime.dayofmonth = 0x13;
curTime.Month = 0x7;
curTime.Year = 0x2017;
RTCInit (&curTime);
RTCSetCalendarEvent(RTCTEV_0);
RTCInterruptClear (RTCRDYIFG + RTCTEVIFG + RTCAIFG);
RTCInterruptEnable (RTCTEVIE | RTCRDYIE);
RTcStart();
DEBUG_PUT_STRING("RTC init\r\n");
而(1){
__DELAY周期(800万);
DEBUG_PUT_STRING("RTC Test \r\n");
}
}

注意:请尽快回复,并在关键阶段回复。 介绍 使用电池备份模式配置XT1时钟RTC的过程。

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

    感谢您使用MSP设备进行设计。 我将检查您的问题并稍后回复您。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,

    请尽快回复。 它现在有点不重要了。

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

    很抱歉,因为我在这些天不在办公室,所以很晚才回复。 我现在要研究一下你的主题。