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.

IWR6843: [IWR6843] unable to configure profile/chirp on IWR6843

Part Number: IWR6843
Other Parts Discussed in Thread: AWR1843BOOST, , AWR1843

Hi 

We have IWR6843ISK, below is SDK version that we are using.

  • CCS 8.3
  • Tool-chain Compiler version: TI v16.9.6LTS
  • SDK 3.0.0.8
  • BIOS : 6.73.1.01

Execute below code in MSS

/* Setup the calibration frequency: */
openCfg.freqLimitLow = 0U;
openCfg.freqLimitHigh = 0U;
openCfg.defaultAsyncEventHandler = MMWave_DefaultAsyncEventHandler_MSS;

/* Initialize the minimal configuration: */
Cfg_ChannelCfgInitParams (&openCfg.chCfg);
Cfg_LowPowerModeInitParams(&openCfg.lowPowerMode);
Cfg_ADCOutCfgInitParams (&openCfg.adcOutCfg);

/* Open the mmWave module: */
if (MMWave_open (gMrrMSSMCB.ctrlHandle, &openCfg, NULL, &errCode) < 0)
{
System_printf ("Error: MMWDemoMSS mmWave open configuration failed [Error code %d]\n", errCode);
return -1;
}

/********************************************************************************
* MMWave Link and BSS is operational now. In minimal mode we have access to all
* the mmWave Link API to perform the configuration
*
* Profile configuration:
********************************************************************************/
Cfg_ProfileCfgInitParams (0U, &profileCfg);
retVal = rlSetProfileConfig (RL_DEVICE_MAP_INTERNAL_BSS, 1U, &profileCfg);
if (retVal != RL_RET_CODE_OK)
{
System_printf ("Error: Unable to configure the profile [Error %d]\n", retVal);
//return -1;
}

/********************************************************************************
* Chirp configuration:
********************************************************************************/
Cfg_ChirpCfgInitParams (0U, &chirpCfg);
retVal = rlSetChirpConfig(RL_DEVICE_MAP_INTERNAL_BSS, 1U, &chirpCfg);
if (retVal != RL_RET_CODE_OK)
{
System_printf ("Error: Unable to configure the chirp [Error %d]\n", retVal);
//return -1;
}

/********************************************************************************
* Frame configuration:
********************************************************************************/
Cfg_FrameCfgInitParams (&frameCfg);
retVal = rlSetFrameConfig(RL_DEVICE_MAP_INTERNAL_BSS, &frameCfg);
if (retVal != RL_RET_CODE_OK)
{
System_printf ("Error: Unable to configure the frame [Error %d]\n", retVal);
//return -1;
}

We got below error message, 

Error: Unable to configure the profile 0 [Error 36]
Error: Unable to configure chirp 0 [Error 63]
Error: Unable to configure chirp 1 [Error 63]
Error: Advanced Frame configuration failed [Error 90]

Below are my questions

1. What the error code meaning?

2. We can do the same thing in AWR1843BOOST with a successful result. But why it fails in IWR6843ISK?

  • We would like to port lab sample code ''lab0012_srr_16xx" to IWR6843ISK.
    * Could you help with the above problem.
    * Are you have any further suggestions of convert lab0012 to IWR6843ISK?

    Thanks a lot
  • Hello,

    Please share the profile.cfg file that you tried on the IWR6843.

    1. We can do the same thing in AWR1843BOOST with a successful result. But why it fails in IWR6843ISK?

    [NS]: Note that AWR1843 operates in the 76-81GHz band while the 6843 operates in the 60-64GHz band so you cannot use the configuration from AWR1843 on IWR6843 if that is what you are trying. You can look at a valid profile config for IWR6843 in the following directory and use that as a reference:

    e.g: C:\ti\mmwave_sdk_03_01_01_02\packages\ti\demo\xwr68xx\mmw\profiles\profile_2d.cfg

    I would also recommend you to use the latest SDK i.e. mmWave SDK 3.1.1.2 as SDK 3.0.0.8 has a firmware issue which could cause the power-up sequence to hang sometimes. This issue has been resolved in SDK 3.1.1.2 so please start using that.

    Regards

    -Nitin 

  • Hi Nitin

    The following settings are the parameters we were used for testing. Thanks a lot.

    /* mmwave configuration for IWR6843 */
    openCfg.freqLimitLow = 0U;
    openCfg.freqLimitHigh = 0U;
    openCfg.defaultAsyncEventHandler = MMWave_DefaultAsyncEventHandler_MSS;
    openCfg.chCfg.rxChannelEn = RX_CHANNEL_1_2_3_4_ENABLE;
    openCfg.chCfg.txChannelEn = TX_CHANNEL_1_2_3_ENABLE;
    openCfg.chCfg.cascading = 0;
    openCfg.lowPowerMode.lpAdcMode = LP_ADC_MODE_LOW_POWER;
    openCfg.adcOutCfg.fmt.b2AdcBits = ADC_BITS_16;
    openCfg.adcOutCfg.fmt.b2AdcOutFmt = ADC_FORMAT_COMPLEX;
    openCfg.adcOutCfg.fmt.b8FullScaleReducFctr = 0;





    /*Profile configuration*/
    #define PROFILE_A_PROFILE_ID (0U)
    #define PROFILE_A_HPFCORNER_FREQ1_VAL RL_RX_HPF1_175_KHz
    #define PROFILE_A_HPFCORNER_FREQ2_VAL RL_RX_HPF2_350_KHz
    #define PROFILE_A_RX_GAIN_VAL (30U)
    #define PROFILE_A_DIGOUT_SAMPLERATE_VAL (5000U)
    #define PROFILE_A_ADC_SAMPLE_VAL (256U)
    #define PROFILE_A_IDLE_TIME_VAL (700U)
    #define PROFILE_A_RAMP_END_TIME_VAL (2400U)
    #define PROFILE_A_START_FREQ_GHZ (60.25f)
    #define PROFILE_A_START_FREQ_VAL (CONV_FREQ_GHZ_TO_CODEWORD(PROFILE_A_START_FREQ_GHZ))
    #define PROFILE_A_TXOUT_POWER_BACKOFF (0U)
    #define PROFILE_A_TXPHASESHIFTER_VAL (0U)
    #define PROFILE_A_FREQ_SLOPE_MHZ_PER_US (20.0f)
    #define PROFILE_A_FREQ_SLOPE_VAL (CONV_SLOPE_MHZ_PER_US_TO_CODEWORD(PROFILE_A_FREQ_SLOPE_MHZ_PER_US))
    #define PROFILE_A_TX_START_TIME_VAL (100U) // 1us
    #define PROFILE_A_ADC_START_TIME_VAL (300U) // 4.8us
    #define PROFILE_A_LAMBDA_MILLIMETER (MMWDEMO_SPEED_OF_LIGHT_IN_METERS_PER_USEC/PROFILE_A_START_FREQ_GHZ)
    profileCfg.profileId = PROFILE_A_PROFILE_ID;
    profileCfg.startFreqConst = PROFILE_A_START_FREQ_VAL;
    profileCfg.idleTimeConst = PROFILE_A_IDLE_TIME_VAL;
    profileCfg.adcStartTimeConst = PROFILE_A_ADC_START_TIME_VAL;
    profileCfg.rampEndTime = PROFILE_A_RAMP_END_TIME_VAL;
    profileCfg.txOutPowerBackoffCode = PROFILE_A_TXOUT_POWER_BACKOFF;
    profileCfg.txPhaseShifter = PROFILE_A_TXPHASESHIFTER_VAL;
    profileCfg.freqSlopeConst = PROFILE_A_FREQ_SLOPE_VAL;
    profileCfg.txStartTime = PROFILE_A_TX_START_TIME_VAL;
    profileCfg.numAdcSamples = PROFILE_A_ADC_SAMPLE_VAL;
    profileCfg.digOutSampleRate = PROFILE_A_DIGOUT_SAMPLERATE_VAL;
    profileCfg.hpfCornerFreq1 = PROFILE_A_HPFCORNER_FREQ1_VAL;
    profileCfg.hpfCornerFreq2 = PROFILE_A_HPFCORNER_FREQ2_VAL;
    profileCfg.rxGain = PROFILE_A_RX_GAIN_VAL;




    /* Chirp configuration */
    #define CHIRP_A_0_PROFILE_ID (0U)
    #define CHIRP_A_0_START_INDEX (0U)
    #define CHIRP_A_0_END_INDEX (63U)
    #define CHIRP_A_0_START_FREQ_VAL (0U)
    #define CHIRP_A_0_FREQ_SLOPE_VAL (0U)
    #define CHIRP_A_0_IDLE_TIME_VAL (0U)
    #define CHIRP_A_0_ADC_START_TIME_VAL (0U)
    #define CHIRP_A_0_TX_CHANNEL (TX_CHANNEL_1_ENABLE)
    chirpCfg.profileId = CHIRP_A_0_PROFILE_ID;
    chirpCfg.adcStartTimeVar = CHIRP_A_0_ADC_START_TIME_VAL;
    chirpCfg.chirpEndIdx = CHIRP_A_0_END_INDEX;
    chirpCfg.chirpStartIdx = CHIRP_A_0_START_INDEX;
    chirpCfg.idleTimeVar = CHIRP_A_0_IDLE_TIME_VAL;
    chirpCfg.txEnable = CHIRP_A_0_TX_CHANNEL;
    chirpCfg.startFreqVar = CHIRP_A_0_START_FREQ_VAL;
    chirpCfg.freqSlopeVar = CHIRP_A_0_FREQ_SLOPE_VAL;
  • Hello,

    Error 36 in rlSetProfileConfig means that the start frequency constant is invalid, as shown below:

    File: C:\ti\mmwave_sdk_03_01_01_02\packages\ti\control\mmwavelink\mmwavelink.h

    #define RL_RET_CODE_PF_START_FREQ_INVAL_IN (36U) /* PF freq const is not with [76GHz,81GHz] in limit */

    (The comment has not been updated to include the 60GHz frequency limits but the error applies to the IWR6843 as well).

    This causes the follow-up errors in rlSetChirpConfig and rlSetFrameConfig as the profile and chirp respectively are not defined, as shown below from the same file:

    #define RL_RET_CODE_CHIRP_PF_IND_1INVAL_IN (63U) /* PF corresponding to PF indx is not defined */

    #define RL_RET_CODE_AFRAME_NCHIRP_1INVAL_IN (90U) /* Chirp used in frame is not configured by Chirp config */

    Please check the function in your code that converts start frequency to the equivalent constant value for the device. You can use the following SDK function as a reference for converting the application parameters to the device constants. You can also use the mmWaveSensing Estimator to get these values for quick testing.

    File: C:\ti\mmwave_sdk_03_01_01_02\packages\ti\utils\cli\src\cli_mmwave.c

    Function: CLI_MMWaveProfileCfg()

    Please mark this thread resolved if this resolves your issue.

    Thanks

    -Nitin