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.

[参考译文] CCS/MSP430FR2311:选择VLOCLK作为RTC源时,计时不正确。

Guru**** 2589280 points
Other Parts Discussed in Thread: MSP430FR4133, MSP430FR2311

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/629618/ccs-msp430fr2311-incorrect-timing-when-selecting-vloclk-as-source-for-rtc

部件号:MSP430FR2311
主题中讨论的其他部件:MSP430FR4133

工具/软件:Code Composer Studio

我正在尝试使用VLOCLK作为LPM3中RTC模块的时钟源,并使用RTC中断每隔一秒闪烁一次LED。 我的终极目标是在3.5 中使用RTC,而不需要任何外部振荡器。

下面是我的代码:

#include <MSP430-h>

#define VLOCLK

int main(void)
{
WDTCTL = WDTPW | WDTHOLD; //停止监视计时

器#ifndef VLOCLK
P2SEL1 || BIT6 | BIT7; // WFP 2.6~WFP 2.7 :水晶针
做
{
CSCTL7 &=~(XT1OFFG | DCOFFG); //清除XT1和DCO故障标志
SFRIFG1 &=~OFIFG;
}同时(SFRIFG1和OFIFG); //测试振荡器故障标志
#else
//选择VLO作为主OSC:请参阅 www.ti.com/.../slau445g.pdf中的3.2 2
CSCTL4 |= SELMS__VLOCLK;
CSCTL5 &=~VLOAUTOOFF;
CSCTL5 |= DIVM__1;
#endif

P1OUT &=~BIT0; //清除WFP 1.0 输出闩锁,以确定开机状态
P1DIR || BIT0; //将WFP 1.0 设置为输出方向

PM5CTL0 &=~LOCKLPM2; //禁用GPIO开机默认高阻抗模式
//激活先前配置的端口设置


#ifndef VLOCLK
// RTC计数重新加载比较值为32。
// 1024/32768 *3.2768万 * 32 = 1秒
RTCMOD = 32-1;
//初始化RTC
//源= 32kHz晶体,除以1024
RTCCTL = RTCSS__XT1CLK | RTCSR | RTCPS__1024 | RTCIE;
#else

// VLOCLK频率为10kHz。
//1000/10000 *1万 * 10=1秒
RTCMOD = 1-1;

RTCCTL || RTCSS__VLOCLK | RTCPS__1000 | RTCIE | RTCSR;

#endif

__bis_sr_register (LPM3_bits | GIE); //输入LPM3,启用中断
//while (1);
}//

RTC中断服务例程
#if defined(__TI_Compiler_version__)|| defined(__IAR_systems_icc__)
#pragma vector=RTC_vector
__interrupt void ISR_ISR(void)
#Elif defined(__GNUC__)
__attribute__((interrupt (elle_RTCvoid) rtc vector)#void) not

supported #rtc error!
#endif
{
Switch(__偶 数_in_range(RTCIV,RTCIV_RTCIF))
{
案例RTCIV_NONE:中断; //不中断
案例RTCIV_RTCIF: // RTC溢出
P1OUT ^= BIT0;
中断;
默认值:break;
}
} 

指示灯每隔1.516 秒切换一次,而不是每隔1秒切换一次。

下面是与WFP 1.0 连接的逻辑分析器的屏幕截图:

如何正确配置RTC时钟?

编辑:

MSP430FR4133 Launchpad上编程时使用相同的代码,LED在1.135 秒(仍不接近1秒)切换。

附加逻辑分析器屏幕截图:

  

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

    这是使用VLO时钟时的典型结果。 正如您在数据表中看到的,VLO时钟的规格非常松散。 其振荡值可能会因电压水平和温度而发生显著变化。 它还可随芯片和批次的不同而变化。 它通常用于不需要精确定时的超低功耗操作。 对于您的应用程序,您似乎需要精确度。
    这里有两个选项:
    1)使用LF XTAL (3.2768万Hz)以获得精确和最低功率(3.5)。
    2)使用REFO,确保设计无间壁。 它与LF XTAL一样精确,但以电流为代价。 您只能向下转到LPM3,而且refo也具有当前成本。请查看数据表以了解特定值。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好,Jace。

    非常感谢您的澄清。

    > 其振荡值可能会因电压水平和温度而发生显著变化。

    这是否意味着在相同的测试条件下,MSP430FR2311和另一个MSP430FR2311之间的时间会有变化?  或不同部件之间的差异,例如 MSP430FR2311和MSP430FR4133之间的差异?  

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

    是的,VLO可以从一个MSP430FR2311实例到另一个MSP430FR2311实例有所不同。 如果您仍然需要您描述的精确度,那么如果外部间壁无法实现,我建议使用REFO。 但这需要额外的电流。 请参阅特定于设备的数据表以了解确切值。