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.

CC1120: DATA error in Synchronous serial mode

Part Number: CC1120

Hello,

We are substituting a CC1120 into a legacy design operating in MSK modulation at 9.6ksps, 20kHz bandwidth and 2.4KHz deviation. The transmitted data is in the form of UART style bytes with start and stop bits. The link with CC1120 works well most of the time but occasionally gives bit errors in the message. It would seem the Rx data clock is miss aligning when these errors occur. We did notice that adding several null bytes at the beginning of the message was giving more errors and probably upsetting the clock recovery. We currently have only 1 null byte which does not upset the early part of the RX message but still get errors on messages over ~60bytes.

Can you please advise on what we may be doing wrong, thank you!

The attached has the settings we are using.

BP

9.6kbps_2GMSK_Deviation2.4KHz_20KHzBW_B.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>CC1120</Devicename>
    <Description>Saved configuration data</Description>
    <registersettings>
        <Register>
            <Name>AGC_CFG0</Name>
            <Value>0x07</Value>
        </Register>
        <Register>
            <Name>AGC_CFG1</Name>
            <Value>0x08</Value>
        </Register>
        <Register>
            <Name>AGC_CFG2</Name>
            <Value>0xc0</Value>
        </Register>
        <Register>
            <Name>AGC_CFG3</Name>
            <Value>0x0d</Value>
        </Register>
        <Register>
            <Name>AGC_CS_THR</Name>
            <Value>0x88</Value>
        </Register>
        <Register>
            <Name>AGC_GAIN_ADJUST</Name>
            <Value>0x8f</Value>
        </Register>
        <Register>
            <Name>CHAN_BW</Name>
            <Value>0x0a</Value>
        </Register>
        <Register>
            <Name>DCFILT_CFG</Name>
            <Value>0x1c</Value>
        </Register>
        <Register>
            <Name>DEVIATION_M</Name>
            <Value>0x3a</Value>
        </Register>
        <Register>
            <Name>FIFO_CFG</Name>
            <Value>0x00</Value>
        </Register>
        <Register>
            <Name>FREQ1</Name>
            <Value>0x40</Value>
        </Register>
        <Register>
            <Name>FREQ2</Name>
            <Value>0x6d</Value>
        </Register>
        <Register>
            <Name>FREQOFF0</Name>
            <Value>0x13</Value>
        </Register>
        <Register>
            <Name>FREQOFF_CFG</Name>
            <Value>0x23</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>0x18</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>0x30</Value>
        </Register>
        <Register>
            <Name>IOCFG1</Name>
            <Value>0x11</Value>
        </Register>
        <Register>
            <Name>IOCFG2</Name>
            <Value>0x08</Value>
        </Register>
        <Register>
            <Name>IOCFG3</Name>
            <Value>0x09</Value>
        </Register>
        <Register>
            <Name>IQIC</Name>
            <Value>0xc6</Value>
        </Register>
        <Register>
            <Name>MDMCFG0</Name>
            <Value>0x2a</Value>
        </Register>
        <Register>
            <Name>MDMCFG1</Name>
            <Value>0x06</Value>
        </Register>
        <Register>
            <Name>MODCFG_DEV_E</Name>
            <Value>0x0a</Value>
        </Register>
        <Register>
            <Name>PA_CFG0</Name>
            <Value>0x7d</Value>
        </Register>
        <Register>
            <Name>PA_CFG2</Name>
            <Value>0x5d</Value>
        </Register>
        <Register>
            <Name>PKT_CFG0</Name>
            <Value>0x20</Value>
        </Register>
        <Register>
            <Name>PKT_CFG1</Name>
            <Value>0x00</Value>
        </Register>
        <Register>
            <Name>PKT_CFG2</Name>
            <Value>0x01</Value>
        </Register>
        <Register>
            <Name>PREAMBLE_CFG1</Name>
            <Value>0x00</Value>
        </Register>
        <Register>
            <Name>SERIAL_STATUS</Name>
            <Value>0x08</Value>
        </Register>
        <Register>
            <Name>SETTLING_CFG</Name>
            <Value>0x03</Value>
        </Register>
        <Register>
            <Name>SYMBOL_RATE2</Name>
            <Value>0x73</Value>
        </Register>
        <Register>
            <Name>SYNC0</Name>
            <Value>0xaa</Value>
        </Register>
        <Register>
            <Name>SYNC1</Name>
            <Value>0xaa</Value>
        </Register>
        <Register>
            <Name>SYNC2</Name>
            <Value>0xaa</Value>
        </Register>
        <Register>
            <Name>SYNC3</Name>
            <Value>0xaa</Value>
        </Register>
        <Register>
            <Name>SYNC_CFG0</Name>
            <Value>0x07</Value>
        </Register>
        <Register>
            <Name>SYNC_CFG1</Name>
            <Value>0x1f</Value>
        </Register>
        <Register>
            <Name>TOC_CFG</Name>
            <Value>0x4b</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="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">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">0</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">0</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">34</Property>
        <Property role="45" name="m_rbtRssi">1</Property>
        <Property role="45" name="m_rbtPreamble">0</Property>
    </packetRxSniffMode>
</dcpanelconfiguration>

  • Hi Bharat,

    We will look into your question on Monday.

    Can you post a logic trrace of the uart, both success and fail cases?

    Cheers,

    Marie H

  • Hi Marie,

    Thank you for the reply. We are receiving UART message bytes which are parity odd, 1 start bit and 2 stop bits.

    Messages are sent every 1 second starting with message "0" up to message "E" and then repeating again in a cycle from message "0" to "E".

    Attached are results captured from the RX side by the terminal showing when message "7" was corrupted and 2nd instance when it was good. It is not just message "7" that can be corrupted and the interval between errors can be over 30 seconds.

    We did a test with a TX unit that was split and feeding into 2 separate RX units.... The Rx units did not both give errors on the same TX message ... if one Rx was corrupt the other RX was good so it would seem the errors are from the RX side not the TX.

    Regards, BP

    UART_Messages received.txt
    Result where Message 7 is corrupted:
    
    0-0DRw000000000000000000000000000000100100F
    
    1-0D55e
    
    2-01Rh003E0140Q0d@<2B1<050:B0400c20F42000<21108<0220408@034_@000000000000000000
    <0240400V0l<8m
    
    3-0CRS000A0<20Q00A0061e0L
    
    4-05Rh00370520Q0]@`000S9I098D408211i0481144080220@0811240082342080135@0811;00000
    S0P`V
    
    5-15Rw0000000000000000000000000000001001008
    
    6-15CI00Y
    
    7-05Rh00450520Q0k@`000S9I0A@@109311940B95Q4000P8212G008124508 `f
                                                                    8-0CRS000A0<20Q0
    0@0ZN3`Pj
    
    9-1534FFF00004FFF00004FFF00004FFF00004l
    
    A-185k00000000035C00000000002EB
    
    B-ZZ0O20030321:Hdriver 217.200D704l
    
    C-FFR1V
    
    D-01RS000A0120Q00@0^d1n
    
    E-05Rh00480520Q0n@`000S9I0AB8109311o58g93Q4090f95A4000j8211L1081142190310@6I9054
    0@0m9031N@6j94540@0504JMo3_
    
    0-0DRw000000000000000000000000000000100100F
    
    
    Result where Message 7 is fine:
    
    0-0DRw000000000000000000000000000000100100F
    
    1-0D55e
    
    2-01Rh003E0140Q0d@<2B1<050:B0400c20F042000<21108<0220408@034_@000000000000000000
    <0240400V0l<8m
    
    3-0CRS000A0<20Q00A0061e0L
    
    4-05Rh00370520Q0]@`000S9I098D408211i0481144080220@0811240082342080135@0811;00000
    S0P`V
    
    5-15Rw0000000000000000000000000000001001008
    
    6-15CI00Y
    
    7-05Rh00450520Q0k@`000S9I0A@@109311940B95Q4000P8212G0081245080230@09311240`95140
    00G811350081;400000T?>7
    
    8-0CRS000A0<20Q00@0ZN3`Pj
    
    9-1534FFF00004FFF00004FFF00004FFF00004l
    
    A-185k00000000035C00000000002EB
    
    B-ZZ0O20030321:Hdriver 217.200D704l
    
    C-FFR1V
    
    D-01RS000A0120Q00@0^d1n
    
    E-05Rh00480520Q0n@`000S9I0AB8109311o58g93Q4090f95A4000j8211L1081142190310@6I9054
    0@0m9031N@6j94540@0504JMo3_
    

  • Hi,

    Have you tested your software on a known good hardware such as the CC1120 EM boards ?

    Please provide schematics and layout.