已经发了两个帖子了,可是没一个人来帮一下小弟,所以又重新简单的发个新帖,希望TI的工程师或者遇到过这个情况的朋友能帮一下忙,详细的问题描述在以前的老帖http://www.deyisupport.com/question_answer/analog/wireless_connectivity/f/45/t/30386.aspx
在TI的开发板和我们公司自己的电路板上都测试过CC1125频率校准的时间。
1、使用选通脉冲SCAL进行手动校准,经测量,ti开发板的手动校准时间约等于1.9ms,而我们自己的电路板约等于2.5ms,跟CC1125数据手册里的0.4ms相差太大
2、根据CC112x的errata note上的手动校准方法,以及用户指南10.3.2上的方法:
Fast frequency hopping without calibration for each hop can be done by performing the necessary
calibration at start-up and saving the resulting FS_CHP, FS_VCO4, and FS_VCO2 register values in
MCU memory. Between each frequency hop, the calibration process can then be replaced by writing
the calibration values that corresponds to the next RF frequency.
在每次系统启动时都预先对需要的频率进行过校准,并把校准值存起来,在改变频率时,连续写入频率寄存器值和频率校准值,程序如下:
u8 marcstate;
halSpiStrobe(CC1125_SIDLE);
halSpiWriteBurstReg(CC1125_FREQ2, freq, 3);
halSpiWriteReg(CC1125_FS_VCO2, buff[0]); //写频率校准值
halSpiWriteReg(CC1125_FS_VCO4, buff[1]);
halSpiWriteReg(CC1125_FS_CHP, buff[2]);
do //等待芯片回到idle状态
{
halSpiReadReg(CC1125_MARCSTATE, &marcstate);
} while (marcstate != 0x41);
halSpiStrobe(CC1125_STX);
但写完频率校准值后,必须等待芯片回到idle状态(或者至少延时2.5ms),才能发射载波成功。
如果不等待芯片回到idle状态,直接进行发射, 则输出的频率以成功—失败—成功—失败—成功—失败......的方式出现。
所有的方法中,不管是用串行模式还是FIFO模式,频率的校准时间跟手册上的差距都很大,跟TI代理商的技术支持工程师咨询过,他们也无法解决,所以只能到这边来寻求帮助了。