您好,
这里我的项目我正在使用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的过程。

