This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

CC1200 WOR calibration

Other Parts Discussed in Thread: CC1101, CC1200

Hi!

Are there alternatives of the CC1101 WOR RCOSC calibration registers - CC1101_RCCTRL1_STATUS / CC1101_RCCTRL0_STATUS and CC1101_RCCTRL1 / CC1101_RCCTRL0 in the CC1200 chip?

In SWRU346B page 99 I can see RCCAL_FINE and RCCAL_COARSE but not much information is presented in the register description.

  • The RC oscillator is the same on CC1101 and CC1200 but the control of it has been changed somewhat.

    I belive CC1101_RCCTRL1 = CC1200_RCCCAL_FINE and RCCAL0=RCCAL_COARSE.

    See 9.9 in the CC1200 UserGuide how to do calibration etc. Do you wish to use the RC Oscillator differently than described in the CC1200 UserGuide?

  • Hi TER,

    thank you very much for your help. I'm just porting a exisiting CC1101 code and I'm not sure how to port this:

    // Reading calibration values
    calib1 = cc1101_read_reg(CC1100_RCCTRL1_STATUS);
    calib0 = cc1101_read_reg(CC1100_RCCTRL0_STATUS);
    
    // Storing calibration values
    cc1101_write_reg(CC1100_RCCTRL1, calib1);
    cc1101_write_reg(CC1100_RCCTRL0, calib0);

  • According to the CC1200 UserGuide the RC oscillator is calibrated slightly different on CC1200 than on the CC1101. On CC1101 the code you posted was required, for CC1200 you only need to enable calibration. See the RF sniff mode example, I have pasted the relevant code below:

    static void calibrateRCOsc(void) {

        uint8 temp;

        // Read current register value
        cc112xSpiReadReg(CC112X_WOR_CFG0, &temp,1);

        // Mask register bit fields and write new values
        temp = (temp & 0xF9) | (0x02 << 1);

        // Write new register value
        cc112xSpiWriteReg(CC112X_WOR_CFG0, &temp,1);

        // Strobe IDLE to calibrate the RCOSC
        trxSpiCmdStrobe(CC112X_SIDLE);

        // Disable RC calibration
        temp = (temp & 0xF9) | (0x00 << 1);
        cc112xSpiWriteReg(CC112X_WOR_CFG0, &temp, 1);
    }

  • Thank you!