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.

CC1310: Not able to receive or sniff TPMS sensor data

Part Number: CC1310
Other Parts Discussed in Thread: PACKET-SNIFFER

Hello Experts,

I am trying to receive some TPMS sensor data on CC1310. Following are the RF profile of the sensor:

  • F nominal: 434.1 MHz
  • F Accuracy: -50 - 50 KHz
  • F Offset (ΔF): 50 KHz (min.), 80 KHz (Nominal), 110 KHz (Max)
  • RF Power @3m peak: 70 dBuV/m (min.), 75 dBuV/m (Nominal), 77 dBuV/m (Max)
  • Logical Level: H = Fnominal+△F/2 KHz and L = Fnominal-△F/2
  • Baud Rate: 19200 bits/s
  • Encoding: NRZ (with an extra start (0) and stop (1) bit)
  • Transmit Time = 5.73 us

The sensor sends data in form of packet, the packet structure is as following:

  • K0 + Frame + K1 + Frame + K2 + Frame + K3 + Frame
  • where K0-3 are separators for frame
  • Each packet hase 4 identical frames.
  • Each Frame lenght is 11 bytes, including first 2 bytes as the sync word.

I have tried to receive the data using the SmartRF Studio 7 (version 2.10), I have configured the parameters as per the sensor RF profile. But I am not able to get any understandable data. I have attached the SmartRF config file and SmartRF settings file I have used.

temp.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>CC1310_PG21</Devicename>
    <Description>Saved configuration data</Description>
    <Patch>
        <Define>RF_MODE_PROPRIETARY_SUB_1</Define>
        <Cpe>rf_patch_cpe_lrm</Cpe>
        <Mce></Mce>
        <Rfe>rf_patch_rfe_lrm</Rfe>
    </Patch>
    <commandsettings>
        <Command name="CMD_TX_TEST">
            <Field name="commandNo">0x00000808</Field>
            <Field name="status">0x00000000</Field>
            <Field name="pNextOp">0x00000000</Field>
            <Field name="startTime">0x00000000</Field>
            <Field name="startTrigger">0x00000000</Field>
            <Field name="condition">0x00000001</Field>
            <Field name="config">0x0000000a</Field>
            <Field name="txWord">0x0000abcd</Field>
            <Field name="endTrigger">0x00000001</Field>
            <Field name="syncWord">0x00005aaa</Field>
            <Field name="endTime">0x00000000</Field>
        </Command>
        <Command name="CMD_SYNC_STOP_RAT">
            <Field name="commandNo">0x00000809</Field>
            <Field name="status">0x00000000</Field>
            <Field name="pNextOp">0x00000000</Field>
            <Field name="startTime">0x00000000</Field>
            <Field name="startTrigger">0x00000000</Field>
            <Field name="condition">0x00000000</Field>
            <Field name="rat0">0x00000000</Field>
        </Command>
        <Command name="CMD_SYNC_START_RAT">
            <Field name="commandNo">0x0000080a</Field>
            <Field name="status">0x00000000</Field>
            <Field name="pNextOp">0x00000000</Field>
            <Field name="startTime">0x00000000</Field>
            <Field name="startTrigger">0x00000000</Field>
            <Field name="condition">0x00000000</Field>
            <Field name="rat0">0x00000000</Field>
        </Command>
        <Command name="CMD_STOP">
            <Field name="commandNo">0x00000402</Field>
        </Command>
        <Command name="CMD_SCH_IMM">
            <Field name="commandNo">0x00000810</Field>
            <Field name="status">0x00000000</Field>
            <Field name="pNextOp">0x00000000</Field>
            <Field name="startTime">0x00000000</Field>
            <Field name="startTrigger">0x00000000</Field>
            <Field name="condition">0x00000000</Field>
            <Field name="cmdrVal">0x00000000</Field>
            <Field name="cmdstaVal">0x00000000</Field>
        </Command>
        <Command name="CMD_RX_TEST">
            <Field name="commandNo">0x00000807</Field>
            <Field name="status">0x00000000</Field>
            <Field name="pNextOp">0x00000000</Field>
            <Field name="startTime">0x00000000</Field>
            <Field name="startTrigger">0x00000000</Field>
            <Field name="condition">0x00000001</Field>
            <Field name="config">0x00000004</Field>
            <Field name="endTrigger">0x00000001</Field>
            <Field name="syncWord">0x00005aaa</Field>
            <Field name="endTime">0x00000000</Field>
        </Command>
        <Command name="CMD_RADIO_SETUP">
            <Field name="commandNo">0x00000802</Field>
            <Field name="status">0x00000000</Field>
            <Field name="pNextOp">0x00000000</Field>
            <Field name="startTime">0x00000000</Field>
            <Field name="startTrigger">0x00000000</Field>
            <Field name="condition">0x00000001</Field>
            <Field name="mode">0x00000001</Field>
            <Field name="loDivider">0x00000000</Field>
            <Field name="config">0x00000000</Field>
            <Field name="txPower">0x00000000</Field>
            <Field name="pRegOverride">0x00000000</Field>
            <OverrideField name="pRegOverride">
                <OverrideBuffer name="TX power override">
                    <Element32b>ADI_REG_OVERRIDE(0,12,0xF8)</Element32b>
                </OverrideBuffer>
            </OverrideField>
        </Command>
        <Command name="CMD_PROP_TX_ADV">
            <Field name="commandNo">0x00003803</Field>
            <Field name="status">0x00000000</Field>
            <Field name="pNextOp">0x00000000</Field>
            <Field name="startTime">0x00000000</Field>
            <Field name="startTrigger">0x00000000</Field>
            <Field name="condition">0x00000001</Field>
            <Field name="pktConf">0x00000000</Field>
            <Field name="numHdrBits">0x00000010</Field>
            <Field name="pktLen">0x00000000</Field>
            <Field name="startConf">0x00000000</Field>
            <Field name="preTrigger">0x00000000</Field>
            <Field name="preTime">0x00000000</Field>
            <Field name="syncWord">0x00005aaa</Field>
            <Field name="pPkt">0x00000000</Field>
        </Command>
        <Command name="CMD_PROP_TX">
            <Field name="commandNo">0x00003801</Field>
            <Field name="status">0x00000000</Field>
            <Field name="pNextOp">0x00000000</Field>
            <Field name="startTime">0x00000000</Field>
            <Field name="startTrigger">0x00000000</Field>
            <Field name="condition">0x00000001</Field>
            <Field name="pktConf">0x00000008</Field>
            <Field name="pktLen">0x00000014</Field>
            <Field name="syncWord">0x00005aaa</Field>
            <Field name="pPkt">0x00000000</Field>
        </Command>
        <Command name="CMD_PROP_RX_SNIFF">
            <Field name="commandNo">0x00003808</Field>
            <Field name="status">0x00000000</Field>
            <Field name="pNextOp">0x00000000</Field>
            <Field name="startTime">0x00000000</Field>
            <Field name="startTrigger">0x00000000</Field>
            <Field name="condition">0x00000001</Field>
            <Field name="pktConf">0x00000000</Field>
            <Field name="rxConf">0x00000000</Field>
            <Field name="syncWord">0x00000000</Field>
            <Field name="maxPktLen">0x00000000</Field>
            <Field name="address0">0x00000000</Field>
            <Field name="address1">0x00000000</Field>
            <Field name="endTrigger">0x00000000</Field>
            <Field name="endTime">0x00000000</Field>
            <Field name="pQueue">0x00000000</Field>
            <Field name="pOutput">0x00000000</Field>
            <Field name="csConf">0x00000000</Field>
            <Field name="rssiThr">0x00000000</Field>
            <Field name="numRssiIdle">0x00000000</Field>
            <Field name="numRssiBusy">0x00000000</Field>
            <Field name="corrPeriod">0x00000000</Field>
            <Field name="corrConfig">0x00000000</Field>
            <Field name="csEndTrigger">0x00000000</Field>
            <Field name="csEndTime">0x00000000</Field>
        </Command>
        <Command name="CMD_PROP_RX_ADV_SNIFF">
            <Field name="commandNo">0x00003809</Field>
            <Field name="status">0x00000000</Field>
            <Field name="pNextOp">0x00000000</Field>
            <Field name="startTime">0x00000000</Field>
            <Field name="startTrigger">0x00000000</Field>
            <Field name="condition">0x00000001</Field>
            <Field name="pktConf">0x00000000</Field>
            <Field name="rxConf">0x00000000</Field>
            <Field name="syncWord0">0x00000000</Field>
            <Field name="syncWord1">0x00000000</Field>
            <Field name="maxPktLen">0x00000000</Field>
            <Field name="hdrConf">0x00000000</Field>
            <Field name="addrConf">0x00000000</Field>
            <Field name="lenOffset">0x00000000</Field>
            <Field name="endTrigger">0x00000000</Field>
            <Field name="endTime">0x00000000</Field>
            <Field name="pAddr">0x00000000</Field>
            <Field name="pQueue">0x00000000</Field>
            <Field name="pOutput">0x00000000</Field>
            <Field name="csConf">0x00000000</Field>
            <Field name="rssiThr">0x00000000</Field>
            <Field name="numRssiIdle">0x00000000</Field>
            <Field name="numRssiBusy">0x00000000</Field>
            <Field name="corrPeriod">0x00000000</Field>
            <Field name="corrConfig">0x00000000</Field>
            <Field name="csEndTrigger">0x00000000</Field>
            <Field name="csEndTime">0x00000000</Field>
        </Command>
        <Command name="CMD_PROP_RX_ADV">
            <Field name="commandNo">0x00003804</Field>
            <Field name="status">0x00000000</Field>
            <Field name="pNextOp">0x00000000</Field>
            <Field name="startTime">0x00000000</Field>
            <Field name="startTrigger">0x00000000</Field>
            <Field name="condition">0x00000001</Field>
            <Field name="pktConf">0x00000000</Field>
            <Field name="rxConf">0x00000000</Field>
            <Field name="syncWord0">0x00005aaa</Field>
            <Field name="syncWord1">0x00000000</Field>
            <Field name="maxPktLen">0x0000000b</Field>
            <Field name="hdrConf">0x00000000</Field>
            <Field name="addrConf">0x00000000</Field>
            <Field name="lenOffset">0x00000000</Field>
            <Field name="endTrigger">0x00000000</Field>
            <Field name="endTime">0x00000000</Field>
            <Field name="pAddr">0x00000000</Field>
            <Field name="pQueue">0x00000000</Field>
            <Field name="pOutput">0x00000000</Field>
        </Command>
        <Command name="CMD_PROP_RX">
            <Field name="commandNo">0x00003802</Field>
            <Field name="status">0x00000002</Field>
            <Field name="pNextOp">0x00000000</Field>
            <Field name="startTime">0x00000000</Field>
            <Field name="startTrigger">0x00000000</Field>
            <Field name="condition">0x00000001</Field>
            <Field name="pktConf">0x00000000</Field>
            <Field name="rxConf">0x00000000</Field>
            <Field name="syncWord">0x00005aaa</Field>
            <Field name="maxPktLen">0x0000000b</Field>
            <Field name="address0">0x000000aa</Field>
            <Field name="address1">0x000000bb</Field>
            <Field name="endTrigger">0x00000001</Field>
            <Field name="endTime">0x00000000</Field>
            <Field name="pQueue">0x00000000</Field>
            <Field name="pOutput">0x00000000</Field>
        </Command>
        <Command name="CMD_PROP_RADIO_SETUP">
            <Field name="commandNo">0x00003806</Field>
            <Field name="status">0x00000000</Field>
            <Field name="pNextOp">0x00000000</Field>
            <Field name="startTime">0x00000000</Field>
            <Field name="startTrigger">0x00000000</Field>
            <Field name="condition">0x00000001</Field>
            <Field name="modulation">0x00000000</Field>
            <Field name="symbolRate">0x00000000</Field>
            <Field name="rxBw">0x00000000</Field>
            <Field name="preamConf">0x00000000</Field>
            <Field name="formatConf">0x00000000</Field>
            <Field name="config">0x00000000</Field>
            <Field name="txPower">0x00000000</Field>
            <Field name="pRegOverride">0x00000000</Field>
            <OverrideField name="pRegOverride">
                <OverrideBuffer name="TX power override">
                    <Element32b>ADI_REG_OVERRIDE(0,12,0xF8)</Element32b>
                </OverrideBuffer>
            </OverrideField>
        </Command>
        <Command name="CMD_PROP_RADIO_DIV_SETUP">
            <Field name="commandNo">0x00003807</Field>
            <Field name="status">0x00003400</Field>
            <Field name="pNextOp">0x00000000</Field>
            <Field name="startTime">0x00000000</Field>
            <Field name="startTrigger">0x00000000</Field>
            <Field name="condition">0x00000001</Field>
            <Field name="modulation">0x00000640</Field>
            <Field name="symbolRate">0x0031270f</Field>
            <Field name="rxBw">0x00000024</Field>
            <Field name="preamConf">0x00000001</Field>
            <Field name="formatConf">0x00000090</Field>
            <Field name="config">0x00000008</Field>
            <Field name="txPower">0x0000913f</Field>
            <Field name="pRegOverride">0x00000000</Field>
            <Field name="centerFreq">0x000001b1</Field>
            <Field name="intFreq">0x00008000</Field>
            <Field name="loDivider">0x0000000a</Field>
            <OverrideField name="pRegOverride">
                <OverrideBuffer name="override_use_patch_prop_lrm.xml">
                    <Element32b>MCE_RFE_OVERRIDE(0,4,0,1,0,0)</Element32b>
                </OverrideBuffer>
                <OverrideBuffer name="override_synth_prop_430_510_div10.xml">
                    <Element32b>HW_REG_OVERRIDE(0x4038,0x0037)</Element32b>
                    <Element32b>0x000684A3</Element32b>
                    <Element32b>HW_REG_OVERRIDE(0x4020,0x7F00)</Element32b>
                    <Element32b>HW_REG_OVERRIDE(0x4064,0x0040)</Element32b>
                    <Element32b>0xB1070503</Element32b>
                    <Element32b>0x05330523</Element32b>
                    <Element32b>0x0A480583</Element32b>
                    <Element32b>0x7AB80603</Element32b>
                    <Element32b>ADI_REG_OVERRIDE(1,4,0x9F)</Element32b>
                    <Element32b>ADI_HALFREG_OVERRIDE(1,7,0x4,0x4)</Element32b>
                    <Element32b>0x02010403</Element32b>
                    <Element32b>0x00108463</Element32b>
                    <Element32b>0x04B00243</Element32b>
                </OverrideBuffer>
                <OverrideBuffer name="override_synth_disable_bias_div10.xml"/>
                <OverrideBuffer name="override_phy_rx_aaf_bw_0xd.xml">
                    <Element32b>ADI_HALFREG_OVERRIDE(0,61,0xF,0xD)</Element32b>
                </OverrideBuffer>
                <OverrideBuffer name="override_phy_gfsk_rx.xml">
                    <Element32b>0x00038883</Element32b>
                    <Element32b>HW_REG_OVERRIDE(0x6084,0x35F1)</Element32b>
                </OverrideBuffer>
                <OverrideBuffer name="override_phy_gfsk_pa_ramp_agc_reflevel_0x1a.xml">
                    <Element32b>HW_REG_OVERRIDE(0x6088,0x411A)</Element32b>
                    <Element32b>HW_REG_OVERRIDE(0x608C,0x8213)</Element32b>
                </OverrideBuffer>
                <OverrideBuffer name="override_phy_lrm_rom_dsss8.xml"/>
                <OverrideBuffer name="override_phy_rx_rssi_offset_neg2db.xml">
                    <Element32b>0x000288A3</Element32b>
                </OverrideBuffer>
                <OverrideBuffer name="TX power override">
                    <Element32b>ADI_REG_OVERRIDE(0,12,0xF8)</Element32b>
                </OverrideBuffer>
            </OverrideField>
        </Command>
        <Command name="CMD_PROP_CS">
            <Field name="commandNo">0x00003805</Field>
            <Field name="status">0x00000000</Field>
            <Field name="pNextOp">0x00000000</Field>
            <Field name="startTime">0x00000000</Field>
            <Field name="startTrigger">0x00000000</Field>
            <Field name="condition">0x00000001</Field>
            <Field name="csFsConf">0x00000000</Field>
            <Field name="csConf">0x00000000</Field>
            <Field name="rssiThr">0x00000000</Field>
            <Field name="numRssiIdle">0x00000000</Field>
            <Field name="numRssiBusy">0x00000000</Field>
            <Field name="corrPeriod">0x00000000</Field>
            <Field name="corrConfig">0x00000000</Field>
            <Field name="csEndTrigger">0x00000000</Field>
            <Field name="csEndTime">0x00000000</Field>
        </Command>
        <Command name="CMD_PATTERN_CHECK">
            <Field name="commandNo">0x00000813</Field>
            <Field name="status">0x00000000</Field>
            <Field name="pNextOp">0x00000000</Field>
            <Field name="startTime">0x00000000</Field>
            <Field name="startTrigger">0x00000000</Field>
            <Field name="condition">0x00000000</Field>
            <Field name="patternOpt">0x00000000</Field>
            <Field name="pNextOpIfOk">0x00000000</Field>
            <Field name="pValue">0x00000000</Field>
            <Field name="mask">0x00000000</Field>
            <Field name="compareVal">0x00000000</Field>
        </Command>
        <Command name="CMD_NOP">
            <Field name="commandNo">0x00000801</Field>
            <Field name="status">0x00000000</Field>
            <Field name="pNextOp">0x00000000</Field>
            <Field name="startTime">0x00000000</Field>
            <Field name="startTrigger">0x00000000</Field>
            <Field name="condition">0x00000000</Field>
        </Command>
        <Command name="CMD_FS_POWERUP">
            <Field name="commandNo">0x0000080c</Field>
            <Field name="status">0x00000000</Field>
            <Field name="pNextOp">0x00000000</Field>
            <Field name="startTime">0x00000000</Field>
            <Field name="startTrigger">0x00000000</Field>
            <Field name="condition">0x00000000</Field>
            <Field name="pRegOverride">0x00000000</Field>
        </Command>
        <Command name="CMD_FS_POWERDOWN">
            <Field name="commandNo">0x0000080d</Field>
            <Field name="status">0x00000000</Field>
            <Field name="pNextOp">0x00000000</Field>
            <Field name="startTime">0x00000000</Field>
            <Field name="startTrigger">0x00000000</Field>
            <Field name="condition">0x00000000</Field>
        </Command>
        <Command name="CMD_FS_OFF">
            <Field name="commandNo">0x00000804</Field>
            <Field name="status">0x00000000</Field>
            <Field name="pNextOp">0x00000000</Field>
            <Field name="startTime">0x00000000</Field>
            <Field name="startTrigger">0x00000000</Field>
            <Field name="condition">0x00000000</Field>
        </Command>
        <Command name="CMD_FS">
            <Field name="commandNo">0x00000803</Field>
            <Field name="status">0x00000400</Field>
            <Field name="pNextOp">0x00000000</Field>
            <Field name="startTime">0x00000000</Field>
            <Field name="startTrigger">0x00000000</Field>
            <Field name="condition">0x00000001</Field>
            <Field name="frequency">0x000001b2</Field>
            <Field name="fractFreq">0x0000199a</Field>
            <Field name="synthConf">0x00000000</Field>
        </Command>
        <Command name="CMD_COUNT_BRANCH">
            <Field name="commandNo">0x00000812</Field>
            <Field name="status">0x00000000</Field>
            <Field name="pNextOp">0x00000000</Field>
            <Field name="startTime">0x00000000</Field>
            <Field name="startTrigger">0x00000000</Field>
            <Field name="condition">0x00000000</Field>
            <Field name="counter">0x00000000</Field>
            <Field name="pNextOpIfOk">0x00000000</Field>
        </Command>
        <Command name="CMD_COUNT">
            <Field name="commandNo">0x0000080b</Field>
            <Field name="status">0x00000000</Field>
            <Field name="pNextOp">0x00000000</Field>
            <Field name="startTime">0x00000000</Field>
            <Field name="startTrigger">0x00000000</Field>
            <Field name="condition">0x00000000</Field>
            <Field name="counter">0x00000000</Field>
        </Command>
        <Command name="CMD_ABORT">
            <Field name="commandNo">0x00000401</Field>
        </Command>
    </commandsettings>
    <dcpanel>
        <Property name="m_chkCmdView" role="44">2</Property>
        <Property name="m_chkRfParameters" role="44">2</Property>
        <Property name="m_typicalSettings" role="33">Settings for 431 - 527 MHz band;625 bps, Legacy Long Range (10 kchip/s, 2-FSK, conv. FEC r=1/2 K=7, DSSS SF=8, Tx dev.: 5 kHz, Rx BW: 40 kHz)</Property>
        <Property name="m_testFuncPanel" role="37">3</Property>
    </dcpanel>
    <targetconfig>
        <Property name="m_cmbBoardSelection" role="46">0</Property>
        <Property name="m_chkDcDc" role="44">2</Property>
    </targetconfig>
    <rfparameters>
        <Property name="txPower" role="65535">15</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">0</Property>
        <Property name="m_chkAutoScroll" role="44">2</Property>
    </contrx>
    <packettx>
        <Property name="m_edtPacketCount" role="42">100</Property>
        <Property name="m_edtFixedPktLength" role="42">30</Property>
        <Property name="m_edtPacketData" role="42">41 b3 61 38 3e f6 23 91 97 01 03 31 3a d7 86 d9 ed f3 c9 80 e5 8d bb ad 94 1a 8a 25 </Property>
        <Property name="m_edtAccessAddress" role="42"></Property>
        <Property name="m_chkAddSeqNbr" role="44">2</Property>
        <Property name="m_chkInfinite" 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>
        <Property name="m_cmbLengthConfig" role="46">1</Property>
        <Property name="m_edtFixedPktLength" role="42">30</Property>
        <Property name="m_grp802154g" role="20">0</Property>
        <Property name="m_edt802154gPktLength" role="42">30</Property>
        <Property name="m_rbt802154g2BCrc" role="45">1</Property>
        <Property name="m_rbt802154g4BCrc" role="45">0</Property>
        <Property name="m_chk802154gWhitening" role="44">2</Property>
        <Property name="m_chkFEC" role="44">0</Property>
        <Property name="m_cmbPreambleCount" role="46">2</Property>
        <Property name="m_chkAddress" role="44">0</Property>
        <Property name="m_cmbSyncMode" role="46">8</Property>
    </packettx>
    <packetview>
        <Property name="m_edtPktLength" role="42">30</Property>
        <Property name="m_edtAddress" role="42"></Property>
        <Property name="m_lblFrmPayload" role="41">41 b3 61 38 3e f6 23 91 97 01 03 31 3a d7 86 d9 ed f3 c9 80 e5 8d bb ad 94 1a 8a 25 </Property>
    </packetview>
    <packetrx>
        <Property name="m_edtPacketCount" role="42">100</Property>
        <Property name="m_edtAccessAddress" role="42">0x00005aaa</Property>
        <Property name="m_chkInfinite" role="44">2</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>
</dcpanelconfiguration>

2727.smartrf_settings.c
//*********************************************************************************
// These settings have been generated for use with TI-RTOS and cc13xxware
//
// Generated by SmartRF Studio version 2.10.0 (build#110)
// The applied template is compatible with tirtos_simplelink_2_21_00
// Device: CC1310 Rev. 2.1 (Rev. B)
// 
//*********************************************************************************


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

#include <driverlib/rf_mailbox.h>
#include <driverlib/rf_common_cmd.h>
#include <driverlib/rf_prop_cmd.h>
#include <ti/drivers/rf/RF.h>
#include <rf_patches/rf_patch_cpe_lrm.h>
#include <rf_patches/rf_patch_rfe_lrm.h>
#include "smartrf_settings.h"


// TI-RTOS RF Mode Object
RF_Mode RF_prop =
{
    .rfMode = RF_MODE_PROPRIETARY_SUB_1,
    .cpePatchFxn = &rf_patch_cpe_lrm,
    .mcePatchFxn = 0,
    .rfePatchFxn = &rf_patch_rfe_lrm,
};

// Overrides for CMD_PROP_RADIO_DIV_SETUP
uint32_t pOverrides[] =
{
    // override_use_patch_prop_lrm.xml
    MCE_RFE_OVERRIDE(0,4,0,1,0,0),
    // override_synth_prop_430_510_div10.xml
    // Synth: Set recommended RTRIM to 7
    HW_REG_OVERRIDE(0x4038,0x0037),
    // Synth: Set Fref to 4 MHz
    (uint32_t)0x000684A3,
    // Synth: Configure fine calibration setting
    HW_REG_OVERRIDE(0x4020,0x7F00),
    // Synth: Configure fine calibration setting
    HW_REG_OVERRIDE(0x4064,0x0040),
    // Synth: Configure fine calibration setting
    (uint32_t)0xB1070503,
    // Synth: Configure fine calibration setting
    (uint32_t)0x05330523,
    // Synth: Set loop bandwidth after lock to 20 kHz
    (uint32_t)0x0A480583,
    // Synth: Set loop bandwidth after lock to 20 kHz
    (uint32_t)0x7AB80603,
    // Synth: Configure VCO LDO (in ADI1, set VCOLDOCFG=0x9F to use voltage input reference)
    ADI_REG_OVERRIDE(1,4,0x9F),
    // Synth: Configure synth LDO (in ADI1, set SLDOCTL0.COMP_CAP=1)
    ADI_HALFREG_OVERRIDE(1,7,0x4,0x4),
    // Synth: Use 24 MHz XOSC as synth clock, enable extra PLL filtering
    (uint32_t)0x02010403,
    // Synth: Configure extra PLL filtering
    (uint32_t)0x00108463,
    // Synth: Increase synth programming timeout (0x04B0 RAT ticks = 300 us)
    (uint32_t)0x04B00243,
    // override_synth_disable_bias_div10.xml
    // override_phy_rx_aaf_bw_0xd.xml
    // Rx: Set anti-aliasing filter bandwidth to 0xD (in ADI0, set IFAMPCTL3[7:4]=0xD)
    ADI_HALFREG_OVERRIDE(0,61,0xF,0xD),
    // override_phy_gfsk_rx.xml
    // Rx: Set LNA bias current trim offset to 3
    (uint32_t)0x00038883,
    // Rx: Freeze RSSI on sync found event
    HW_REG_OVERRIDE(0x6084,0x35F1),
    // override_phy_gfsk_pa_ramp_agc_reflevel_0x1a.xml
    // Tx: Configure PA ramping setting (0x41). Rx: Set AGC reference level to 0x1A.
    HW_REG_OVERRIDE(0x6088,0x411A),
    // Tx: Configure PA ramping setting
    HW_REG_OVERRIDE(0x608C,0x8213),
    // override_phy_lrm_rom_dsss8.xml
    // override_phy_rx_rssi_offset_neg2db.xml
    // Rx: Set RSSI offset to adjust reported RSSI by -2 dB
    (uint32_t)0x000288A3,
    // TX power override
    // Tx: Set PA trim to max (in ADI0, set PACTL0=0xF8)
    ADI_REG_OVERRIDE(0,12,0xF8),
    (uint32_t)0xFFFFFFFF,
};


// CMD_PROP_RADIO_DIV_SETUP
// Proprietary Mode Radio Setup Command for All Frequency Bands
rfc_CMD_PROP_RADIO_DIV_SETUP_t RF_cmdPropRadioDivSetup =
{
    .commandNo = 0x3807,
    .status = 0x0000,
    .pNextOp = 0, // INSERT APPLICABLE POINTER: (uint8_t*)&xxx
    .startTime = 0x00000000,
    .startTrigger.triggerType = 0x0,
    .startTrigger.bEnaCmd = 0x0,
    .startTrigger.triggerNo = 0x0,
    .startTrigger.pastTrig = 0x0,
    .condition.rule = 0x1,
    .condition.nSkip = 0x0,
    .modulation.modType = 0x0,
    .modulation.deviation = 0xC8,
    .symbolRate.preScale = 0xF,
    .symbolRate.rateWord = 0x3127,
    .rxBw = 0x24,
    .preamConf.nPreamBytes = 0x1,
    .preamConf.preamMode = 0x0,
    .formatConf.nSwBits = 0x10,
    .formatConf.bBitReversal = 0x0,
    .formatConf.bMsbFirst = 0x1,
    .formatConf.fecMode = 0x0,
    .formatConf.whitenMode = 0x0,
    .config.frontEndMode = 0x0,
    .config.biasMode = 0x1,
    .config.analogCfgMode = 0x0,
    .config.bNoFsPowerUp = 0x0,
    .txPower = 0x913F,
    .pRegOverride = pOverrides,
    .centerFreq = 0x01B1,
    .intFreq = 0x8000,
    .loDivider = 0x0A,
};

// CMD_FS
// Frequency Synthesizer Programming Command
rfc_CMD_FS_t RF_cmdFs =
{
    .commandNo = 0x0803,
    .status = 0x0000,
    .pNextOp = 0, // INSERT APPLICABLE POINTER: (uint8_t*)&xxx
    .startTime = 0x00000000,
    .startTrigger.triggerType = 0x0,
    .startTrigger.bEnaCmd = 0x0,
    .startTrigger.triggerNo = 0x0,
    .startTrigger.pastTrig = 0x0,
    .condition.rule = 0x1,
    .condition.nSkip = 0x0,
    .frequency = 0x01B2,
    .fractFreq = 0x199A,
    .synthConf.bTxMode = 0x0,
    .synthConf.refFreq = 0x0,
    .__dummy0 = 0x00,
    .__dummy1 = 0x00,
    .__dummy2 = 0x00,
    .__dummy3 = 0x0000,
};

// CMD_PROP_RX
// Proprietary Mode Receive Command
rfc_CMD_PROP_RX_t RF_cmdPropRx =
{
    .commandNo = 0x3802,
    .status = 0x0000,
    .pNextOp = 0, // INSERT APPLICABLE POINTER: (uint8_t*)&xxx
    .startTime = 0x00000000,
    .startTrigger.triggerType = 0x0,
    .startTrigger.bEnaCmd = 0x0,
    .startTrigger.triggerNo = 0x0,
    .startTrigger.pastTrig = 0x0,
    .condition.rule = 0x1,
    .condition.nSkip = 0x0,
    .pktConf.bFsOff = 0x0,
    .pktConf.bRepeatOk = 0x0,
    .pktConf.bRepeatNok = 0x0,
    .pktConf.bUseCrc = 0x0,
    .pktConf.bVarLen = 0x0,
    .pktConf.bChkAddress = 0x0,
    .pktConf.endType = 0x0,
    .pktConf.filterOp = 0x0,
    .rxConf.bAutoFlushIgnored = 0x0,
    .rxConf.bAutoFlushCrcErr = 0x0,
    .rxConf.bIncludeHdr = 0x0,
    .rxConf.bIncludeCrc = 0x0,
    .rxConf.bAppendRssi = 0x0,
    .rxConf.bAppendTimestamp = 0x0,
    .rxConf.bAppendStatus = 0x0,
    .syncWord = 0x00005AAA,
    .maxPktLen = 0x0B,
    .address0 = 0xAA,
    .address1 = 0xBB,
    .endTrigger.triggerType = 0x1,
    .endTrigger.bEnaCmd = 0x0,
    .endTrigger.triggerNo = 0x0,
    .endTrigger.pastTrig = 0x0,
    .endTime = 0x00000000,
    .pQueue = 0, // INSERT APPLICABLE POINTER: (dataQueue_t*)&xxx
    .pOutput = 0, // INSERT APPLICABLE POINTER: (uint8_t*)&xxx
};

// CMD_PROP_TX
// Proprietary Mode Transmit Command
rfc_CMD_PROP_TX_t RF_cmdPropTx =
{
    .commandNo = 0x3801,
    .status = 0x0000,
    .pNextOp = 0, // INSERT APPLICABLE POINTER: (uint8_t*)&xxx
    .startTime = 0x00000000,
    .startTrigger.triggerType = 0x0,
    .startTrigger.bEnaCmd = 0x0,
    .startTrigger.triggerNo = 0x0,
    .startTrigger.pastTrig = 0x0,
    .condition.rule = 0x1,
    .condition.nSkip = 0x0,
    .pktConf.bFsOff = 0x0,
    .pktConf.bUseCrc = 0x1,
    .pktConf.bVarLen = 0x0,
    .pktLen = 0x14,
    .syncWord = 0x00005AAA,
    .pPkt = 0, // INSERT APPLICABLE POINTER: (uint8_t*)&xxx
};

Apart from this I have tried to sniff the data using the Smart RF Packet Sniffer 2 with reference of

But I am not able to get any packet from sniffer with 434.1 MHz frequency.

My Questions:

  • Did I have any mistake in configuring the SmartRF studio with reference of sensor RF profile ?
  • Why am I not able to sniff any packet ?

Please help me identify the correct RF setting of CC1310 Radio to receive the packets from sensor

  • Hi Ravi, 

    Assigning an expert to comment. 

    Thanks, 
    Elin

  • First of all, the CC1310 required preamble in front of the sync word. From what you describe, it sounds like the two first bytes in the packets are the sync word, and that there are no preamble. Also, there are no support for removing start and stop bits from the data stream, so this must be done from the application.

    To be able to verify that you are able to receive anything from an RF point of view, I would recommend that you enable serial mode in the cont. RX tab in SmartRF Studio and that you look at the raw data on DIO_7 to verify that you are able to receive the data from the sensor.

    BR

    Siri

  • Hi Siri,

    What will be the differece between data received from continuous Rx and Packet Rx ? and

    Can I read the serial output data from XDS110 Class Application/User UART listed ? I will try with the continuous Rx and will let you know.

  • In cont. mode the radio is not looking for any sync word etc. It simply output the raw data it receives on the air to a pin. You cannot read these data over uart. You simply need to connect a scope or logic analyzer to the pin and monitor it to see if you receive what you think your sender is sending.

    If you can see the data, then you can set up the radio in normal mode to look for sync word etc. The reason I suggested this is that you first need to check that your RF settings are OK so that you are actually able to receive the data. When that is confirmed, you can start figuring out how the packet engine needs to be configured to be able to receive the packet in the FIFO.

    Siri

  • Thanks Siri,

    We have enabled Continuous Rx (in serial mode) & tried to capture Data packets from DIO7 pin on MDO-3024. But, there's a random/noise Data packets coming out from DIO7 even when nothing Broadcasted by Sensors & we're unable to filter-out valid Data packet on DSO.

    1. Is it expected that DIO7 sending out noise data too? If yes, How to filter noise from Actual Data packets for decoding?
    2. In RFstudio's continuous Rx (serial mode) operation, whether it also depends on other RF settings? (i.e Set in CMD_FS and CMD_PROP_RADIO_DIV_SETUP)

    Thanks and Regards

    Ravi

  • There will always be some noise on the air, so when using cont. RX you will see noise on that pin even if your transmitter is not sending. I would recommend that you do a test first where you use 2 CC1310 devices first, and transmit packets with one device and receives with the other, using SmartRF Studio.

    After verifying that this is OK, you can set your receiver in cont. RX and monitor the DIO. You should be able to recognize the packet.

    When this is confirmed you can try normal mode. Your RF settings must be correct to receive something both in normal mode and serial mode.

    Siri

  • Hi Siri,

    Appreciate your quick response,

    Meanwhile, we perform an experiment to test Tx-Rx using 2 CC1310-launchpad kits by SmartRFstudio and try filtering/decoding DIO7 data frames,

    Can you please verify & confirm our RF settings are CORRECT for Sensor Specs? & we must receive actual Raw Data based on Sync_Word.

    *********SmartRFstudio Parameter summary******* (For all parameters, please refer 2727.smartrf_settings.c file attached above)
    // Frequency: 434.10001 MHz
    // Deviation: 50.000 kHz
    // Fixed Packet Length: 30
    // Max Packet Length: 11
    // Packet Data: 255
    // RX Filter BW: 98 kHz
    // Symbol Rate: 19.20013 kBaud
    // Sync Word Length: 16 Bits
    // TX Power: 15 dBm
    // Whitening: No whitening
    ****************************TPMS Sensor Specs**************************
    // F nominal: 434.1 MHz
    // F Accuracy: -50 to +50 KHz
    // F Offset (ΔF): 50 KHz (min), 80 KHz (Nominal), 110 KHz (max)
    // Baud Rate: 19200 bits/s
    // Encoding: standard NRZ
    // Each frameTime = 5.73 ms

    The TPMS sensor broadcasts a packet & each packet contains 4-frames, like:

    • K0 + Frame + K1 + Frame + K2 + Frame + K3 + Frame (here K0-3 are separators between frames)
    • All 4 frames are exactly same Data
    • Each Frame length is 11 bytes (first 2 bytes:sync word , 7 bytes:payload, last 2 bytes:CRC)

    ******************************************************************************

    Also, can we get directly NRZ decoded Data Packets in SmartRFstudio by some RF settings?

    Thanks & Regards,

    Ravi

  • Hi Siri,

    As per your suggestion, with TWO EVK setups as Tx & Rx mode.

    We have captured the waveform of Known Data on DIO_7 (transmitted - ff ff ff ff ff ff ff ff ff ff ff ff 00 00 00 00 00 00 00 00 00 00 00 00 ff ff ff ff ff ff ff ff ff ff ff ff 00 00 00 00 00 00 00 00 00 00 00 00 (48 bytes with, preamble=55 syncword=5555). Waveform picture as below.

    But, when we Transmitted actual Sensor Data bytes (i.e. 5A AA 78 23 14 14 64 64 20 0D 65) from Tx-EVK, we are unable to capture waveform from DIO_7 pin due to continuous noise. We tried multiple trigger settings & single instance signal capture settings of our spectrum Analyzers.

    Can you please guide us, that how can we capture the correct Data Waveform? or reduce continuous noise on the DIO_7 pin of Rx-EVK.

    Thanks & Regards,

    Ravi

  • Hi Ravi. 

    Do you use SmartRF studio to get the waveform on pin 7? Can you show a screencap of the noise you get on pin 7 when transmitting with sensor data?

    Vegard

  • Hi Vegard,

    Nice to e-meet you & thanks for response,

    Yes, we are capturing Data Waveform from DIO_7 pin of cc1310 Launchpad EVK, using SmartRFstudio's Continuous Rx serial mode enabled feature.

    You can clearly see the constant Noise generated from DIO_7 & it's very difficult for us to identify/differentiate Sensor Data out of it. Moreover, once Sensor pressurized, it broadcasts Data packets every few seconds..

  • Hi Ravi.

    It seems like the picture didn't get uploaded properly, can you try again? For the first waveform. This is with the same setup as when transmitting sensor data, except that the transmitted data is different?

    Vegard