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.

CC1101 ; Sync word not detected

Other Parts Discussed in Thread: CC1101, CC110L

.Hello,

I’m using one CC1101_TX as a transmitter: 868Mhz, GFSK , NO Manchester, 2 synchros words, 4 byte data, no  CRC.

The second  CC1101_RX  is configured as a receiver in asynchronous mode  with  GDO_2 : IOCFG2=0x06 . It works perfectly : I see the frame on the output exactly as It is defined on CC1101_TX.

I ‘d like to use syncro detection features  on CC1101_RX:  I change GDO_2  to 0x06: Sometimes I see a short duration high level  on this pin, but not in relation with the transmitter.  IF  IOCFG2 is configured for RSSI assertement, it works..  Both SYNC1 and SYNC0 are the same in transmitter and receiver.

What is the delay between beginning of the frame and sync word assertement on GDO pin?

Do I need  to change more than IOCFG2 configuration?

Many thanks for  your answer.

  • Hi

    Asynchronous serial mode does not support sync detection. For that you need to use Synchronous Serial Operation (PKTCTRL0.PKT_FORMAT = 1). In this mode the CC1101 will provide a clock on the gdo pint that can be used to set up or read data from the data pin. In this mode sync detection can be either enabled or disabled depending on the MDMCFG2.SYNC_MODE setting. If sync detection is enabled , the clock and data on the gdo's will not be output before a sync word is detected.

    Please read 27.2 in tha user guide for more information.

  • Thank's for this very fast Answer. You are right, I forgot to turn the receiver in other mode than asynchronous….newbee mistake. (May be a short recall of this in the table 41 could be interesting : feature not always available)

     Your suggestion is the use of Synchronous serial mode. But I'd like to use the SPI for data transfer ( many receiver on my board.) . Thus I work with the ''normal mode'' and FIfO access features.

    To improve sensitivity I don't want to use the polling mode on fifo status word.

     My first Idea was :

    _Use the Normal mode

    _µC is looking at GDO_2 pin configured for sync word detection.

    _If GDO_2 high, µc wait ( 1 frame lenght ) turn the receiver in SIDLE state ,  goes to read the data in the FIFO RX,  flush the FIFO,  and turn the receiver in RX state.

     Is there an error in my approach?

     Best regards.

    Rémi

  • Hi

    For normal/FIFO operation I would recommend the following approach for the receiver side:

    1. Set one of the GDO's to 0x06 (SYNC Word detected)
    2. Let the MCU wait/sleep until GDO signal de-asserts (interrupt on falling edge) This indicates that the hole packet is received and available in the FIFO
    3. Read out RXBYTES to check how many bytes are availible in the FIFO
    4. Read out the received bytes from the FIFO through SPI
    5. Check if CRC is ok by reading the optional status bytes at the end of the packet.

    If RXOFF_MODE is set to 0, the radio will go into IDLE when the hole packet is received.

    As an example of this approach please look at the code posted in this tread:

    http://e2e.ti.com/support/low_power_rf/f/156/p/223754/788840.aspx#788840

    This is written for CC110L, but will also apply for the CC1101.

  • Hello Martin,

    I confirm that asynchronous output data on GDO output , are also available in ''normal fifo mode'' , not only in asyncronous mode.( see PKT_FORMAT)

    I understand better my issue about synchronisation : 16  word is to small : with a datarate about 200Kbits, false detection appears many time per second.

    If we change to 32 bits syncro word : no more false detection.

    Now , I need to understand why there are not data placed in RXFIFO...( the receiver is always in RX_modeOFF 3 , stay in RX ; no adr selection , no crc Check...)

    I wil keep this more simple example code.

    Regards

  • Hi

    Yes the asynchronous output data (0x0D) will also be available on the GDO's in FIFO mode. What register settings are you using. can you post these in a SmartRF Studio -xml config file? (Go to File -> Save Cfg in the Device Control Panel) Then I can check your settings on my HW.

  • Hello Martin,

    See attached File. The GDO_2 pin is configured for FIFO filling and flushing detection. I hope it will be high for incoming data in te Fifo,  and be low when µc has finished to read Fifo, flush the fifo , restart the RX mode.

    With this configuration , I dont see any data in the RXFIFO. But Sync word is well detected ( if GDO_2 config to 0x06)

    Best Regards.

    Rémi

    <?xml version="1.0" encoding="ISO-8859-1"?>
    <!DOCTYPE configuration SYSTEM "C:/Program Files/Texas Instruments/SmartRF Tools/SmartRF Studio 7/config/xml/configdata.dtd"[]>
    <dcpanelconfiguration>
        <Devicename>CC1101</Devicename>
        <Description>Saved configuration data</Description>
        <registersettings>
            <Register>
                <Name>AGCCTRL0</Name>
                <Value>0xb2</Value>
            </Register>
            <Register>
                <Name>AGCCTRL1</Name>
                <Value>0x00</Value>
            </Register>
            <Register>
                <Name>AGCCTRL2</Name>
                <Value>0xc7</Value>
            </Register>
            <Register>
                <Name>BSCFG</Name>
                <Value>0x1c</Value>
            </Register>
            <Register>
                <Name>DEVIATN</Name>
                <Value>0x50</Value>
            </Register>
            <Register>
                <Name>FIFOTHR</Name>
                <Value>0x03</Value>
            </Register>
            <Register>
                <Name>FOCCFG</Name>
                <Value>0x1d</Value>
            </Register>
            <Register>
                <Name>FREND1</Name>
                <Value>0xb6</Value>
            </Register>
            <Register>
                <Name>FREQ0</Name>
                <Value>0x6e</Value>
            </Register>
            <Register>
                <Name>FREQ1</Name>
                <Value>0x64</Value>
            </Register>
            <Register>
                <Name>FREQ2</Name>
                <Value>0x21</Value>
            </Register>
            <Register>
                <Name>FSCAL0</Name>
                <Value>0x1f</Value>
            </Register>
            <Register>
                <Name>FSCAL1</Name>
                <Value>0x00</Value>
            </Register>
            <Register>
                <Name>FSCAL2</Name>
                <Value>0x2a</Value>
            </Register>
            <Register>
                <Name>FSCAL3</Name>
                <Value>0xea</Value>
            </Register>
            <Register>
                <Name>FSCTRL1</Name>
                <Value>0x0c</Value>
            </Register>
            <Register>
                <Name>IOCFG0</Name>
                <Value>0x0d</Value>
            </Register>
            <Register>
                <Name>IOCFG2</Name>
                <Value>0x00</Value>
            </Register>
            <Register>
                <Name>MCSM0</Name>
                <Value>0x18</Value>
            </Register>
            <Register>
                <Name>MCSM1</Name>
                <Value>0x3c</Value>
            </Register>
            <Register>
                <Name>MDMCFG1</Name>
                <Value>0x02</Value>
            </Register>
            <Register>
                <Name>MDMCFG2</Name>
                <Value>0x13</Value>
            </Register>
            <Register>
                <Name>MDMCFG3</Name>
                <Value>0xf8</Value>
            </Register>
            <Register>
                <Name>MDMCFG4</Name>
                <Value>0x5b</Value>
            </Register>
            <Register>
                <Name>PA_TABLE0</Name>
                <Value>0x50</Value>
            </Register>
            <Register>
                <Name>PKTCTRL0</Name>
                <Value>0x00</Value>
            </Register>
            <Register>
                <Name>PKTCTRL1</Name>
                <Value>0x00</Value>
            </Register>
            <Register>
                <Name>PKTLEN</Name>
                <Value>0x10</Value>
            </Register>
            <Register>
                <Name>SYNC0</Name>
                <Value>0xba</Value>
            </Register>
            <Register>
                <Name>SYNC1</Name>
                <Value>0xcc</Value>
            </Register>
            <Register>
                <Name>TEST0</Name>
                <Value>0x09</Value>
            </Register>
            <Register>
                <Name>WORCTRL</Name>
                <Value>0xfb</Value>
            </Register>
        </registersettings>
        <dcpanel>
            <Property role="44" name="m_chkRegView">2</Property>
            <Property role="44" name="m_chkRfParameters">2</Property>
            <Property role="37" name="m_tabUserMode">1</Property>
            <Property role="33" name="m_easyModeSettings">-1</Property>
            <Property role="33" name="m_typicalSettings">-1</Property>
            <Property role="37" name="m_testFuncPanel">1</Property>
        </dcpanel>
        <rfparameters>
            <Property role="46" name="m_cmbFrontends">0</Property>
            <Property role="44" name="m_chkHGMorBYP">2</Property>
            <Property role="46" name="m_cmbEmRevs">-1</Property>
            <Property role="46" name="Xtal frequency">26.000000</Property>
        </rfparameters>
        <conttx>
            <Property role="45" name="m_rbtModulated">1</Property>
            <Property role="45" name="m_rbtUnmodulated">0</Property>
            <Property role="46" name="m_cmbDataFormat">-1</Property>
            <Property role="44" name="m_chkFreqSweep">0</Property>
            <Property role="44" name="m_chkChanSweep">0</Property>
        </conttx>
        <contrx>
            <Property role="46" name="m_cmbDataFormat">-1</Property>
            <Property role="44" name="m_chkAutoScroll">2</Property>
        </contrx>
        <packettx>
            <Property role="42" name="m_edtPayloadSize">16</Property>
            <Property role="42" name="m_edtPacketCount">100</Property>
            <Property role="42" name="m_edtPacketCountEsy">100</Property>
            <Property role="42" name="m_edtRandomPacketData">44 40 66 d0 6b c4 30 b7 32 3b a1 22 f6 22 </Property>
            <Property role="42" name="m_edtPacketData"></Property>
            <Property role="42" name="m_edtAccessAddress"></Property>
            <Property role="44" name="m_chkAddSeqNbr">2</Property>
            <Property role="44" name="m_chkInfinite">0</Property>
            <Property role="44" name="m_chkInfiniteEsy">0</Property>
            <Property role="45" name="m_rbtRandom">1</Property>
            <Property role="45" name="m_rbtText">0</Property>
            <Property role="45" name="m_rbtHex">0</Property>
            <Property role="44" name="m_chkAdvanced">0</Property>
        </packettx>
        <packetrx>
            <Property role="42" name="m_edtPacketCount">100</Property>
            <Property role="42" name="m_edtPacketCountEsy">100</Property>
            <Property role="42" name="m_edtAccessAddress"></Property>
            <Property role="44" name="m_chkInfinite">0</Property>
            <Property role="44" name="m_chkInfiniteEsy">0</Property>
            <Property role="46" name="m_cmbViewFormat">0</Property>
            <Property role="44" name="m_chkSeqNbrIncluded">2</Property>
            <Property role="42" name="m_edtDumpFile"></Property>
            <Property role="44" name="m_chkAdvanced">0</Property>
        </packetrx>
        <commandpanel>
            <Property role="44" name="m_chkInsertLength">0</Property>
            <Property role="42" name="m_edtTxFifo"></Property>
            <Property role="42" name="m_edtRxFifo"></Property>
            <Property role="46" name="m_cmbInstrInput">-1</Property>
        </commandpanel>
    </dcpanelconfiguration>
    

  • Hi Rémi

    I checked your settings in SmartRF Studio and I have no trouble receiving 16 Byte packets with these settings. This suspects me to believe that there is something wrong with your TX. How is the packet you are sending set up?

    I'm attaching the TX settings I used to test your RX if this would be of help.

    <?xml version="1.0" encoding="ISO-8859-1"?>
    <!DOCTYPE configuration SYSTEM "C:/Program Files/Texas Instruments/SmartRF Tools/SmartRF Studio 7/config/xml/configdata.dtd"[]>
    <dcpanelconfiguration>
        <Devicename>CC1101</Devicename>
        <Description>Saved configuration data</Description>
        <registersettings>
            <Register>
                <Name>AGCCTRL0</Name>
                <Value>0xb2</Value>
            </Register>
            <Register>
                <Name>AGCCTRL1</Name>
                <Value>0x00</Value>
            </Register>
            <Register>
                <Name>AGCCTRL2</Name>
                <Value>0xc7</Value>
            </Register>
            <Register>
                <Name>BSCFG</Name>
                <Value>0x1c</Value>
            </Register>
            <Register>
                <Name>DEVIATN</Name>
                <Value>0x50</Value>
            </Register>
            <Register>
                <Name>FOCCFG</Name>
                <Value>0x1d</Value>
            </Register>
            <Register>
                <Name>FREND1</Name>
                <Value>0xb6</Value>
            </Register>
            <Register>
                <Name>FREQ0</Name>
                <Value>0x6e</Value>
            </Register>
            <Register>
                <Name>FREQ1</Name>
                <Value>0x64</Value>
            </Register>
            <Register>
                <Name>FREQ2</Name>
                <Value>0x21</Value>
            </Register>
            <Register>
                <Name>FSCAL0</Name>
                <Value>0x1f</Value>
            </Register>
            <Register>
                <Name>FSCAL1</Name>
                <Value>0x00</Value>
            </Register>
            <Register>
                <Name>FSCAL2</Name>
                <Value>0x2a</Value>
            </Register>
            <Register>
                <Name>FSCAL3</Name>
                <Value>0xea</Value>
            </Register>
            <Register>
                <Name>FSCTRL1</Name>
                <Value>0x08</Value>
            </Register>
            <Register>
                <Name>IOCFG0</Name>
                <Value>0x06</Value>
            </Register>
            <Register>
                <Name>LQI</Name>
                <Value>0x6e</Value>
            </Register>
            <Register>
                <Name>MARCSTATE</Name>
                <Value>0x01</Value>
            </Register>
            <Register>
                <Name>MCSM0</Name>
                <Value>0x18</Value>
            </Register>
            <Register>
                <Name>MDMCFG2</Name>
                <Value>0x13</Value>
            </Register>
            <Register>
                <Name>MDMCFG3</Name>
                <Value>0xf8</Value>
            </Register>
            <Register>
                <Name>MDMCFG4</Name>
                <Value>0x5b</Value>
            </Register>
            <Register>
                <Name>PA_TABLE0</Name>
                <Value>0x50</Value>
            </Register>
            <Register>
                <Name>PKTCTRL0</Name>
                <Value>0x04</Value>
            </Register>
            <Register>
                <Name>PKTLEN</Name>
                <Value>0x10</Value>
            </Register>
            <Register>
                <Name>RSSI</Name>
                <Value>0x80</Value>
            </Register>
            <Register>
                <Name>SYNC0</Name>
                <Value>0xba</Value>
            </Register>
            <Register>
                <Name>SYNC1</Name>
                <Value>0xcc</Value>
            </Register>
            <Register>
                <Name>TEST0</Name>
                <Value>0x09</Value>
            </Register>
            <Register>
                <Name>VCO_VC_DAC</Name>
                <Value>0x94</Value>
            </Register>
            <Register>
                <Name>WORCTRL</Name>
                <Value>0xfb</Value>
            </Register>
        </registersettings>
        <dcpanel>
            <Property role="44" name="m_chkRegView">2</Property>
            <Property role="44" name="m_chkRfParameters">2</Property>
            <Property role="37" name="m_tabUserMode">1</Property>
            <Property role="33" name="m_easyModeSettings">-1</Property>
            <Property role="33" name="m_typicalSettings">-1</Property>
            <Property role="37" name="m_testFuncPanel">2</Property>
        </dcpanel>
        <rfparameters>
            <Property role="46" name="m_cmbFrontends">0</Property>
            <Property role="44" name="m_chkHGMorBYP">2</Property>
            <Property role="46" name="m_cmbEmRevs">-1</Property>
            <Property role="46" name="Xtal frequency">26.000000</Property>
        </rfparameters>
        <conttx>
            <Property role="45" name="m_rbtModulated">1</Property>
            <Property role="45" name="m_rbtUnmodulated">0</Property>
            <Property role="46" name="m_cmbDataFormat">-1</Property>
            <Property role="44" name="m_chkFreqSweep">0</Property>
            <Property role="44" name="m_chkChanSweep">0</Property>
        </conttx>
        <contrx>
            <Property role="46" name="m_cmbDataFormat">-1</Property>
            <Property role="44" name="m_chkAutoScroll">2</Property>
        </contrx>
        <packettx>
            <Property role="42" name="m_edtPayloadSize">16</Property>
            <Property role="42" name="m_edtPacketCount">1</Property>
            <Property role="42" name="m_edtPacketCountEsy">100</Property>
            <Property role="42" name="m_edtRandomPacketData">d4 61 8d be 7b 05 15 07 3b 33 82 1f 18 70 92 da </Property>
            <Property role="42" name="m_edtPacketData"></Property>
            <Property role="42" name="m_edtAccessAddress"></Property>
            <Property role="44" name="m_chkAddSeqNbr">0</Property>
            <Property role="44" name="m_chkInfinite">0</Property>
            <Property role="44" name="m_chkInfiniteEsy">0</Property>
            <Property role="45" name="m_rbtRandom">1</Property>
            <Property role="45" name="m_rbtText">0</Property>
            <Property role="45" name="m_rbtHex">0</Property>
            <Property role="44" name="m_chkAdvanced">2</Property>
            <Property role="46" name="m_cmbSyncWord">3</Property>
            <Property role="46" name="m_cmbPreambleCount">2</Property>
            <Property role="44" name="m_chkAddress">0</Property>
            <Property role="42" name="m_edtAddress"></Property>
            <Property role="46" name="m_cmbLengthConfig">0</Property>
            <Property role="42" name="m_edtLengthConfig">16</Property>
            <Property role="52" name="m_spnPktInterval">150</Property>
            <Property role="44" name="m_chkDefPktInterval">2</Property>
        </packettx>
        <packetrx>
            <Property role="42" name="m_edtPacketCount">100</Property>
            <Property role="42" name="m_edtPacketCountEsy">100</Property>
            <Property role="42" name="m_edtAccessAddress"></Property>
            <Property role="44" name="m_chkInfinite">0</Property>
            <Property role="44" name="m_chkInfiniteEsy">0</Property>
            <Property role="46" name="m_cmbViewFormat">0</Property>
            <Property role="44" name="m_chkSeqNbrIncluded">2</Property>
            <Property role="42" name="m_edtDumpFile"></Property>
            <Property role="44" name="m_chkAdvanced">0</Property>
        </packetrx>
        <commandpanel>
            <Property role="44" name="m_chkInsertLength">0</Property>
            <Property role="42" name="m_edtTxFifo"></Property>
            <Property role="42" name="m_edtRxFifo"></Property>
            <Property role="46" name="m_cmbInstrInput">-1</Property>
        </commandpanel>
    </dcpanelconfiguration>
    

  • Thank for analysis.

    The TX is a CC1101.  For easier investigation with osciloscope, I send a simple frame : preambule , 32 bits sync word and 10 byte data packet. : 0x01,0x02,0x03.....

    no CRC no adr check or oher FEC features.

    Receiver in asyncronous or syncronous mode is able to understand the syncro word and the end of frame ( with GDO_2 in different interrup mode) . I see the data output in series, at the GDO_2 pin.

    How could we explain that FIFO ( norml mode)  is not filling with data...if receiver is able to receive it. ( I need to confirm that behaviour is different if  I flush the fifo at the begining of receiving sequence ;  I will try your xml file in few hours)

    Regards.

  • If you have the radio in FIFO mode and it detects a sync word you will get data into the RXFIFO. How do you check that you do not have any FIFO content? Do you read the RXBYTES register?

    Flushing the FIFO before reception will only reset the FIFO pointers so that the received packet will be placed in the beginning of the FIFO address space.

    Be advised that you are saying that you send 10 byte packets, but your receiver is set up to fixed packet length of 16 Bytes.

  • Hello,

    Your are right, about packen lenght. But result is the same with PKTLEN adjusted to 4. For frame snap shot on TX CC1101, I use the SAME receiver in asyncronous mode. You can see the two pictures : preamble , 2*16 bit sync , data : 1 .. 2 3 .. I use an RF detector on TX for triger ( blue curve)

    µcsequence :

    _reset the CC1101 with Spi STROB_RES

    _program all CC1101 register

    _read all CC1101 register and send me the result on port com for check

    _Strobe PLL calibration , ; Strobe RXmode ( RX is in continous RX mode, normal FIFO mode)

    _a DO-while loop with delay is reading the RX FIFO and send result on port com : I dont see any change for RXfifo number. I dont see any change on GD0_2 pin configured for fifo filling detection.

    Best regards

  • Hello,

    I solved the issue on RXFIFO : like describe in specification, I force the CC1101 , in IDLE mode with spi SIDLE commande ; I flush the fifo;  I turn on the receiver. And I'm able to see the RXFIFO number of byte, increasing angain. If not in Sidle mode and flush : it occurs strange behaviour.

    To come back to the first issue ( sync ) , I d like to use the ADR selction feature. Thus i will be compatible with an other hardware ( 3 byth synchro) , and less sensitive to false sync detection ( only 16 bits ).

    Regards

  • Just to clarify, when you say continuous RX you mean that RXOFF_MODE is set to RX? Have you tried the TX settings i posted earlier?

    A plot showing the FIFO threshold signal together with SYNC_RECEIVED would be useful.

  • Sorry, I didn't see your last post before I posted.

    You are correct that you should be in IDLE mode while flushing.

    If you plan to use address filtering, the radio will still get the sync word but if the following byte does not equal the designated address or a broadcast address, the packet will be discarded and the radio will start to look for sync word again.

  • Hello Martin,

    To conclude about sync detection: 32 bits is OK ; 16 bit is to sensitive with noise : lot of false detection

    To be compatible with an ''old  '' hardware, I'm using ADR feature. ADR word = 3rd sync word : it works. I d'ont have any more false detection

    Thank's for your very fast support.

    Regards

  • You are welcome. And good luck moving forward with your project.