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.

LAUNCHXL-CC1310: Help on RF Parameter Concepts

Part Number: LAUNCHXL-CC1310
Other Parts Discussed in Thread: CC1310

Tool/software:

Hello.
I am working with the generation of RF configuration files FOR CC1310 with SmartRF_Studio7 and I am not very familiar with the following concepts:

- Deviation
- Symbol Rate
- RX BW Filter
- Whitening

Could someone please define them and help me to understand what is the function of each one in the operation of the CC1310 radios.

Thank you very much in advance.

  • Hi,

    • Symbol rate (symbols/second) is the rate at which symbols are transmitted. In the case of 2-FSK modulation the symbol rate equals the data rate (bits/second). For the same modulation the higher the symbol rate the higher the data rate.
    • 2-FSK uses two different frequencies to transmit symbols. One with a positive deviation and another with a negative deviation from the center frequency. The deviation the should be used depends on the symbol rate and the sensitivity that wants to be achieved.
    • The Rx BW filter depends on the symbol rate, deviation, type of filter and crystal accuracy. The Rx BW should be wide enough to capture all of the signal. Rule of thumb is that it should equal the symbol rate + 2 * deviation.
    • For whitening you can review this document: https://www.ti.com/lit/an/swra322/swra322.pdf. It is written for another CC device, but gives an explanation about whitening.

    I suggest that you use one of the characterized PHYs that are available in smartRF studio and not modify the settings. They have been validated over temperature, voltage and other parameters. 

  • Thank you very much, you have been a great help.  :)

  • Hello Diego P.
    Today I continued generating my RF parameter files with Smart Studio7.
    Here is the header in the generated file smartrf_settings.c

    //*********************************************************************************
    // Generated by SmartRF Studio version 2.8.0 ( build #41)
    // Compatible with SimpleLink SDK version: CC13x0 SDK 1.60.xx.xx
    // Device: CC1310 Rev. 2.1 (Rev. B)
    //
    //*********************************************************************************


    //*********************************************************************************
    // Parameter summary
    // Address: off
    // Address0: 0xAA
    // Address1: 0xBB
    // Frequency: 868.00000 MHz
    // Data Format: Serial mode disable
    // Deviation: 25.000 kHz
    // pktLen: 30
    // 802.15.4g Mode: off
    // Select bit order to transmit PSDU octets:: 1
    // Packet Length Config: Variable
    // Max Packet Length: 128
    // Packet Length: 20
    // RX Filter BW: 98 kHz
    // Symbol Rate: 50.00000 kBaud
    // Sync Word Length: 32 Bits
    // TX Power: 12 dBm (requires define CCFG_FORCE_VDDR_HH = 0 in ccfg.c, see CC13xx/CC26xx Technical Reference Manual)
    // Whitening: No whitening

    I'm still not completely clear of my doubts, specifically with the following sections, they seem a bit confusing.
    Note: My application is developed with EasyLink-v2.30.00

    // pktLen: 30
    // Packet Length Config: Variable
    // Max Packet Length: 128
    // Packet Length: 20



    Attached is a piece of code that corresponds to the assembly of my data into a TX message.

    Is my RF parameter setting congruent with the type of message I am trying to convey?

     txPacket.payload[0] = 0x7E;
     txPacket.payload[1] = 0x00;
     txPacket.payload[2] = 0xC1;
     txPacket.payload[3] = 0xDD;
     size_t j,i;
     for(j = 4, i = 0;j!=sizeof(ID_Nozzle)+5;j++,++i){
          txPacket.payload[j] = ID_Sensor[i];
     }
     int k,l;
     for(k = 12, l = 0;k!=sizeof(TID)+13;k++,++l){
     txPacket.payload[k] = TID[l];
     }
     txPacket.len = 24;
     memcpy(&txPacket.dstAddr,&dir_broadcast, sizeof(dir_broadcast);
    EasyLink_transmitAsync(&txPacket, TxDoneCb); Semaphore_pend(RXSem, BIOS_WAIT_FOREVER);
    EasyLink_receiveAsync(rxDoneCb, 0); if(Semaphore_pend(RXSem, (500000 / Clock_tickPeriod)) == FALSE)
    {
    if(EasyLink_abort() == EasyLink_Status_Success { Semaphore_pend(RXSem, BIOS_WAIT_FOREVER);
    }
      }