Dear all,
We have developed a product using CC110L.
We use manual calibration of CC110L each time we start a RX (and when we receive a packet).
A- Problematic PCB
We have detected one prototype where we thought we have problems using SCAL and PLL lock. We detected that one of our devices does not receive any more until we make another SCAL. We have checked value of FSCAL1 (when fails) and it takes value 0x3F.
B- Partial Solution
We have seen errata note refering to PLL (http://www.ti.com/lit/er/swrz037/swrz037.pdf -> 2- PLL Lock Detector Output).
Following troubleshooting on errata sheet, We have implemented a code that check if PLL is OK after SCAL. If PLL is not OK (FSCAL1==0x3F) it generates an extra SCAL until properlly calibrated.
static void ManualCalibration(void) { do { HALCC110x_SpiStrobe(CC110x_SCAL); while(((HALCC110x_SpiReadStatus(CC110x_SNOP)&CC110xStatMASK))==CC110x_Stat_CALIBRATE) { } }while(HALCC110x_SpiReadReg(CC110x_FSCAL1)==0x3F); }
After implementing this solution, we have checked this code, we see that a lot of problems on PLL has been solved (approximately one each two minutes). I think it is too much, as we are doing approximately 8 ManualCalibration() each minute.
We have tested the same software in different pcb and this problem is not reproduced.
C- PLL locked to FSCAL1=0x38.
While using firmware that checks if FSCAL1 is equal to 0x3F, we have left that prototype for a long time to see if the problem is solved.
We have seen that after some time, our equipment was not receiving any data. We have checked FSCAL1 value, and it was 0x38. It is an strange value as usually after a calibration the value of FSCAL1 is 0x1A.
After calibrating CC110L again the system is working again.
Questions:
1- Why do you think that I have so much PLL fails after calibration? (CC110L, voltage…)
2- How can I filter invalid values of FSCAL1?
Thanks in advance,
Ricard