TI中文支持网
TI专业的中文技术问题搜集分享网站

cc1310 driverlib–时钟切换问题

因为多方衡量,我们小组选择了使用SDK里面提供的driverlib驱动库来使用CC1310开发产品。

在系统时钟切换上遇到了问题,如下:

1. 这里说CPU时钟能够在48MHz~750KHz切换,但实在没有找到对应的函数。

这个函数居然固定返回 48000000Hz,这是为啥?

//*****************************************************************************
//
//! \brief Get the CPU core clock frequency.
//!
//! Use this function to get the current clock frequency for the CPU.
//!
//! The CPU can run from 48 MHz and down to 750kHz. The frequency is defined
//! by the combined division factor of the SYSBUS and the CPU clock divider.
//!
//! \return Returns the current CPU core clock frequency.
//
//*****************************************************************************
__STATIC_INLINE uint32_t
SysCtrlClockGet( void )
{// Return fixed clock speedreturn( GET_MCU_CLOCK );
}

2. 貌似无法切换到外部24MHz晶体,代码如下:

if (OSCClockSourceGet(OSC_SRC_CLK_HF)!=OSC_XOSC_HF){uint32_t tmp;OSCHF_TurnOnXosc();while (!OSCHfSourceReady());OSCHfSourceSwitch();do{//checktmp = OSCClockSourceGet(OSC_SRC_CLK_HF);}while (tmp != OSC_XOSC_HF);}

3. SCLK_LF貌似也没有切换到外部32.768KHz,ccfg.c中clock设置如下:

//#####################################
// Clock settings
//#####################################

#ifndef SET_CCFG_MODE_CONF_SCLK_LF_OPTION
// #define SET_CCFG_MODE_CONF_SCLK_LF_OPTION0x0// LF clock derived from High Frequency XOSC
// #define SET_CCFG_MODE_CONF_SCLK_LF_OPTION0x1// External LF clock
#define SET_CCFG_MODE_CONF_SCLK_LF_OPTION0x2// LF XOSC
// #define SET_CCFG_MODE_CONF_SCLK_LF_OPTION0x3// LF RCOSC
#endif
Felix ZF:

按照你上面截取的代码,ccfg.c中的设置即为使用外部32.768KHz晶振。

user4205522:

回复 Felix ZF:

在使用RTC时候,明显发现LaunchPad上时间和电脑时间有差异。大约246s,相差21ms左右。

Felix ZF:

回复 user4205522:

你使用的外部晶振还是内部振荡器,使能校准了吗?

这个差异是如何测到的?具体测试方法是什么?

user4205522:

回复 Felix ZF:

振荡器的设置代码如下:

AUXWUCPowerCtrl(AUX_WUC_POWER_ACTIVE);while (!(AONWUC_AUX_POWER_ON&AONWUCPowerStatusGet()));AUXWUCClockEnable(AUX_WUC_OSCCTRL_CLOCK);if (OSCClockSourceGet(OSC_SRC_CLK_LF)!=OSC_XOSC_LF){OSCClockSourceSet(OSC_SRC_CLK_LF, OSC_XOSC_LF);}

使用方式是使用RTC CH2产生2s的中断,在中断中打印一小段信息。经过很长时间,比如1小时吧,会明显发现偏差

代码如下:

AONRTCCombinedEventConfig(AON_RTC_CH2);AONRTCCompareValueSet(AON_RTC_CH2, 0x10000);AONRTCModeCh2Set(AON_RTC_MODE_CH2_CONTINUOUS);AONRTCIncValueCh2Set(0x20000);//2sAONRTCEnable();AONRTCChannelEnable(AON_RTC_CH2);IntEnable(INT_AON_RTC_COMB);//AON-RTC

使用的串口工具大致如下(3S的一个周期性打印任务),接收数据时间能精确到ms。

[17-07-25 10:49:12:436][Rx]uart_p run 115 timers
[17-07-25 10:49:15:439][Rx]uart_p run 116 timers
[17-07-25 10:49:18:437][Rx]uart_p run 117 timers
[17-07-25 10:49:21:436][Rx]uart_p run 118 timers

user4205522:

回复 user4205522:

另外,我测试的硬件平台是CC1350的LaunchPad Rev:1.1

fenglin hu:

回复 user4205522:

您好,可不可以把你RTC唤醒的例程发给我一份,我参考一下

赞(0)
未经允许不得转载:TI中文支持网 » cc1310 driverlib–时钟切换问题
分享到: 更多 (0)