一般应用对时钟并没有十分苛刻的要求,而无线通信的时钟设计则事关重大,蓝牙核心规范中对蓝牙时钟的频率稳定性有个量化的要求为20ppm,因为蓝牙的数据传输采用GFSK调制解调机制,是在载波上对频率进行调制来表示0和1的,载波中心频率点+fd =1,中心频率点-fd=0,如果频率不稳定,那么肯定会发生“过零点”错误(zero-cross),即将1解调为0或者将0解调为1。当然2.4GHz*20ppm=48KHz,为什么48KHz的偏差便会造成过零点错误,这个我不太清楚。
显然,对于采用GFSK这种频移键控调制方式的蓝牙通信而言,如果发射方载波频率不稳定,便会造成接收方解调错误,这就是为什么“初始载波偏移”对蓝牙应用而言是个非常重要的参数的原因。载波频率由晶振PLL倍频而来,所以蓝牙时钟电路设计便落脚到晶振电路设计上。
大家都知道晶振分为两类,有源的和无源的。无源晶振一般又称为晶体,有源晶振一般又称为时钟,选择哪个取决于成本和精度,当然还取决于所选择处理器是否内带振荡电路。如果不计成本的话,选择稳定的外部时钟是最可靠的,他的价格高是因为其内部集成了晶体和相应的振荡电路,匹配精确,频率稳定性高,而且抗干扰性能好,有的还做了相应的补偿,如温度补偿晶振。
选择晶体+振荡电路设计的方式成本低,但要达到一定的精度除了晶体的选择外还要需要精确设计振荡电路。晶体有一定的制造公差,该公差以ppm表示,另外晶体频率和温度有个频温特性曲线,晶体的选择便是考虑这两个参数,而振荡电路的设计与晶体的负载电容密切相关,所谓的负载电容就是cry_in和cry_out两端的电容值,负载电容和谐振频率有个近似线性的关系,大概10ppm/PF,这样晶体的谐振频率的稳定性便是可以微调的,一般是在cry_in,cry_out两端串联的电容值上并联上可调电容,通过调整电容将谐振频率进行fine trim(精密微调)。
对于蓝牙应用而言,频率不稳定的影响是什么呢,当然对于搜索,配对和连接以及连接上之后的数据交互都有影响,这些都是显而易见的,除此之外,笔者举个大家很少留意发现的现象说明一下。
我们在HFP上搜索手机然后发起配对时,发现如果nokia 6500c本身电池电量很低而此时又处于充电状态,这个时候总是配对失败,我想原因就在于这个时候6500c内部电压源是不稳定的,那么经过压控振荡器VCO产生的频率也是不稳定的,所以配不上对。蓝牙本身不是固定在某个频段上,载波频率是自适应跳跃的,所以我想大部分蓝牙设备应该是采用压控振荡器调节电压来达到载波频率的调整的吧。