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.
Tool/software:
We implemented long range mode(5kbps, SimpleLink Long Range) firmware for our module.
We could not pass the ARIB ST-108 at 920MHz. because of spurious emissions.
When we use SmartRFStudio 2.31.0 for Continous Tx (modulated), It looks OK with same module, same RF parameters.
When we use my firmware, it fail.
When we use 100kbps, 2-GFSK, 50kHz deviation, The Tx wave form looks same between our firmware and SmartRFStudio.
When we use 5kbps, SimpleLink Long Range, The Tx wave form looks different between our firmware and SmartRFStudio.
The rf parameters (RF_cmdPropRadioDivSetup,pOverrides,RF_cmdTestTx) were copied from SmartRFStudio 2.31.0.
The rf paches were copied from simplelink_cc13x0_sdk_4_20_02_07
Are there any other parameters, We need to change?
Is there any example code that use simplelink long range mode?
Hi,
Could you please share the spectrum plots from both when smartRFStudio is transmitting and when your FW is used?
Hi TK,
To move this issue forward:
Regards,
Zack
We already have FW for GFSK.
We changed only RF settings and patches to use long range mode.
Our FW use driverlib.lib.
We call the following APIs for setup
RFC_selectRadioMode
RFC_enableRadio
RFC_setupRadio((rfc_radioOp_t*)&RF_cmdPropRadioDivSetup);
RFC_sendRadioOp((rfc_radioOp_t*)&RF_cmdFs);
Then call the following API for start Tx.
RFC_sendRadioOp_nb((rfc_radioOp_t*)&RF_cmdTxTest, NULL);
This is the settings from SmartRF Studio.
We changed Frequency to 920.6MHz and TX Power to 12.5dBm.
We use these parameters.
//*********************************************************************************
// Generated by SmartRF Studio version 2.31.0 (build#400)
// The applied template is compatible with CC13x0 SDK version 2.10.xx.xx or newer.
// Device: CC1310 Rev. B (2.1).
//
//*********************************************************************************
//*********************************************************************************
// Parameter summary
// RX Address0: 0xAA
// RX Address1: 0xBB
// RX Address Mode: No address check
// Frequency: 920.60001 MHz
// Data Format: Serial mode disable
// Deviation: 5.000 kHz
// Packet Length Config: Variable
// Max Packet Length: 255
// Packet Length: 20
// Packet Data: 255
// RX Filter BW: 49.0 kHz
// Symbol Rate: 19.99969 kBaud
// Sync Word Length: 32 Bits
// TX Power: 12.5 dBm
// Whitening: CC1101/CC2500 compatible
#include "smartrf_settings.h"
#include DeviceFamily_constructPath(rf_patches/rf_patch_cpe_sl_longrange.h)
#include DeviceFamily_constructPath(rf_patches/rf_patch_rfe_sl_longrange.h)
#include DeviceFamily_constructPath(rf_patches/rf_patch_mce_sl_longrange.h)
// TI-RTOS RF Mode Object
RF_Mode RF_prop =
{
.rfMode = RF_MODE_PROPRIETARY_SUB_1,
.cpePatchFxn = &rf_patch_cpe_sl_longrange,
.mcePatchFxn = &rf_patch_mce_sl_longrange,
.rfePatchFxn = &rf_patch_rfe_sl_longrange
};
// Overrides for CMD_PROP_RADIO_DIV_SETUP
uint32_t pOverrides[] =
{
// override_use_patch_simplelink_long_range.xml
// PHY: Use MCE RAM patch, RFE RAM patch
MCE_RFE_OVERRIDE(1,0,0,1,0,0),
// override_synth_prop_863_930_div5_lbw60k.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 60 kHz
(uint32_t)0x40410583,
// Synth: Set loop bandwidth after lock to 60 kHz
(uint32_t)0x32CC0603,
// Synth: Set loop bandwidth after lock to 60 kHz
(uint32_t)0x00010623,
// 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_div5.xml
// Synth: Set divider bias to disabled
HW32_ARRAY_OVERRIDE(0x405C,1),
// Synth: Set divider bias to disabled (specific for loDivider=5)
(uint32_t)0x18000200,
// 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_0x14.xml
// Tx: Configure PA ramping setting (0x41). Rx: Set AGC reference level to 0x14.
HW_REG_OVERRIDE(0x6088,0x4114),
// Tx: Configure PA ramping setting
HW_REG_OVERRIDE(0x608C,0x8213),
// override_phy_long_range_dsss2.xml
// PHY: Configure DSSS SF=2
HW_REG_OVERRIDE(0x505C,0x0100),
// override_phy_rx_rssi_offset_5db.xml
// Rx: Set RSSI offset to adjust reported RSSI by +5 dB (default: 0), trimmed for external bias and differential configuration
(uint32_t)0x00FB88A3,
(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 = 0x1,
.modulation.deviation = 0x14,
.symbolRate.preScale = 0xF,
.symbolRate.rateWord = 0x3333,
.symbolRate.decimMode = 0x0,
.rxBw = 0x21,
.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,
.txPower = 0xA63F,
.pRegOverride = pOverrides,
.centerFreq = 0x0398,
.intFreq = 0x8000,
.loDivider = 0x05
};
// 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 = 0x0398,
.fractFreq = 0x999A,
.synthConf.bTxMode = 0x0,
.synthConf.refFreq = 0x0,
.__dummy0 = 0x00,
.__dummy1 = 0x00,
.__dummy2 = 0x00,
.__dummy3 = 0x0000
};
// CMD_TX_TEST
// Transmitter Test Command
rfc_CMD_TX_TEST_t RF_cmdTxTest =
{
.commandNo = 0x0808,
.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,
.config.bUseCw = 0x0,
.config.bFsOff = 0x1,
.config.whitenMode = 0x2,
.__dummy0 = 0x00,
.txWord = 0xAAAA,
.__dummy1 = 0x00,
.endTrigger.triggerType = 0x1,
.endTrigger.bEnaCmd = 0x0,
.endTrigger.triggerNo = 0x0,
.endTrigger.pastTrig = 0x0,
.syncWord = 0x00000000,
.endTime = 0x00000000
};
Hi,
Apologies for the delay; this has not been forgotten and we are following this up this week. I have looped in a SW colleague for their input on the FW implementation.
Regards,
Zack
Hi,
I see that in your firmware, you are using the following txPower:
while SmartRF Studio 7 gives out the following by default:
This means that your firwmare is outputing at 12.5 dBm, is that expected?
Regards,
Arthur
Yes, we use 12.5dBm.
The Tx Power of the ARIB ST-108 must be less than 13dBm at 920 MHz
Hi,
We will try to reproduce what you are seeing in our lab. Expect results towards Friday.
Regards,
Arthur
Hi TK,
In the meantime, can you also run your test using our rfCarrierWave example, with your settings?
Regards,
Arthur
Hi again,
When using the rfCarrierWave example, and your settings from SmartRF Studio 7, there is no difference in the spectrum.
Please use the RF driver (RF.h) and our examples for your development, and your characterization work.
#include <ti/drivers/rf/RF.h>
Regards,
Arthur
Thank you for your feedback.
We will try rfCarrierWave example and check the difference between our code.