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: CC1310与CC1101和CC430之间通讯距离过近问题

Part Number: CC1310
Other Parts Discussed in Thread: CC1101, , CC430F5137

公司原来的产品主要是采用CC1101或者CC430系列开发的,目前测试发现一个现象,CC1310做RF接收,CC1101或者CC430做RF发送(增益为5dBm,波特率38.4K),他们间的有效通讯距离才只有5米多点,但是用一个CC1310RF接收,另一个用CC1310做RF发射,或者是用一个C1101、CC430RF接收,另一个用C1101、CC430做RF发射,他们的有效通讯距离能到达35-40米左右。新旧产品中都做了白化处理,未做曼切斯特编码处理,请问CC1310需要兼容C1101和CC430产品,需要在哪方面配置做修改?能否具体说说?

  • 您好,

    CC430 中的无线电与 CC1101 相同,因此这两个设备的接收效果应该相同。

    你能告知一下您的CC1101/CC430 上使用的射频参数或者相应设置吗?

  • 我说的是CC1310与CC1101,或者是CC1310与CC430间的通讯距离过近。但是同样的配置,CC1310与CC1310间通讯距离正常,CC430与CC1101间通讯距离也正常。

  • 这个是CC430RF参数

    0x08, // FSCTRL1 Frequency synthesizer control.
    0x00, // FSCTRL0 Frequency synthesizer control.
    0x10, // FREQ2 Frequency control word, high byte.
    0x9D, // FREQ1 Frequency control word, middle byte.
    0x89, // FREQ0 Frequency control word, low byte.

    0x7A, // MDMCFG4 Modem configuration.
    0x83, // MDMCFG3 Modem configuration.
    0x13, // MDMCFG2 Modem configuration.

    0x22, // MDMCFG1 Modem configuration.
    0xF8, // MDMCFG0 Modem configuration.

    0x05, // CHANNR Channel number.
    0x42, // DEVIATN Modem deviation setting (when FSK modulation is enabled).

    0xB6, // FREND1 Front end RX configuration.
    0x10, // FREND0 Front end TX configuration.
    0x18, // MCSM0 Main Radio Control State Machine configuration.//18
    0x1D, // FOCCFG Frequency Offset Compensation Configuration.
    0x1C, // BSCFG Bit synchronization Configuration.
    0xc7, // AGCCTRL2 AGC control.
    0x00, // AGCCTRL1 AGC control.
    0xb2, // AGCCTRL0 AGC control.
    0xEA, // FSCAL3 Frequency synthesizer calibration.
    0x2A, // FSCAL2 Frequency synthesizer calibration.
    0x00, // FSCAL1 Frequency synthesizer calibration.
    0x1F, // FSCAL0 Frequency synthesizer calibration.
    0x59, // FSTEST Frequency synthesizer calibration.
    0x81, // TEST2 Various test settings.
    0x35, // TEST1 Various test settings.
    0x09, // TEST0 Various test settings.
    0x47, // FIFOTHR RXFIFO and TXFIFO thresholds.
    0x06, // IOCFG2 GDO2 output pin configuration.
    0x06, // IOCFG0 GDO0 output pin configuration. Refer to SmartRF?Studio User Manual for detailed pseudo register explanation.
    0x04, // PKTCTRL1 Packet automation control.
    0x45, // PKTCTRL0 Packet automation control.
    0x00, // ADDR Device address.
    0x3D, // PKTLEN Packet length.

  • 这个是CC1310RF参数

    // CMD_PROP_RADIO_DIV_SETUP
    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 = 0x0, //0x1,
    .condition.nSkip = 0x0,
    .modulation.modType = 0x1,
    .modulation.deviation = 0x64,
    .symbolRate.preScale = 0xF,
    .symbolRate.rateWord = 0x624E,
    .symbolRate.decimMode = 0x0,
    .rxBw = 0x25,
    .preamConf.nPreamBytes = 0x4,
    .preamConf.preamMode = 0x0,
    .formatConf.nSwBits = 0x20,
    .formatConf.bBitReversal = 0x0,
    .formatConf.bMsbFirst = 0x1,
    .formatConf.fecMode = 0x0,
    .formatConf.whitenMode = 0x1,
    .config.frontEndMode = 0x0,
    .config.biasMode = 0x1,
    .config.analogCfgMode = 0x0,
    .config.bNoFsPowerUp = 0x0,
    // .txPower = 0x913F, //15dBm
    // .txPower = 0xD80F, //13dBm
    .txPower = 0x46CB, //10dBm
    .pRegOverride = pOverrides,
    .centerFreq = 0x01B1,
    .intFreq = 0x8000,
    .loDivider = 0x0A,
    };

    // CMD_FS
    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 = 0x0, //0x1,
    .condition.nSkip = 0x0,
    .frequency = 0x01B1,
    // .fractFreq = 0x0000,//433
    .fractFreq = 0x3334, //433.2
    // .fractFreq = 0x6667, //433.4
    // .fractFreq = 0x999A, //433.6
    .synthConf.bTxMode = 0x0,
    .synthConf.refFreq = 0x0,
    .__dummy0 = 0x00,
    .__dummy1 = 0x00,
    .__dummy2 = 0x00,
    .__dummy3 = 0x0000,
    };

    // CMD_PROP_TX
    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 = 0x0, //0x1,
    .condition.nSkip = 0x0,
    .pktConf.bFsOff = 0x0,
    .pktConf.bUseCrc = 0x1,
    .pktConf.bVarLen = 0x1,
    .pktLen = 0x1E, // SET APPLICATION PAYLOAD LENGTH
    .syncWord = 0xD391D391,
    .pPkt = 0, // INSERT APPLICABLE POINTER: (uint8_t*)&xxx
    };

    // CMD_PROP_RX
    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 = 0x0, //0x1,
    .condition.nSkip = 0x0,
    .pktConf.bFsOff = 0x0,
    .pktConf.bRepeatOk = 0x0,
    .pktConf.bRepeatNok = 0x0,
    .pktConf.bUseCrc = 0x1,
    .pktConf.bVarLen = 0x1,
    .pktConf.bChkAddress = 0x0,
    .pktConf.endType = 0x0,
    .pktConf.filterOp = 0x0,
    .rxConf.bAutoFlushIgnored = 0x0,
    .rxConf.bAutoFlushCrcErr = 0x0,
    .rxConf.bIncludeHdr = 0x1,
    .rxConf.bIncludeCrc = 0x0,
    .rxConf.bAppendRssi = 0x0,
    .rxConf.bAppendTimestamp = 0x0,
    .rxConf.bAppendStatus = 0x1,
    .syncWord = 0xD391D391,
    .maxPktLen = 0x80, // MAKE SURE DATA ENTRY IS LARGE ENOUGH
    .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
    };

  • 您好,

    帮您同步工程师,有答复即刻联系您。

  • 您好,项目比较急,不知道工程师查阅后怎么说?

  • 您好,

    由于假期等原因回复可能延迟,请您谅解,有回复会及时联系您。

    感谢您的理解。

  • 您好,

    您是否曾尝试使用 SmartRF Studio 7配置两种器件的设置来检查在使用该方法下是否会有距离的不同?

    此外,您是否参阅过CC13x0 documentation里的从 CC1101 迁移这一部分?software-dl.ti.com/.../cc1101-migration.html

  • 我尝试过用smart studio 7方式配置两种器件收发试过了,同型号的MCU距离都是正常的,约有40米左右,但是如果是CC1310与CC1101间通讯则距离很差约5米左右。请问我上面发出来的两种器件的RF参数有问题么?

  • 您好,

    为了更好解决问题,您能否上传在 SmartRF Studio 中使用的 CC1310和 CC1101设置的屏幕截图?这将使我能够更快地配置在我的设备上。我们将首先重点处理CC1310和 CC1101 (而不是 CC430),因为手头上有正好有这两个产品。

  • 不好意思,响应公司要求,居家隔离中,身边没有相应的设备,我贴段我的CC1101的RF参数,数组中没出现的寄存器参数则认为默认参数

    const registerSetting_t preferredSettings[] = {
    // {TI_CCxxx0_IOCFG0, 0x06},
    // {TI_CCxxx0_FIFOTHR, 0x47},
    // {TI_CCxxx0_PKTCTRL0, 0x05},
    // {TI_CCxxx0_FSCTRL1, 0x06},
    // {TI_CCxxx0_FREQ2, 0x10},
    // {TI_CCxxx0_FREQ1, 0xA7},
    // {TI_CCxxx0_FREQ0, 0x4E}, //0x62
    // {TI_CCxxx0_MDMCFG4, 0xF5}, //波特率:9600 f8 f5
    // {TI_CCxxx0_MDMCFG3, 0x83},
    // {TI_CCxxx0_MDMCFG2, 0x13},
    // {TI_CCxxx0_DEVIATN, 0x15},
    // {TI_CCxxx0_MCSM0, 0x18},
    // {TI_CCxxx0_FOCCFG, 0x16},
    // {TI_CCxxx0_WORCTRL, 0xFB},
    // {TI_CCxxx0_FSCAL3, 0xE9},
    // {TI_CCxxx0_FSCAL2, 0x2A},
    // {TI_CCxxx0_FSCAL1, 0x00},
    // {TI_CCxxx0_FSCAL0, 0x1F},
    // {TI_CCxxx0_TEST2, 0x81},
    // {TI_CCxxx0_TEST1, 0x35},
    // {TI_CCxxx0_TEST0, 0x09},
    // //{TI_CCxxx0_SYNC1, 0xd3},
    // //{TI_CCxxx0_SYNC0, 0x91},
    {TI_CCxxx0_IOCFG0, 0x06},
    {TI_CCxxx0_FIFOTHR, 0x47},
    {TI_CCxxx0_PKTCTRL0, 0x45},
    {TI_CCxxx0_FSCTRL1, 0x08},
    {TI_CCxxx0_FREQ2, 0x10},
    {TI_CCxxx0_FREQ1, 0x9d},
    {TI_CCxxx0_FREQ0, 0x89},//62 ae
    {TI_CCxxx0_CHANNR, 0x06},


    // {TI_CCxxx0_MDMCFG4, 0x2d}, //波特率:250k
    // {TI_CCxxx0_MDMCFG3, 0x3B},//43 83
    // {TI_CCxxx0_MDMCFG2, 0x13},
    // {TI_CCxxx0_DEVIATN, 0x15},

    /*38.4k速率*/
    {TI_CCxxx0_MDMCFG4, 0x7a}, //波特率:38.4
    {TI_CCxxx0_MDMCFG3, 0x83},//43 83
    {TI_CCxxx0_MDMCFG2, 0x13},
    {TI_CCxxx0_DEVIATN, 0x42},//40


    {TI_CCxxx0_MCSM0, 0x18},
    {TI_CCxxx0_FOCCFG, 0x1d},
    {TI_CCxxx0_WORCTRL, 0xFB},
    {TI_CCxxx0_FSCAL3, 0xEA},
    {TI_CCxxx0_FSCAL2, 0x2A},
    {TI_CCxxx0_FSCAL1, 0x00},
    {TI_CCxxx0_FSCAL0, 0x1F},

    {TI_CCxxx0_TEST2, 0x81},
    {TI_CCxxx0_TEST1, 0x35},
    {TI_CCxxx0_TEST0, 0x09},
    //{TI_CCxxx0_SYNC1, 0xd3},
    //{TI_CCxxx0_SYNC0, 0x91},
    };

  • 您好,

    工程师由于假期等原因暂时无法及时回复,请您谅解。

    我这边发现您的 CC430和 CC1310的设置有一些差异:

    • 在 CC430中,您偏差设置为31.738281kHz (DEVIATN = 0x42)。但在 CC1310中,您偏差设置为25kHz (.modulation.deviation = 0x64)
    • 基于CC430基本频率(431.999664MHz)和通道编号(5),它的载波频率为432.99420MHz。但在 CC1310中,频率为433.2MHz (.frequency = 0x01B1、.fractFreq = 0x3334)

    您能否在 CC1310 .fractFreq 中修改为0x0000 (代码中对此进行了注释),并将.modulation.deviation 修改为0x7E?这会将载波频率设置为433MHz,并将偏差设置为31.5kHz。

    您是否可以使用频谱分析仪同时获取CC430和 CC1310在传输时的波形并上传过来?

  • 不好意思,前段时间亲人住院,忙中出错传错了数据。这是我今天参阅了CC13x0 documentation里的从 CC1101 迁移这一部分?software-dl.ti.com/.../cc1101-migration.html后,分别用两台电脑连接CC430F5137和CC1310相互通讯的Smart Studio 7 截图,当两者距离大于9米以后,CC1310接收端就出现CRC出错的情况,但是它的信号RSSI强度还是很好哈。

  • 波形之前在公司用频谱仪抓过中心频点都对上的

  • 您好,

    帮您同步工程师,待回复通知您。

  • 您好,

    • 您能提供一下屏幕截图吗,拍照不利于阅读数据。
    • 麻烦您检查TX和RX设备之间的频率偏移,并上传”频谱仪先前已捕获的可以在中心频率点对齐的波形”的结果。请注意使用1kHz或更低的RBW。
    • 你使用的频率上有很多噪音干扰吗?
    • 您能否也可以在具有431-527 MHz频带的50 kbps GSK PHY的CC1310中进行测试?我在图片中注意到,您选择了779-930 MHz频带的PHY,并更改了频率。
  • 按照您的要求,我重新测试并截图上传了,CC430F5137与CC1310有效距离测试下来10米以内,10米外就CRC报错

  • 其中频谱仪是之前测试不同增益的时候拍的。

  • 您好,

    频谱仪的图像是CC430还是CC1310?您能发一份图片上同时有两者的频谱的吗?

    同时,如果您能将跨度从现在设置的 30MHz 降低到 1 MHz,并将分辨率带宽 (RBW) 从 300 kHz 降低到 1 kHz,也会对我们分析有所帮助。

    我们在办公室环境中使用 CC1310和 CC1101进行了距离超过10米的测试、没有任何问题。

    您是否能够使用评估板进行测试并查看是否有相同的问题?

    是否还可以使用具有相同设置的 SmartRF Studio 测量底噪测试?您需要使用 SmartRF Studio 中的 Continuous RX 选项卡。

    他们会得到类似这样的结果: