因为多方衡量,我们小组选择了使用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唤醒的例程发给我一份,我参考一下