多语言展示
当前在线:1877今日阅读:86今日分享:14

cc2530的时钟(datasheet)

学习CC2530 Zigbee协议时,首先需要了解时钟系统概念,下面简要介绍一下cc2530单片机的时钟系统。
工具/原料
1

cc2530 datasheet

2

IAR Embedded Workbench

方法/步骤
1

晶振与时钟cc2530有一个内部系统时钟,或者说是主时钟。系统时钟源是16Mhz的RC晶振或是32MHz晶体震荡器。利用CLKCONCMD特殊功能寄存器可以控制时钟。此外,芯片还有一个32KHz时钟源可以是RC振荡器或是晶体振荡器,同样也可以用CLKCONCMD寄存器控制。其中只读寄存器CLKCONSTA可以用来获得当前时钟状态。高精度的晶体振荡器或是低功耗的RC振荡器都可以成为振荡器的选择,需要注意的是:RF接收器要求使用32MHz晶体振荡器。如下图所示即为时钟结构图:

2

晶体振荡器在芯片内部,有2个高频振荡器,一个是32MHz的晶体振荡器,另一个是16MHz的RC晶振。32MHz晶振的启动时间对于某些应用显得有些长,因此芯片可以先在16MHz RC晶振上运行,直到晶体振荡器稳定。16MHzd的RC振荡器比晶体振荡器消耗更少能量,但是精度而言比晶体振荡器差一些,并且不能作为RF传输的运行时钟。此外,芯片还有2个低频振荡器分别是32KHz的晶体振荡器与32KHz的RC振荡器。其中,32KHz XOSC设计运行在32.768KHz频率上,并且为需要时间准确的系统提供了一个稳定的时钟信号。校验后,32KHz的RCOSC在32.753KHz频率上运行。需要注意的是校验只能在32MHz XOSC使能的情况下才被允许。与32KHz XOSC 振荡器相比,2KHz的RC振荡器更适宜于较少成本与能耗。请注意:这2个32KHz的振荡器不能同时使用。如下所示即为系统时钟控制寄存器CLKCONCMD中部分控制位:

3

系统时钟系统时钟来自于所选择的系统时钟源,可以是32MHz的XOSC(晶体振荡器)或者是16MHz的RCOSC(RC振荡器).寄存器CLKCONCMD中OSC位选择系统时钟源,需要指出的是,如果要用RF传输,那么32MHz的晶体振荡器必须被选择作为主时钟并且稳定。改变CLKCONCMD中的OSC位并不能立刻改变系统时钟,只有当CLKCONSTA寄存器中的OSC位与CLKCONCMD中OSC位相同时才能起作用。这归因于对拥有稳定的时钟的需求优先于改变时钟源。此外,CLKCONCMD中的CLKSPD位如同镜子一样反映CLKCONCMD.OSC位。当32MHz XOSC晶振选为系统时钟并且稳定之后,16MHz RC振荡器进行校验,例如CLKCONSTA寄存器的OSC位从1变为0。

4

32KHz时钟选择如上所述,在器件上有2个32KHz时钟源,在复位之后默认会使能32KHz的RC振荡器,并作为32KHz的时钟源,32KHz的RC振荡器能耗小,但与32KHz的晶体振荡器相比精度上差许多。被选择的32KHz时钟源用于驱动休眠时钟,为看门狗产生滴答时钟,并可以用作定时器TIM2的闸门(strobe)用来计算休眠定时器的休眠时间。定时器控制寄存器中OSC32K位用于选择振荡器,作为32KHz的时钟源。CLKCONCMD寄存器的OSC32K位可以随时写入。振荡器在活跃的系统时钟源之前是不会起作用的。当系统时钟从16MHz改变为32MHz的晶体振荡器(CLKCONCMD.OSC从1到0)一旦32KHz RC振荡器被选中了它的的校验就启动了并且被执行。在校准期间,32MHz晶体振荡器的一个分频量会被使用。32KHzRCOSC振荡器校准后的结果是它会工作在32.753kHz上。32kHz RC振荡器校准时间可能要2ms时间来完成。可以设置SLEEPCMD.OSC32K_CALDIS位设置为1的话,会关闭校准。在校准结束时,会在32KHz时钟源上产生一个额外的脉冲,会导致睡眠定时器增加1。注意:当切换到32KHz晶体振荡器后和从32KHz晶体振荡器被设置的PM3模式唤醒时,振荡器稳定到准确频率的时间在500 ms以上。睡眠定时器、看门狗定时器和时钟损失探测器在32KHz晶体振荡器稳定之前不能使用。

推荐信息