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: Maximum frequency deviation limited to 222 kHz, when using MCE_RFE_OVERRIDE(0,5,0,1,0,0)

Part Number: CC1310

Dear Sir/Madam,

I am using the CC1310 with the MCE_RFE_OVERRIDE(0,5,0,1,0,0) as I need Manchester encoding for legacy reasons.

I have found that the maximum frequency deviation is limited to 222 kHz.  If 223 kHz is used, the deviation drops to 115 kHz.

This can be demonstrated using SmartRF studio 7.  Use the override editor to set MCE_RFE_OVERRIDE(0,5,0,1,0,0).

I used a frequency of 914.321 MHz and a data rate of 20 KHz.  There is no similar limit with MCE_RFE_OVERRIDE(0,4,0,1,0,0), but I can't use that as I need Manchester coding.

Is there any way I can use a higher deviation and keep the Manchester coding?

Regards,

Tony

  • Could you post a SmartRF Studio config (xml) file with the settings you use? For one thing you don't state which RX BW you are using.

    Note the limitations given here:
    processors.wiki.ti.com/.../CC13xx_datarate_vs_rxbw

    Why do you want a very high modulation index?
  • Hi TER,

    Please find the file attached.  If you change the deviation to 250, you will see the problem.

    I have to use a high modulation index in order to meet FCC Part 15.247 rules for the -6dB bandwidth being greater than 500 KHz.

    I also have to be backward compatible with legacy equipment.

    Regards,

    Tony.

     

    222 Max Deviation Issue.xml
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <!DOCTYPE configuration SYSTEM "C:/Program Files (x86)/Texas Instruments/SmartRF Tools/SmartRF Studio 7_New/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_genfsk</Cpe>
            <Mce></Mce>
            <Rfe>rf_patch_rfe_genfsk</Rfe>
        </Patch>
        <commandsettings>
            <Command name="CMD_TX_TEST">
                <Field name="commandNo">0x00000808</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="config">0x0000000a</Field>
                <Field name="txWord">0x0000aaaa</Field>
                <Field name="endTrigger">0x00000001</Field>
                <Field name="syncWord">0x0000d22b</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">0x0000d22b</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">0x00000000</Field>
                <Field name="pktLen">0x00000000</Field>
                <Field name="startConf">0x00000000</Field>
                <Field name="preTrigger">0x00000000</Field>
                <Field name="preTime">0x00000000</Field>
                <Field name="syncWord">0x0000d22b</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">0x00000000</Field>
                <Field name="syncWord">0x0000d22b</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">0x0000d22b</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">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="rxConf">0x00000088</Field>
                <Field name="syncWord">0x0000d22b</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">0x00001bc1</Field>
                <Field name="symbolRate">0x0033ed0f</Field>
                <Field name="rxBw">0x0000002b</Field>
                <Field name="preamConf">0x00000044</Field>
                <Field name="formatConf">0x00000093</Field>
                <Field name="config">0x00000008</Field>
                <Field name="txPower">0x0000a73f</Field>
                <Field name="pRegOverride">0x00000000</Field>
                <Field name="centerFreq">0x00000392</Field>
                <Field name="intFreq">0x00008000</Field>
                <Field name="loDivider">0x00000005</Field>
                <OverrideField name="pRegOverride">
                    <OverrideBuffer name="override_use_patch_prop_genfsk.xml">
                        <Element32b>MCE_RFE_OVERRIDE(0,5,0,1,0,0)</Element32b>
                    </OverrideBuffer>
                    <OverrideBuffer name="override_synth_prop_863_930_div5.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_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_rx_rssi_offset_5db.xml">
                        <Element32b>0x00FB88A3</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">0x00000392</Field>
                <Field name="fractFreq">0x00004ccd</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 role="44" name="m_chkRegView">0</Property>
            <Property role="44" name="m_chkCmdView">2</Property>
            <Property role="44" name="m_chkRfParameters">2</Property>
            <Property role="46" name="m_cmbUserMode">1</Property>
            <Property role="33" name="m_typicalSettings">Settings for 779 - 930 MHz band;50 kbps, 2-GFSK, 25 kHz deviation</Property>
            <Property role="37" name="m_testFuncPanel">0</Property>
        </dcpanel>
        <targetconfig>
            <Property role="46" name="m_cmbBoardSelection">0</Property>
            <Property role="44" name="m_chkDcDc">2</Property>
        </targetconfig>
        <rfparameters>
            <Property role="65535" name="txPower">14</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">0</Property>
            <Property role="44" name="m_chkAutoScroll">2</Property>
        </contrx>
        <packettx>
            <Property role="42" name="m_edtPacketCount">100</Property>
            <Property role="42" name="m_edtPacketCountEsy">100</Property>
            <Property role="42" name="m_edtFixedPktLength">16</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">0</Property>
            <Property role="45" name="m_rbtText">0</Property>
            <Property role="45" name="m_rbtHex">1</Property>
            <Property role="44" name="m_chkAdvanced">0</Property>
            <Property role="46" name="m_cmbLengthConfig">1</Property>
            <Property role="42" name="m_edtFixedPktLength">16</Property>
            <Property role="42" name="m_edtBitLength"></Property>
            <Property role="20" name="m_grp802154g">0</Property>
            <Property role="42" name="m_edt802154gPktLength">20</Property>
            <Property role="45" name="m_rbt802154g2BCrc">1</Property>
            <Property role="45" name="m_rbt802154g4BCrc">0</Property>
            <Property role="44" name="m_chk802154gWhitening">0</Property>
            <Property role="44" name="m_chkFEC">0</Property>
            <Property role="46" name="m_cmbPreambleCount">5</Property>
            <Property role="44" name="m_chkAddress">0</Property>
            <Property role="46" name="m_cmbSyncMode">11</Property>
        </packettx>
        <packetview>
            <Property role="42" name="m_edtPktLength">16</Property>
            <Property role="42" name="m_edtAddress"></Property>
            <Property role="41" name="m_lblFrmPayload">FF FE FD Fc Fb Fa F9 F8 F7 F6 F5 F4 F3 F2 F1 F0</Property>
        </packetview>
        <packetrx>
            <Property role="42" name="m_edtPacketCount">100</Property>
            <Property role="42" name="m_edtPacketCountEsy">100</Property>
            <Property role="42" name="m_edtAccessAddress">0x0000d22b</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">0</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>
    </dcpanelconfiguration>
    

  • The radio is not designed to handle a deviation larger than the datarate in RX.

    To achieve 500 kHz 6 dB bandwidth the recommendation is to use the WB-DSSS patch.

    Are you actually able to fulfill the PSD requirements with a very high modulation factor? As I have understood it the spectrum has to be fairly flat to pass FCC.
  • Hi TER,

    Is there anything I can do to maintain compatibility with the legacy modulation scheme?

    I could try increasing the programmed data rate for reception and then eliminate the repeated bits. Does this stand a chance of working?

    Can you provide more details on the WB-DSSS patch, some posts refer to an app note, but I can't find it?

    The legacy equipment passed FCC certification using this high modulation factor approach.

    Regards,

    Tony.

  • "I could try increasing the programmed data rate for reception and then eliminate the repeated bits. Does this stand a chance of working?"
    Does that mean you can program the datarate to be higher on the RX side/ which repeated bits are we talking about?
    ---
    I don't have a tested "how to" on the patch.

    The following is from an unreleased and not up to date app note (this is the best I could find):

    Overrides
    – Change MCE and RFE override to:
    MCE_RFE_OVERRIDE(1, 0, 0, 4, 0, 0), //No RFE patch and PA ramping or
    MCE_RFE_OVERRIDE(1, 0, 0, 1, 0, 0), // WB-DSSS MCE, GFSK RFE patches
    – Change override for AGC reference level to:
    HW_REG_OVERRIDE(0x6088,0x410E), // AGC reference level to 0x0E
    – Overrides for DSSS:
    HW_REG_OVERRIDE(0x52AC,0x0B03), //DSSS = 4, K=4
    HW_REG_OVERRIDE(0x5108,0x0048), //Correlator Threshold for Sync
    • Modifications for CMD_PROP_RADIO_DIV_SETUP:
    .modulation.modType = 0x0,
    .modulation.deviation = 0x2BC,
    .symbolRate.preScale = 0xF,
    .symbolRate.rateWord = 0x50000, // 500 Kbps symbol rate
    .rxBW = 0x2F,
    .formatConf.nSwBits = 0x20,
    .formatConf.bMsbFirst = 0x0, //LSB transmitted first for WB-DSSS mode
    .formatConf.fecMode = 0x0,
    • Modifications for CMD_PROP_TX and CMD_PROP_RX:
    .syncWord = 0x333C3C33,

    • To apply MCE patch, following modification needs to be made on the RF_Mode structure:
    .mcePatchFxn = &rf_patch_mce_wb_dsss,

    ---
    I Note that under C:\ti\simplelink_cc13x0_sdk_2_20_00_38\source\ti\devices\cc13x0\rf_patches it's also a rf_patch_cpe_wb_dsss.h that has to be applied if the second MCE_RFE_OVERRIDE option is used.
    ---
    From the CC1310 datasheet:
    Receiver sensitivity, WideBand-DSSS
    (WB-DSSS), 30 kbps
    fRF = 915 MHz, 480 ksym/s, GFSK, 195-kHz deviation,
    FEC (half rate), DSSS = 8, 622-kHz RX bandwidth,
    BER = 10–2
    indicating that you have to check the datarate and deviation. Refer to e2e.ti.com/.../685835 for the code to change from DSSS=4 to DSSS=8 as used in the datasheet.
  • Thanks TER,

    Today I was able to verify the WB-DSSS code you sent results in a -6bB bandwidth of 516.25 kHz using the calibrated equipment at a FCC accredited test facility.  This is a modulation scheme I am keen to adopt, but I need to support legacy equipment as well. It's really hard for me to explain to my managers how a state-of-the-art TI chip can't decode the data from a far less capable, less expensive, much older radio.

    My original (and legacy) approach of using a high modulation index, by setting a deviation of 180 kHz with a modest data rate of 20 kbps, gives a -6dB bandwidth of 508 kHz and a maximum power spectral density of 4 dB in a 3 kHz window, using the CC1310's 12.5 dBm power setting.  This legacy approach will pass FCC 15.247 and the spectrum analyser plots for this, versus the WB-DSSS show very little difference as fundamentally the signal is still 2-GFSK, just with a higher data rate in the case of the WB-DSSS.  I understand the coding gain and forward error correction advantages of the DSSS approach and I would not be advocating a high modulation index in any other circumstances other than legacy support.

    In my last message, i said:

    "I could try increasing the programmed data rate for reception and then eliminate the repeated bits. Does this stand a chance of working?"

    You replied:

    "Does that mean you can program the datarate to be higher on the RX side/ which repeated bits are we talking about? 

    To clarify: In order to facilitate reception of the legacy data format, I propose to program the CC1310's RX data rate to be an integer multiple of the original transmission data rate, let's say the multiple is 2 for simplicity.  Each bit of the original transmission will be decoded as 2 identical bits by the CC1310.  I would then post-process the decoded data to restore the original format.  Can you see any problems with this approach or is there a better way to achieve my goal?

    Regards,

    Tony.

     

     

  • We thought about the bit repetition patch do what you suggest but it supports just up to x4. Since you need a x10 that is not enough and if you do it manually I would assume that the performance is reduced since you have to repeat each bit a high number of times. You can try to see if you manage to get it to work.
  • Hi TER,

    I'm looking at the bit repetition patch and I filled in the spreadsheet referenced in the app note.  I get a green valid indication for all the requirements (see below).

    The sheet indicates a maximum deviation of 320 kHz, so 180 kHz should be OK, or am I missing something?

    Regards,

    Tony.

    Divider 5
    RF frequency 915 MHz
    DataRate: 20000 bps
    Deviation: 180000 Hz
    RXBW 870 kHz
    Repetition factor: 4 (1 for GENFSK mode)
    OUTPUT:
    bdec1+bdec2 2
    actual RxBW 826.0 kHz
    Channel filter sample rate 1985677 Hz
    min_rate possible 7757 Hz
    max_rate possible 124105 Hz
    max_pdif possible 2
    Symbol oversampling rate with max pdif 1280000 Hz
    max_deviation for given data rate 320000
    Channel filter sample rate > Symbol oversampling rate valid
    Rate configuration valid
    Deviation configuration valid
  • I had to check with the modem group to verify that the excel sheet is correct and it is. We had forgotten about the pdif factor.
    => You should be able to use the bit repetition patch with the parameters above.
  • Hi TER,

    Thank you very much. I have the bit repetition patch working and it provides compatibility with the legacy equipment.

    I couldn't work out how to combine the bit repetition patch and the Manchester coding override, so I perform the Manchester coding/decoding in the application. I had to use the 'partial read' technique to decode and set the overall packet length, but the great news is it works.

    Is it possible to combine the Manchester coding override with the bit repetition patch?

    Thanks again.

    Tony.

  • Good that you got it to work. To get bit repetition and manchester to work together the patch has to be rewritten and that is not likely to happen.