The TI E2E™ design support forums will undergo maintenance from Sept. 28 to Oct. 2. If you need design support during this time, contact your TI representative or open a new support request with our customer support center.

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.

CC1121: CC1121 vs CC1101 compatibility problem

Part Number: CC1121
Other Parts Discussed in Thread: CC1101, , CC110L, CC1120

Hi all,

I have a compatibility problem between CC1101 (we use it from many years) and CC1121 (we would like to start using it because it has a better link budget). Of course, we need the compatibility between them. When the CC1101 send a packet to the CC1121, the packet is received but the data in the packet are completely different from the data sent. Someone could help me? Here are the two SmartRf studio setups.

Thank you very much for your help.

SETUP_43365_CC1101.xml
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE configuration SYSTEM "C:/Program Files (x86)/Texas Instruments/SmartRF Tools/SmartRF Studio 7/config/xml/configdata.dtd"[]>
<dcpanelconfiguration>
    <Devicename>CC1101</Devicename>
    <Description>Saved configuration data</Description>
    <registersettings>
        <Register>
            <Name>AGCCTRL2</Name>
            <Value>0x43</Value>
        </Register>
        <Register>
            <Name>DEVIATN</Name>
            <Value>0x35</Value>
        </Register>
        <Register>
            <Name>FIFOTHR</Name>
            <Value>0x47</Value>
        </Register>
        <Register>
            <Name>FOCCFG</Name>
            <Value>0x16</Value>
        </Register>
        <Register>
            <Name>FREQ0</Name>
            <Value>0xc8</Value>
        </Register>
        <Register>
            <Name>FREQ1</Name>
            <Value>0xad</Value>
        </Register>
        <Register>
            <Name>FREQ2</Name>
            <Value>0x10</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>0xe9</Value>
        </Register>
        <Register>
            <Name>FSCTRL1</Name>
            <Value>0x06</Value>
        </Register>
        <Register>
            <Name>IOCFG0</Name>
            <Value>0x06</Value>
        </Register>
        <Register>
            <Name>IOCFG2</Name>
            <Value>0x0e</Value>
        </Register>
        <Register>
            <Name>MCSM0</Name>
            <Value>0x08</Value>
        </Register>
        <Register>
            <Name>MDMCFG2</Name>
            <Value>0x12</Value>
        </Register>
        <Register>
            <Name>MDMCFG3</Name>
            <Value>0x83</Value>
        </Register>
        <Register>
            <Name>MDMCFG4</Name>
            <Value>0xca</Value>
        </Register>
        <Register>
            <Name>PA_TABLE0</Name>
            <Value>0xc0</Value>
        </Register>
        <Register>
            <Name>TEST0</Name>
            <Value>0x09</Value>
        </Register>
        <Register>
            <Name>TEST1</Name>
            <Value>0x35</Value>
        </Register>
        <Register>
            <Name>TEST2</Name>
            <Value>0x81</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_chkCmdView">0</Property>
        <Property role="44" name="m_chkRfParameters">2</Property>
        <Property role="46" name="m_cmbUserMode">0</Property>
        <Property role="33" name="m_easyModeSettings">-1</Property>
        <Property role="33" name="m_typicalSettings">-1</Property>
        <Property role="37" name="m_testFuncPanel">0</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">30</Property>
        <Property role="42" name="m_edtPacketCount">100</Property>
        <Property role="42" name="m_edtPacketCountEsy">100</Property>
        <Property role="42" name="m_edtRandomPacketData">13 0d 89 0a 1c db ae 32 20 9a 50 ee 40 78 36 fd 12 49 32 f6 9e 7d 49 dc ad 4f 14 f2 </Property>
        <Property role="42" name="m_edtPacketData"></Property>
        <Property role="42" name="m_edtAccessAddress"></Property>
        <Property role="42" name="m_edtDeviceAddress"></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>
        <Property role="44" name="m_chk802154gMode">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>
SETUP_43365_CC1121.xml
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE configuration SYSTEM "C:/Program Files (x86)/Texas Instruments/SmartRF Tools/SmartRF Studio 7/config/xml/configdata.dtd"[]>
<dcpanelconfiguration>
    <Devicename>CC1121</Devicename>
    <Description>Saved configuration data</Description>
    <registersettings>
        <Register>
            <Name>AGC_CFG0</Name>
            <Value>0xc0</Value>
        </Register>
        <Register>
            <Name>AGC_CFG1</Name>
            <Value>0xa9</Value>
        </Register>
        <Register>
            <Name>AGC_CS_THR</Name>
            <Value>0xef</Value>
        </Register>
        <Register>
            <Name>AGC_REF</Name>
            <Value>0x3c</Value>
        </Register>
        <Register>
            <Name>CHAN_BW</Name>
            <Value>0x02</Value>
        </Register>
        <Register>
            <Name>DCFILT_CFG</Name>
            <Value>0x15</Value>
        </Register>
        <Register>
            <Name>DEVIATION_M</Name>
            <Value>0x52</Value>
        </Register>
        <Register>
            <Name>FIFO_CFG</Name>
            <Value>0x00</Value>
        </Register>
        <Register>
            <Name>FREQ0</Name>
            <Value>0x99</Value>
        </Register>
        <Register>
            <Name>FREQ1</Name>
            <Value>0x69</Value>
        </Register>
        <Register>
            <Name>FREQ2</Name>
            <Value>0x6c</Value>
        </Register>
        <Register>
            <Name>FREQ_IF_CFG</Name>
            <Value>0x3a</Value>
        </Register>
        <Register>
            <Name>FS_CAL0</Name>
            <Value>0x0e</Value>
        </Register>
        <Register>
            <Name>FS_CAL1</Name>
            <Value>0x40</Value>
        </Register>
        <Register>
            <Name>FS_CFG</Name>
            <Value>0x14</Value>
        </Register>
        <Register>
            <Name>FS_DIG0</Name>
            <Value>0x5f</Value>
        </Register>
        <Register>
            <Name>FS_DIG1</Name>
            <Value>0x00</Value>
        </Register>
        <Register>
            <Name>FS_DIVTWO</Name>
            <Value>0x03</Value>
        </Register>
        <Register>
            <Name>FS_DSM0</Name>
            <Value>0x33</Value>
        </Register>
        <Register>
            <Name>FS_DVC0</Name>
            <Value>0x17</Value>
        </Register>
        <Register>
            <Name>FS_PFD</Name>
            <Value>0x50</Value>
        </Register>
        <Register>
            <Name>FS_PRE</Name>
            <Value>0x6e</Value>
        </Register>
        <Register>
            <Name>FS_REG_DIV_CML</Name>
            <Value>0x14</Value>
        </Register>
        <Register>
            <Name>FS_SPARE</Name>
            <Value>0xac</Value>
        </Register>
        <Register>
            <Name>FS_VCO0</Name>
            <Value>0xb4</Value>
        </Register>
        <Register>
            <Name>IF_MIX_CFG</Name>
            <Value>0x00</Value>
        </Register>
        <Register>
            <Name>IOCFG0</Name>
            <Value>0x06</Value>
        </Register>
        <Register>
            <Name>IOCFG1</Name>
            <Value>0xb0</Value>
        </Register>
        <Register>
            <Name>IOCFG2</Name>
            <Value>0x86</Value>
        </Register>
        <Register>
            <Name>IOCFG3</Name>
            <Value>0xb0</Value>
        </Register>
        <Register>
            <Name>IQIC</Name>
            <Value>0x00</Value>
        </Register>
        <Register>
            <Name>MDMCFG0</Name>
            <Value>0x05</Value>
        </Register>
        <Register>
            <Name>MODCFG_DEV_E</Name>
            <Value>0x0d</Value>
        </Register>
        <Register>
            <Name>PA_CFG0</Name>
            <Value>0x7b</Value>
        </Register>
        <Register>
            <Name>PKT_CFG0</Name>
            <Value>0x20</Value>
        </Register>
        <Register>
            <Name>PKT_CFG1</Name>
            <Value>0x45</Value>
        </Register>
        <Register>
            <Name>PKT_LEN</Name>
            <Value>0xff</Value>
        </Register>
        <Register>
            <Name>PREAMBLE_CFG1</Name>
            <Value>0x18</Value>
        </Register>
        <Register>
            <Name>SYMBOL_RATE0</Name>
            <Value>0x76</Value>
        </Register>
        <Register>
            <Name>SYMBOL_RATE1</Name>
            <Value>0xa7</Value>
        </Register>
        <Register>
            <Name>SYMBOL_RATE2</Name>
            <Value>0x93</Value>
        </Register>
        <Register>
            <Name>SYNC0</Name>
            <Value>0xcc</Value>
        </Register>
        <Register>
            <Name>SYNC1</Name>
            <Value>0xcc</Value>
        </Register>
        <Register>
            <Name>SYNC2</Name>
            <Value>0x00</Value>
        </Register>
        <Register>
            <Name>SYNC3</Name>
            <Value>0x00</Value>
        </Register>
        <Register>
            <Name>SYNC_CFG0</Name>
            <Value>0x0b</Value>
        </Register>
        <Register>
            <Name>SYNC_CFG1</Name>
            <Value>0x08</Value>
        </Register>
        <Register>
            <Name>TOC_CFG</Name>
            <Value>0x0a</Value>
        </Register>
        <Register>
            <Name>XOSC1</Name>
            <Value>0x03</Value>
        </Register>
        <Register>
            <Name>XOSC5</Name>
            <Value>0x0e</Value>
        </Register>
    </registersettings>
    <dcpanel>
        <Property role="44" name="m_chkRegView">2</Property>
        <Property role="44" name="m_chkCmdView">0</Property>
        <Property role="44" name="m_chkRfParameters">2</Property>
        <Property role="46" name="m_cmbUserMode">0</Property>
        <Property role="33" name="m_easyModeSettings">-1</Property>
        <Property role="33" name="m_typicalSettings">-1</Property>
        <Property role="37" name="m_testFuncPanel">0</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">32.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">30</Property>
        <Property role="42" name="m_edtPacketCount">100</Property>
        <Property role="42" name="m_edtPacketCountEsy">100</Property>
        <Property role="42" name="m_edtRandomPacketData">13 0d 89 0a 1c db ae 32 20 9a 50 ee 40 78 36 fd 12 49 32 f6 9e 7d 49 dc ad 4f 14 f2 </Property>
        <Property role="42" name="m_edtPacketData"></Property>
        <Property role="42" name="m_edtAccessAddress"></Property>
        <Property role="42" name="m_edtDeviceAddress"></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>
        <Property role="44" name="m_chk802154gMode">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>
    <packetRxSniffMode>
        <Property role="42" name="m_edtPreambleLength">8</Property>
        <Property role="42" name="m_edtCarrierSenseThreshold">-90</Property>
        <Property role="45" name="m_rbtRssi">1</Property>
        <Property role="45" name="m_rbtPreamble">0</Property>
    </packetRxSniffMode>
</dcpanelconfiguration>

  • See https://e2e.ti.com/support/wireless-connectivity/other-wireless/f/667/p/327972/1269542

    It looks like you are not using the same sync word or the same deviation.

  • Hi TER,

    thank you for your answer. Synch word is 0xCCCC for both (it is changed in the CC1101 project before starting transmission) and deviation is 20KHz for both.

    Any other idea?

  • Could you please check that the .xml files you posted are correct? The sync word is not in the .xml file.

    Why is the sync word set to preamble in effect, this is not a very good sync word. 

  • Please find the correct CC1101 .xml file. But it doesn't work, also with this setup.

    3731.SETUP_43365_CC1101.xml
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <!DOCTYPE configuration SYSTEM "C:/Program Files (x86)/Texas Instruments/SmartRF Tools/SmartRF Studio 7/config/xml/configdata.dtd"[]>
    <dcpanelconfiguration>
        <Devicename>CC1101</Devicename>
        <Description>Saved configuration data</Description>
        <registersettings>
            <Register>
                <Name>AGCCTRL2</Name>
                <Value>0x43</Value>
            </Register>
            <Register>
                <Name>DEVIATN</Name>
                <Value>0x35</Value>
            </Register>
            <Register>
                <Name>FIFOTHR</Name>
                <Value>0x47</Value>
            </Register>
            <Register>
                <Name>FOCCFG</Name>
                <Value>0x16</Value>
            </Register>
            <Register>
                <Name>FREQ0</Name>
                <Value>0xc8</Value>
            </Register>
            <Register>
                <Name>FREQ1</Name>
                <Value>0xad</Value>
            </Register>
            <Register>
                <Name>FREQ2</Name>
                <Value>0x10</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>0xe9</Value>
            </Register>
            <Register>
                <Name>FSCTRL1</Name>
                <Value>0x06</Value>
            </Register>
            <Register>
                <Name>IOCFG0</Name>
                <Value>0x06</Value>
            </Register>
            <Register>
                <Name>IOCFG2</Name>
                <Value>0x0e</Value>
            </Register>
            <Register>
                <Name>MCSM0</Name>
                <Value>0x08</Value>
            </Register>
            <Register>
                <Name>MDMCFG2</Name>
                <Value>0x12</Value>
            </Register>
            <Register>
                <Name>MDMCFG3</Name>
                <Value>0x83</Value>
            </Register>
            <Register>
                <Name>MDMCFG4</Name>
                <Value>0xca</Value>
            </Register>
            <Register>
                <Name>PA_TABLE0</Name>
                <Value>0xc0</Value>
            </Register>
            <Register>
                <Name>SYNC0</Name>
                <Value>0xcc</Value>
            </Register>
            <Register>
                <Name>SYNC1</Name>
                <Value>0xcc</Value>
            </Register>
            <Register>
                <Name>TEST0</Name>
                <Value>0x09</Value>
            </Register>
            <Register>
                <Name>TEST1</Name>
                <Value>0x35</Value>
            </Register>
            <Register>
                <Name>TEST2</Name>
                <Value>0x81</Value>
            </Register>
            <Register>
                <Name>WORCTRL</Name>
                <Value>0xfb</Value>
            </Register>
        </registersettings>
        <dcpanel>
            <Property name="m_chkRegView" role="44">2</Property>
            <Property name="m_chkCmdView" role="44">0</Property>
            <Property name="m_chkRfParameters" role="44">2</Property>
            <Property name="m_cmbUserMode" role="46">0</Property>
            <Property name="m_easyModeSettings" role="33">-1</Property>
            <Property name="m_typicalSettings" role="33">-1</Property>
            <Property name="m_testFuncPanel" role="37">0</Property>
        </dcpanel>
        <rfparameters>
            <Property name="m_cmbFrontends" role="46">0</Property>
            <Property name="m_chkHGMorBYP" role="44">2</Property>
            <Property name="m_cmbEmRevs" role="46">-1</Property>
            <Property name="Xtal Frequency" role="46">26.000000</Property>
        </rfparameters>
        <conttx>
            <Property name="m_rbtModulated" role="45">1</Property>
            <Property name="m_rbtUnmodulated" role="45">0</Property>
            <Property name="m_cmbDataFormat" role="46">-1</Property>
            <Property name="m_chkFreqSweep" role="44">0</Property>
            <Property name="m_chkChanSweep" role="44">0</Property>
        </conttx>
        <contrx>
            <Property name="m_cmbDataFormat" role="46">-1</Property>
            <Property name="m_chkAutoScroll" role="44">2</Property>
        </contrx>
        <packettx>
            <Property name="m_edtPayloadSize" role="42">30</Property>
            <Property name="m_edtPacketCount" role="42">100</Property>
            <Property name="m_edtPacketCountEsy" role="42">100</Property>
            <Property name="m_edtRandomPacketData" role="42">13 0d 89 0a 1c db ae 32 20 9a 50 ee 40 78 36 fd 12 49 32 f6 9e 7d 49 dc ad 4f 14 f2 </Property>
            <Property name="m_edtPacketData" role="42"></Property>
            <Property name="m_edtAccessAddress" role="42"></Property>
            <Property name="m_edtDeviceAddress" role="42"></Property>
            <Property name="m_chkAddSeqNbr" role="44">2</Property>
            <Property name="m_chkInfinite" role="44">0</Property>
            <Property name="m_chkInfiniteEsy" role="44">0</Property>
            <Property name="m_rbtRandom" role="45">1</Property>
            <Property name="m_rbtText" role="45">0</Property>
            <Property name="m_rbtHex" role="45">0</Property>
            <Property name="m_chkAdvanced" role="44">0</Property>
        </packettx>
        <packetrx>
            <Property name="m_edtPacketCount" role="42">100</Property>
            <Property name="m_edtPacketCountEsy" role="42">100</Property>
            <Property name="m_edtAccessAddress" role="42"></Property>
            <Property name="m_chkInfinite" role="44">0</Property>
            <Property name="m_chkInfiniteEsy" role="44">0</Property>
            <Property name="m_cmbViewFormat" role="46">0</Property>
            <Property name="m_chkSeqNbrIncluded" role="44">2</Property>
            <Property name="m_edtDumpFile" role="42"></Property>
            <Property name="m_chkAdvanced" role="44">0</Property>
            <Property name="m_chk802154gMode" role="44">0</Property>
        </packetrx>
        <commandpanel>
            <Property name="m_chkInsertLength" role="44">0</Property>
            <Property name="m_edtTxFifo" role="42"></Property>
            <Property name="m_edtRxFifo" role="42"></Property>
            <Property name="m_cmbInstrInput" role="46">-1</Property>
        </commandpanel>
    </dcpanelconfiguration>
    
     

  • I didn't have any EMs handy for a quick test.

    - Does it work if you use the default CC110L sync word?

    - Is 0xCCCC the sync word you are using in the current application? 

  • No. it does't work with any sync word and Yes, we use 0xCCCC as sync word. It is very strange, for your understanding, I don't know if this can help you, I send you the two hex byte dump of the received data: the CC1101 is the correct receiving (29 bytes, received by a CC1101) and the CC1121 is the bad receiving (49 bytes, received by a CC1121, but I think that the more data is because it is incorrect the first byte, that is the datanumber).

    If can help you, the bad data is always the same (transmitting the 29 bytes, the CC1121 Always receive the same 49 bytes).

  • Not sure what's going on since this is fairly straight forward.

    - Have you tested with SmartRF Studio?

    - Have you tested with SmartRF Studio and the settings found in the link in my first reply? 

    - Could you post screenshots of the SmartRF Studio testing?

    - Have you checked that you don't have a frequency offset between your CC1101 and CC1121 board? 

  • No I don't use SmartStudio because we are developing on the final boards.

    Regarding frequency offset, I don't think because I measured the signals with my spectrum analyzer and the frequency shift is minimal; when I try with two CC1101 boards, it works regularly with bigger frequency shifts.

    My opinion is that is difficult to synchronize between CC1101 and CC1121. Could you verify if my two setups are compatible between them? Can be a preamble/sych word problem?

  • It's no problem communicating between a CC1101 and a CC1121. For CC1121, preamble is only used to settle the AGC.

    Let's try to do this step by step to see where things goes wrong:

    - To avoid any potential sync word issues I would suggest using 0xD391 as sync word 

    - Could you turn off whitening and send a payload equal to 01, 02, 03 etc. What do you get tin the receive buffer then? 

    Since you are not actually using SmartRF Studio for your tests, would it be possible to share the part of the code where you define the register settings? From your last FIFO dump it could look like the CC1121 didn't use variable packet length or it didn't use whiting.

  • Here are the register setting in my code.

    Regarding the sync word, I try with the default one but nothing change.

    Now I will try turning whitening off.

    hp.h

  • Turning whitening OFF, the GDO pin (programmed with value 6 to go high when sync word detected and low at the end of the packet) remains high for a long time, I think because the first byte after the sync word has a bad value. I can't read the values sent by the CC1101.

  • Two comments to the register settings:

    - You don't need to write to registers that should have the reset setting. I have seen issues for some customers that write to all registers. It looks like you are trying to write to some read only registers to. Try to write only to the registers that are different from the reset value. These are typically the registers SmartRF Studio exports

    - Use he 38.4 kbps setting for CC1120 in SmartRF Studio as a starting point (For this RX BW, CC1120 and CC1121 are equal). I see a few register values that are not what we recommend. 

  • What I normally do in SmartRF Studio to debug something like you are seeing now and which should be possible to do in code: 

    Set sync word to preamble and fixed packet length, set to 30. Then what you should receive in the rx FIFO is some rest of preamble, the sync word and the payload. Then you will be able to see what CC1121 receives after the sync word. Don't use whitening for this to make it easier to read what you receive. 

  • Now both tx (CC1101) and rx (CC1121) are whitening OFF and the rx has 20 bytes fixed for receiving.

    What arrives in the rx fifo is in the picture. The first byte (0xD0) is wrong, because the TX transmits 0x1D. Also the following bytes are wrong, all shifted 4 bits left. This suggests you something?

  • Is this with 0xCCCC or 0xD391 as sync? I sounds like it finds the sync word 4 bits too early. You can also try with SYNC_CFG0.SYNC_NUM_ERROR = 0? 

  • It is with 0xCCCC because with 0xD391 is very difficult to obtain a connection.

    Please look at this screenshot: the first byte received has in the 4 most significant bits the last nibble of the sync word, and so on, all the data is shifted 4 bits; the correct data should be 0x1D, 0x00, 0x02, 0x01, 0x00 and so son.

  • Have you done this:

    Set sync word to preamble and fixed packet length, set to 30. Then what you should receive in the rx FIFO is some rest of preamble, the sync word and the payload. Then you will be able to see what CC1121 receives after the sync word. Don't use whitening for this to make it easier to read what you receive. 

    It's something strange going on. It should not be difficult to get sync with the default sync word. This indicate that the CC1101 send something I'm not aware of. 

  • Ter, don't ask me why but all works now. All works with withening ON, variable data number, and any payload data.

    The only thing I can't do is to use 0xCCCC as sync word. If I change the sync word of both CCxxxx in this way, I can't connect. It seems that there is a problem using this bit ordering 11001100. This is strange, because we use CC1101 from more than 10 years and we haven't any problem with this sync word.

    Could you help me to understand why this? Changing the sync word is a problem for us because 0xCCCC is the default sync word for our production. Moreover, the sync word is programmable in our systems and if there are some sync word that must be avoided, I have to know them to exclude them from the allowable values.

  • This sounds strange. You should receive something sooner or later using 0xCCCC as sync since this combination should be easy to find in just noise on the air (false sync). If you never get sync found something is wrong. I would suspect software. For this type of development, SmartRF Studio is a very nice tool since it's a lot easier to see what's going on and doing basic debugging like this. 

    Is it an issue CC1101 sending to CC1121 or both ways? 

  • I found that there are sync words that works well, other works badly. I Always receive something in the FIFO, with all the sync words, but with some of them the FIFO data is 4 bits shifted left (in the cases I investigate, as in the case of 0xCCCC). If I use sync words as 0xCCCC, 0xAAAA, 0xABAB, in the FIFO data is shifted. If I use, for example, the default sync word or I use 0xABCD, the FIFO is always filled with the exact data. I don't thik an error in the firmware because we use this firmware from many years with CC1101.

  • The sync search in CC1101 and CC1121 is a bit different. CC1101 does a pure bit based searched but CC1121 use a correlator, basically comparing ware forms. 0xCCCC is a poor sync word from a correlator view point and could cause fals sync (in this case 4 bit shift) 

    Two things you can try:

    - If you use a preamble that is different from +xCC you can use part of this on the RX side, you can as an example set the sync word to 0x55CCCC.

    - Set strict sync on the last byte, see one of my previous post on how to set this.  Not sure if that will help here since the two last bytes in the sync word is equal.

  • Thank you very much for your support, TER, your help has been very appreciated by me. Best Regards.