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如何配置433M频段

Other Parts Discussed in Thread: CC1310, SIMPLICITI

使用cc1310,配置成433M频段,ti给的例子rfEasyLink,里面是868MHz的。EasyLink_setFrequency(868000000);,如果要使用433M,请问除了修改这里还需要修改哪里吗?我修改了这里,程序运行时返回错误。

请指教!谢谢。

  • smartrf_settings.c里面,需要改几个override和几个settings。

    安装最新的martrf studio 7, 然后用code export导出配置,把相关项合到你的.c里就好了。相关项你就是比较一下868和433的配置就好了。

    BR. AZ

  • hi~,AZ.我用smartrf studio 生成两个文件,然后把工程里面的smartrf_settings.h和smartrf_settings.c两个文件直接替换掉,smartrf studio用的是最新的,配置界面如下:

    然后修改rfEasyLinkTx.c文件里面的EasyLink_setFrequency(433920000);,下载到板子上,运行后还是提示错误。

    请问我有什么地方没有操作对吗?

  • 覆盖smartstudio导出的配置就可以了,不需要调用EasyLink_setFrequency,保持

    EasyLink_init(EasyLink_Phy_Custom) 就可以了。如下附件供参考


  • 好的,谢谢。我实时看。

  •  我的意思是你还是要用原来可以编译过的,只是替换部分相关参数。

    BR.AZ

  • 只是改频率很简单,频率只跟工程里的文件smartrf_settings.c定义的两个结构体有关:

    // 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 = 0x1,
        .condition.nSkip = 0x0,
        .modulation.modType = 0x1,
        .modulation.deviation = 0x64,
        .symbolRate.preScale = 0xF,
        .symbolRate.rateWord = 0x8000,
        .rxBw = 0x24,
        .preamConf.nPreamBytes = 0x4,
        .preamConf.preamMode = 0x0,
        .formatConf.nSwBits = 0x20,
        .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 = 0xA73F,
        .pRegOverride = pOverrides,
        .centerFreq = 0x0364,      //=0x0364是868M,   =0x01B1是433M
        .intFreq = 0x8000,
        .loDivider = 0x05,
    };
    // 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 = 0x1,
        .condition.nSkip = 0x0,
        .frequency = 0x0364,  //=0x0364是868M,   =0x01B1是433M
        .fractFreq = 0x0000,
        .synthConf.bTxMode = 0x0,
        .synthConf.refFreq = 0x0,
        .__dummy0 = 0x00,
        .__dummy1 = 0x00,
        .__dummy2 = 0x00,
        .__dummy3 = 0x0000,
    };
    只需要修改黄色的地方即可,EasyLink_setFrequency(868000000);,只是改变rfc_CMD_FS_t RF_cmdFs这个结构体里面的值,你还需要改变rfc_CMD_PROP_RADIO_DIV_SETUP_t RF_cmdPropRadioDivSetup这个结构体的值。
  • hi,Eggsy Pang

    我试验了你的方法,还是有问题。就是只改动两个变量值,依然不能正常。

    我尝试了这些方法(1)用smartRF studio2.4.3生成smartrf_settings.c,并对应着工程文件里面的smartrf_settings进行修改了变动的地方,依然无法正常运行;(2)复制TY上传的源代码,直接把工程文件里面的smartrf_settings.c覆盖掉,依然无法正常运行。

    对比TY的smartrf_settings.c文件和smartRF studio生成的文件,改动地方是一样的。

    最后,我在e2e.ti.com上面找到一篇帖子,http://e2e.ti.com/support/wireless_connectivity/proprietary_sub_1_ghz_simpliciti/f/156/p/501936/1889589#1889589,只修改这么几个地方,发现就可以正常运行了。

    RF_cmdPropRadioDivSetup里面的:

    .centerFreq = 0x01B1,

    .loDivider = 0x0A,

    RF_cmdFs里面的:

    .frequency = 0x01B1,

    如果不修改.loDivider = 0x0A,,就无法正常运行。

    请问这是怎么回事?完全使用smartRF studio生成的文件来替换,不能正常运行,让我很困惑,我也尝试了很多次。

  • 是的,不好意思,我遗漏了这一点,在433M情况下,.loDivider = 0x0A, 和868M的值不同,这个值主要是跟射频内部的驱动电流有关。smartRF studio请下载最新版本,我导出来使用是可以的。

  • bobai,

    (1)用smartRF studio2.4.3生成smartrf_settings.c,并对应着工程文件里面的smartrf_settings进行修改了变动的地方,依然无法正常运行;

    关于这个比较,你的版本里没有显示所有的不同吗?比如iodivider寄存器?


    BR. AZ

  • hi, 

    感谢你的回答,请问一下我用smartrf studio生成的smartrf_settings.c文件里面,还改动了pOverrides里面的参数。

    添加了字段:

    // override_synth_disable_bias_div10.xml
    // Synth: Set divider bias to disabled
    HW32_ARRAY_OVERRIDE(0x405C,1),
    // Synth: Set divider bias to disabled (specific for loDivider=10)
    (uint32_t)0x18000280,

    添加的这两句是disable divider,如果添加了是不是就会禁止loDivider的修改呢?

    以及修改了

    // Rx: Set RSSI offset to adjust reported RSSI by -2 dB
    (uint32_t)0x000288A3,

    868M对应的是:

    // Rx: Set RSSI offset to adjust reported RSSI by +5 dB
    (uint32_t)0x00FB88A3,

    这应该是调整接收灵敏度吧?


  • hi~

    AZ,我确实是按照smartrf studio生成的文件对照的修改的,发现接收不到数据。我是直接用的cc1310_LAUNCHXL下面的两个工程:rfEasyLinkRx_CC1310_LAUNCHXL_TI和rfEasyLinkTx_CC1310_LAUNCHXL_TI修改了smartrf_settings.c进行的测试。

  • Bolai, 

    芯片版本问题了吧?你是revA 还是RevB呢?http://www.ti.com/lit/er/swrz062b/swrz062b.pdf 

    BR.az

  • AZ,你好。首先问下,怎么才能知道手里的芯片是Rev A还是Rev B?
    我之前也查到过Rev A版本的芯片不支持433M,从Rev B开始支持。
    但是我之前在论坛上看到过帖子,说Rev A强制使用433M也是可以的,另外我也问过用1310做433M开发的。
    http://www.deyisupport.com/question_answer/wireless_connectivity/f/45/t/120099.aspx?pi2132219853=1
    我现在完全替换按照smartrf studio生成的smartrf_settings,发现接收不到数据.
    最后请问下cc1310 RevB现在可以买到了吗?
  •  买不买得到,问一下代理商吧。后续应该都是RevB了。

    你用flash programmer 2看一下吧。芯片信息里面有。PGxxxxx

    你看一下你的代码,如果有如下内容,把他comment掉试一下。

        // Set ANADIV.DIV_BIAS_MODE Disable

        // Divider 10

    //    HW32_ARRAY_OVERRIDE(0x405C,1),//////////////////////////////////////////////

    //    (uint32_t)0x18000280,///////////////////////////////////////////////////////

        (uint32_t)0xFFFFFFFF,

    BR.AZ

  • hi~, AZ

    按照你的提示,把下面这两句话注释掉

    // override_synth_disable_bias_div10.xml
    // Synth: Set divider bias to disabled
    //HW32_ARRAY_OVERRIDE(0x405C,1),
    // Synth: Set divider bias to disabled (specific for loDivider=10)
    //(uint32_t)0x18000280,

    然后添加:
    (uint32_t)0xFFFFFFFF,

    就可以收到信息了。

    我之前直接注释掉上面两句,不添加(uint32_t)0xFFFFFFFF,不能收到数据。