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.

[参考译文] CC1312R:EasyLink 在169 MHz 频段上不工作

Guru**** 2425550 points
Other Parts Discussed in Thread: LAUNCHXL-CC1312R1

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/sub-1-ghz-group/sub-1-ghz/f/sub-1-ghz-forum/1114623/cc1312r-easylink-not-working-on-169-mhz-band

器件型号:CC1312R

你好,我是

由于我们目前正在开发的应用、我想在169 MHz 频带的应用中使用 Easylink

我成功地使 rfEasyLinkEchoTx/Rx 在868和433MHz 频带下工作、但我在 169 MHz 频带下工作时遇到问题。

我首先尝试使用  .syscfg ,其中一些。 我能够解决除以下错误之外的大多数编译器错误消息

我尝试按照 "帮助"公式更改退避时间单位、但错误消息保持 不变。


我还使用 Smart RF Studio 生成169 MHz 的自定义"ti_radio_config.c"  、并设置.syscfg 以进行拖动。 这一次我成功地编译并正确启动(因为在编译和上电后红色和绿色 LED 开始闪烁)、但我无法从 Rx 侧接收任何消息。  

注意: 生成的169 MHz 对应的"ti_radio_config.c"与"rfEchoTx/RF"示例配合使用(该示例仅使用射频内核驱动程序、而不是 EasyLink 层)

如果您有任何建议或在 169 MHz 频段上运行的示例、将会非常有用


此致

安德烈斯

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Andreas:

    您使用的是什么板、是定制板还是我们的 LaunchPad 之一? 此外、您还使用哪个 SDK 版本?

    此致、

    Arthur

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Arthur!我将原始 LAUNCHXL-CC1312R1用作硬件平台

    对于 CC13xx 和 CC26xx、我的 SDK 版本为6_10_00_29

    此致

    安德烈斯

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    安德烈斯、您好!

    我设法重现了这个问题。 我将寻找权变措施。

    此致、

    Arthur

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Andres:


    在查看 SDK 时、我们注意到 EasyLink 不支持169 MHz 频带。 我建议您直接使用 Prop RF 命令、因为它们可以让您更加透明地了解正在执行的操作。 我们在这里有一个有关它的教程:

    https://dev.ti.com/tirex/explore/node?node=AJAcwn0VMpYeOkBIEkJn1w__BSEc4rl__LATEST

    此致、

    Arthur

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Arthur

    很遗憾知道这一点、EasyLink 库中的函数最终将作为一种灵感来创建我自己的射频协议。

    非常感谢您的参与和支持。

    如果需要帮助、我将继续自己的工作并打开另一个线程

    此致

    安德烈斯

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    大家好!我成功创建了 EasyLink  

    为此、我执行了以下操作:

    从 项目 wizzard 导入 rfEasyLinkEchoTx。

    在.syscfg->Easylink 内部,我选择了作为“默认 PHY”: 5kbps,SimpleLink 远距离

    -保存并构建代码。

    -将"ti_radio_config.c"和  "ti_radio_config.h"(位于 Debug/Syscnf 中)复制 到 main.c 所在的目录(在本例中为"rfEasyLinkEchoTx.c")

    -在 .syscfg->Easylink 中 ,我选中了“使用传统 SmartRF Studio 设置”

    -在 .syscfg->RF 设计中,选择"169 MHz"作为频段

    -从这一点开始、打开 Smart RF 7或创建频率范围为169MHz 的 RF 回波(不容易链接)项目

    -转至 刚刚复制的"ti_radio_config.c"、并使用 从 Smart RF 7或169MHz RF 回显示例获取的频率值更改 RF_PropcmdDivSetup 结构内的字段".centerFreq = 0x0097、.intFreq = 0x8000"(这些值对应于150MHz 频率)。 您还应正确复制和映射电源表(txPowerTable)以使其正常工作。

    编译代码。 电路板应进行接收并启动 Tx 过程  

    -对  rfEasyLinkEchoRx 执行相同的操作(如果您有2块电路板)并进行测试

    我针对  rfEasyLinkEcho 示例(Tx 和 Rx)执行了此操作、并成功运行!

    以下是我编辑过 的 ti_radio_config.c"和 ti_radio_config.h 的代码、这些代码目前正在工作

    /*
     *  ======== ti_radio_config.c ========
     *  Configured RadioConfig module definitions
     *
     *  DO NOT EDIT - This file is generated for the CC1312R1F3RGZ
     *  by the SysConfig tool.
     *
     *  Radio Config module version : 1.13
     *  SmartRF Studio data version : 2.25.0
     */
    
    #include "ti_radio_config.h"
    #include DeviceFamily_constructPath(rf_patches/rf_patch_cpe_multi_protocol.h)
    
    
    // *********************************************************************************
    //   RF Frontend configuration
    // *********************************************************************************
    // RF design based on: LAUNCHXL-CC1312R1 (CC1352EM-XD7793-XD24)
    
    // TX Power tables
    // The RF_TxPowerTable_DEFAULT_PA_ENTRY and RF_TxPowerTable_HIGH_PA_ENTRY macros are defined in RF.h.
    // The following arguments are required:
    // RF_TxPowerTable_DEFAULT_PA_ENTRY(bias, gain, boost, coefficient)
    // RF_TxPowerTable_HIGH_PA_ENTRY(bias, ibboost, boost, coefficient, ldoTrim)
    // See the Technical Reference Manual for further details about the "txPower" Command field.
    // The PA settings require the CCFG_FORCE_VDDR_HH = 0 unless stated otherwise.
    
    // 868 MHz, 13 dBm
    // 169 MHz, 10 dBm
    RF_TxPowerTable_Entry txPowerTable_169[TX_POWER_TABLE_SIZE] =
    {
        {-13, RF_TxPowerTable_DEFAULT_PA_ENTRY(6, 3, 0, 4) }, // 0x08C6
        {-11, RF_TxPowerTable_DEFAULT_PA_ENTRY(7, 3, 0, 4) }, // 0x08C7
        {-7, RF_TxPowerTable_DEFAULT_PA_ENTRY(10, 3, 0, 4) }, // 0x08CA
        {-3, RF_TxPowerTable_DEFAULT_PA_ENTRY(8, 2, 0, 7) }, // 0x0E88
        {-2, RF_TxPowerTable_DEFAULT_PA_ENTRY(9, 2, 0, 7) }, // 0x0E89
        {-1, RF_TxPowerTable_DEFAULT_PA_ENTRY(10, 2, 0, 7) }, // 0x0E8A
        {0, RF_TxPowerTable_DEFAULT_PA_ENTRY(20, 3, 0, 7) }, // 0x0ED4
        {1, RF_TxPowerTable_DEFAULT_PA_ENTRY(22, 3, 0, 7) }, // 0x0ED6
        {2, RF_TxPowerTable_DEFAULT_PA_ENTRY(24, 3, 0, 7) }, // 0x0ED8
        {3, RF_TxPowerTable_DEFAULT_PA_ENTRY(27, 3, 0, 7) }, // 0x0EDB
        {4, RF_TxPowerTable_DEFAULT_PA_ENTRY(30, 3, 0, 7) }, // 0x0EDE
        {5, RF_TxPowerTable_DEFAULT_PA_ENTRY(20, 2, 0, 12) }, // 0x1894
        {6, RF_TxPowerTable_DEFAULT_PA_ENTRY(18, 1, 0, 12) }, // 0x1852
        {7, RF_TxPowerTable_DEFAULT_PA_ENTRY(12, 0, 0, 12) }, // 0x180C
        {8, RF_TxPowerTable_DEFAULT_PA_ENTRY(27, 1, 0, 19) }, // 0x265B
        {9, RF_TxPowerTable_DEFAULT_PA_ENTRY(25, 0, 0, 28) }, // 0x3819
        {10, RF_TxPowerTable_DEFAULT_PA_ENTRY(63, 0, 0, 0) }, // 0x003F
        RF_TxPowerTable_TERMINATION_ENTRY
    };
    
    //txPowerTable=txPowerTable_866;
    
    
    //*********************************************************************************
    //  RF Setting:   SimpleLink Long Range, 5 kbps (20 ksps), 5 kHz Deviation, 2-GFSK, 34 kHz RX Bandwidth, FEC = 1:2, DSSS = 1:2
    //
    //  PHY:          slr5kbps2gfsk
    //  Setting file: setting_tc480.json
    //*********************************************************************************
    
    // PARAMETER SUMMARY
    // RX Address0: 0xAA
    // RX Address1: 0xBB
    // RX Address Mode: No address check
    // Frequency (MHz): 150.0000
    // Deviation (kHz): 5.0
    // Fixed Packet Length: 20
    // Packet Length Config: Variable
    // Max Packet Length: 255
    // Preamble Count: 2 Bytes
    // Preamble Mode: Send 0 as the first preamble bit
    // RX Filter BW (kHz): 34.1
    // Symbol Rate (kBaud): 20.000
    // Sync Word: 0x0
    // Sync Word Length: 32 Bits
    // TX Power (dBm): 10
    // Whitening: CC1101/CC2500 compatible
    
    // TI-RTOS RF Mode Object
    RF_Mode RF_prop =
    {
        .rfMode = RF_MODE_AUTO,
        .cpePatchFxn = &rf_patch_cpe_multi_protocol,
        .mcePatchFxn = 0,
        .rfePatchFxn = 0
    };
    // Overrides for CMD_PROP_RADIO_DIV_SETUP
    uint32_t pOverrides[] =
    		{
    		    // override_prop_common.xml
    		    // DC/DC regulator: In Tx, use DCDCCTL5[3:0]=0x7 (DITHER_EN=0 and IPEAK=7).
    		    (uint32_t)0x00F788D3,
    		    // override_prop_common_sub1g.xml
    		    // Set RF_FSCA.ANADIV.DIV_SEL_BIAS = 1. Bits [0:16, 24, 30] are don't care..
    		    (uint32_t)0x4001405D,
    		    // Set RF_FSCA.ANADIV.DIV_SEL_BIAS = 1. Bits [0:16, 24, 30] are don't care..
    		    (uint32_t)0x08141131,
    		    // override_tc220_tc221_ch6_tx.xml
    		    // Synth: Set loop bandwidth after lock to 60 kHz (K2)
    		    (uint32_t)0x40410583,
    		    // Synth: Set loop bandwidth after lock to 60 kHz (K2)
    		    (uint32_t)0x000005A3,
    		    // Synth: Set loop bandwidth after lock to 60 kHz (K3, LSB)
    		    (uint32_t)0x32CC0603,
    		    // Synth: Set loop bandwidth after lock to 60 kHz (K3, MSB)
    		    (uint32_t)0x00010623,
    		    // Synth: Set FREF = 8 (48 MHz/6) MHz
    		    (uint32_t)0x000684A3,
    		    // Tx: Configure PA ramp time, PACTL2.RC=0x1 (in ADI0, set PACTL2[4:3]=0x1)
    		    ADI_2HALFREG_OVERRIDE(0,16,0x8,0x8,17,0x1,0x1),
    		    // Tx: Set wait time before turning off ramp to 0x1A (default: 0x1F)
    		    HW_REG_OVERRIDE(0x6028,0x001A),
    		    // Tx: Set repetition factor = 2
    		    HW_REG_OVERRIDE(0x5324,0x0002),
    		    (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,
        .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 = 0x14,
        .modulation.deviationStepSz = 0x0,
        .symbolRate.preScale = 0xF,
        .symbolRate.rateWord = 0x3333,
        .symbolRate.decimMode = 0x0,
        .rxBw = 0x4C,
        .preamConf.nPreamBytes = 0x2,
        .preamConf.preamMode = 0x0,
        .formatConf.nSwBits = 0x20,
        .formatConf.bBitReversal = 0x0,
        .formatConf.bMsbFirst = 0x0,
        .formatConf.fecMode = 0x8,
        .formatConf.whitenMode = 0x1,
        .config.frontEndMode = 0x0,
        .config.biasMode = 0x1,
        .config.analogCfgMode = 0x0,
        .config.bNoFsPowerUp = 0x0,
        .config.bSynthNarrowBand = 0x0,
        .txPower = 0x003F,
        .pRegOverride = pOverrides,
        .centerFreq = 0x0097,
        .intFreq = 0x8000,
        .loDivider = 0x1E
    };
    
    // CMD_FS
    // Frequency Synthesizer Programming Command
    rfc_CMD_FS_t RF_cmdFs =
    {
        .commandNo = 0x0803,
        .status = 0x0000,
        .pNextOp = 0,
        .startTime = 0x00000000,
        .startTrigger.triggerType = 0x0,
        .startTrigger.bEnaCmd = 0x0,
        .startTrigger.triggerNo = 0x0,
        .startTrigger.pastTrig = 0x0,
        .condition.rule = 0x1,
        .condition.nSkip = 0x0,
        .frequency = 0x0097,
        .fractFreq = 0x7334,
        .synthConf.bTxMode = 0x0,
        .synthConf.refFreq = 0x0,
        .__dummy0 = 0x00,
        .__dummy1 = 0x00,
        .__dummy2 = 0x00,
        .__dummy3 = 0x0000
    };
    
    // CMD_PROP_TX
    // Proprietary Mode Transmit Command
    rfc_CMD_PROP_TX_t RF_cmdPropTx =
    {
        .commandNo = 0x3801,
        .status = 0x0000,
        .pNextOp = 0,
        .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 = 0x1,
        .pktLen = 0x14,
        .syncWord = 0x00000000,
        .pPkt = 0
    };
    
    // CMD_PROP_RX_ADV
    // Proprietary Mode Advanced Receive Command
    rfc_CMD_PROP_RX_ADV_t RF_cmdPropRxAdv =
    {
        .commandNo = 0x3804,
        .status = 0x0000,
        .pNextOp = 0,
        .startTime = 0x00000000,
        .startTrigger.triggerType = 0x0,
        .startTrigger.bEnaCmd = 0x0,
        .startTrigger.triggerNo = 0x0,
        .startTrigger.pastTrig = 0x0,
        .condition.rule = 0x0,
        .condition.nSkip = 0x0,
        .pktConf.bFsOff = 0x0,
        .pktConf.bRepeatOk = 0x0,
        .pktConf.bRepeatNok = 0x0,
        .pktConf.bUseCrc = 0x0,
        .pktConf.bCrcIncSw = 0x0,
        .pktConf.bCrcIncHdr = 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,
        .syncWord0 = 0x00000000,
        .syncWord1 = 0x00000000,
        .maxPktLen = 0x00FF,
        .hdrConf.numHdrBits = 0x0,
        .hdrConf.lenPos = 0x0,
        .hdrConf.numLenBits = 0x0,
        .addrConf.addrType = 0x0,
        .addrConf.addrSize = 0x0,
        .addrConf.addrPos = 0x0,
        .addrConf.numAddr = 0x0,
        .lenOffset = 0x00,
        .endTrigger.triggerType = 0x0,
        .endTrigger.bEnaCmd = 0x0,
        .endTrigger.triggerNo = 0x0,
        .endTrigger.pastTrig = 0x0,
        .endTime = 0x00000000,
        .pAddr = 0,
        .pQueue = 0,
        .pOutput = 0
    };
    

    /*
     *  ======== ti_radio_config.h ========
     *  Configured RadioConfig module definitions
     *
     *  DO NOT EDIT - This file is generated for the CC1312R1F3RGZ
     *  by the SysConfig tool.
     *
     *  Radio Config module version : 1.13
     *  SmartRF Studio data version : 2.25.0
     */
    #ifndef _TI_RADIO_CONFIG_H_
    #define _TI_RADIO_CONFIG_H_
    
    #include <ti/devices/DeviceFamily.h>
    #include DeviceFamily_constructPath(driverlib/rf_mailbox.h)
    #include DeviceFamily_constructPath(driverlib/rf_common_cmd.h)
    #include DeviceFamily_constructPath(driverlib/rf_prop_cmd.h)
    #include <ti/drivers/rf/RF.h>
    
    /* SmartRF Studio version that the RF data is fetched from */
    #define SMARTRF_STUDIO_VERSION "2.25.0"
    
    // *********************************************************************************
    //   RF Frontend configuration
    // *********************************************************************************
    // RF design based on: LAUNCHXL-CC1312R1 (CC1352EM-XD7793-XD24)
    #define LAUNCHXL_CC1312R1
    
    // RF frontend configuration
    #define FRONTEND_SUB1G_DIFF_RF
    #define FRONTEND_SUB1G_EXT_BIAS
    
    // Supported frequency bands
    #define SUPPORT_FREQBAND_169
    
    // TX power table size definitions
    #define TXPOWERTABLE_169_PA13_SIZE 18 // 169 MHz, 10 dBm
    
    // TX power tables
    extern RF_TxPowerTable_Entry txPowerTable_169[]; // 169 MHz, 10 dBm
    
    #define txPowerTable txPowerTable_169
    
    
    //*********************************************************************************
    //  RF Setting:   SimpleLink Long Range, 5 kbps (20 ksps), 5 kHz Deviation, 2-GFSK, 34 kHz RX Bandwidth, FEC = 1:2, DSSS = 1:2
    //
    //  PHY:          slr5kbps2gfsk
    //  Setting file: setting_tc480.json
    //*********************************************************************************
    
    // PA table usage
    //#define RF_PROP_TX_POWER_TABLE_SIZE TXPOWERTABLE_169_PA13_SIZE
    #define TX_POWER_TABLE_SIZE TXPOWERTABLE_169_PA13_SIZE
    
    
    // TI-RTOS RF Mode object
    extern RF_Mode RF_prop;
    
    // RF Core API commands
    extern rfc_CMD_PROP_RADIO_DIV_SETUP_t RF_cmdPropRadioDivSetup;
    extern rfc_CMD_FS_t RF_cmdFs;
    extern rfc_CMD_PROP_TX_t RF_cmdPropTx;
    extern rfc_CMD_PROP_RX_ADV_t RF_cmdPropRxAdv;
    
    // RF Core API overrides
    extern uint32_t pOverrides[];
    
    #endif // _TI_RADIO_CONFIG_H_
    

    此致

    安德烈斯