微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI Zigbee设计交流 > ZStack2.5.1a协议栈的HAL_BOARD_INIT()中为什么用while (!(SLEEPSTA & XOSC_STB)); 来判断时钟是否已经稳定?

ZStack2.5.1a协议栈的HAL_BOARD_INIT()中为什么用while (!(SLEEPSTA & XOSC_STB)); 来判断时钟是否已经稳定?

时间:10-02 整理:3721RD 点击:

XOSC_STB定义如下:

/* SLEEPSTA bit definitions */
#define XOSC_STB BV(6) /* XOSC: powered, stable=1 */

而寄存器SLEEPSTA的描述是这样的:

也就是说第六位是保留的,为什么要用这一位来判定时钟是否稳定呢?

SLEEPCMD &= ~OSC_PD;                       /* turn on 16MHz RC and 32MHz XOSC */ 

这一句也是类似的情况,看的很不明白!

其实TI 2540/2541指南里没说清楚,详见http://jingyan.baidu.com/album/e3c78d646084893c4d85f553.html

对于SLEEPSTA寄存器中BIT6/BIT5说明在cc2530说明书中也并没有说明,可以参考cc2430说明书中内容,其中第6位XOSC_STB表明外部高速32M晶振是否上电并稳定起振,当稳定时该位为1;同样对于第5位HFRC_STB则表明内部16MHz高速RC振荡器是否起振,并是否稳定,当16MHz RC振荡器稳定时该位为1。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top