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.

AWR1243: LVDS valid is only active for the first frame

Part Number: AWR1243

Hi, 

I am having problem with getting data after the first frame using the mmwavelink API.

Regardless of what the numFrames is set for the rlSetFrameConfig API, I only get data for the first frame and yet the spectrum analyzer still shows the AWR1243 is chirping as specified. Also, if I send the rlSensorStart command after the frame is finished, I am able to start chirping again but the ADC data is still not available. I wonder if there's some configuration setting that I missed, any clue will be greatly appreciated. 

Here my setup 

RF Version:2.0.0.15

MSS Version:1.10.0.23

MSS Version:1.0.0.0

Sequences of API

  1. rlDevicePowerOn
  2. rlDeviceRfStart
  3. rlSetChannelConfig
    1. rxChannelEn = 15;
      txChannelEn = 1;
      cascading = 0; 

  4. rlSetAdcOutConfig
    1. b2AdcBits = 2;
      b2AdcOutFmt = 1;
      b8FullScaleReducFctr = 0;

  5. rlDeviceSetDataFmtConfig
    1. rxChannelEn=15;
      adcBits=2;
      adcFmt=1;
      iqSwapSel=0;
      chInterleave=0;

  6. rlRfInit
  7. rlDeviceSetDataPathConfig
    1. intfSel = 1
    2. transferFmtPkt0 = 1; 
    3. transferFmtPkt1 = 0;
    4. cqConfig =2;
    5. cq0TransSize = 132;
    6. cq1TransSize = 132;
    7. cq2TransSize = 72;

  8. rlDeviceSetDataPathClkConfig
    1. laneClkCfg = 1;
    2. dataRate =1; 
  1. rlDeviceSetHsiClk
    1. hsiClk = 9;

  2. rlDeviceSetLaneConfig
    1. laneEn = 15;
  3. rlDeviceSetLvdsLaneConfig
    1. laneFmtMap = 0;
    2. laneParamCfg = 1; 
  4. rlSetProfileConfig
    1. profileId = 0;
      pfVcoSelect = 0;
      pfCalLutUpdate = 0;
      startFreqConst = 1435388860;
      idleTimeConst = 350;
      adcStartTimeConst = 440;
      rampEndTime = 6005;
      txOutPowerBackoffCode = 0;
      txPhaseShifter = 0;
      freqSlopeConst = 10;
      txStartTime = 0;
      numAdcSamples = 1024;
      digOutSampleRate = 18750;
      hpfCornerFreq1 = 0;
      hpfCornerFreq2 = 0;
      rxGain = 48;

  5. rlSetChirpConfig
    1. chirpStartIdx = 0;
    2. chirpEndIdx = 0;
    3. profileId = 0;
    4. startFreqVar = 0;
    5. freqSlopeVar = 0;
    6. idleTimeVar = 0;
    7. adcStartTimeVar = 0;
    8. txEnable = 1;
  6. rlSetFrameConfig
    1. chirpStartIdx = 0;
      chirpEndIdx = 0;
      numLoops = 1;
      numFrames = 0;
      numAdcSamples = 2048;
      framePeriodicity = 100000;
      triggerSelect = 1;
      frameTriggerDelay = 0;

  7. rlSensorStart
  • Hi

    Are you using AWR1243 with a host?

    Thank you
    Cesar
  • Did you start with a working (existing) configuration?  If so, how does this differ from it?  If you created it from scratch, what tool did you use?

     -dave

  • Yes, the working configuration was using radar studio to control the AWR1243, and I encounter the issue when I switch to the mmwavelink API to configure the device.
  • A few things:

    1) Your API sequence is close, but not exactly what the firmware is expecting.  I have attached the normal API sequence below.

    2) You should be checking the return code of each call, if you're not already.

    3) Your frame structure is a bit unusual.  You have only 1 chirp per frame, and your frame rate is 0.5ms (2000 frames/sec) if I did the math right.  A typical configuration will do multiple chirp loops per frame, and set the frame rate to 5 to 30 fps.  I'm not saying it won't work, but the normal case is a burst of chirps that run in rapid succession forming a radar cube of transformed chirp samples, which is then processed by higher level algorithms during the "inter frame" period.

    dfp_example_ladder_diagram.pdf

  • 1. I have modified the API sequence to match exactly what the firmware is expecting as described in the attached document. Yet, the problem didn't go away.

    2. Those are already checked, all the return code for the APIs return 0 (no-error). On top of that, the only async events I received are

    RL_DEV_ASYNC_EVENT_MSG msgId:0x280 RL_DEV_AE_MSSPOWERUPDONE_SB AsyncSb:0x0
    RL_DEV_ASYNC_EVENT_MSG msgId:0x280 RL_DEV_AE_RFPOWERUPDONE_SB AsyncSb:0x1
    RL_RF_ASYNC_EVENT_MSG msgId:0x80 RL_RF_AE_INITCALIBSTATUS_SB AsyncSb:0x4
    RL_RF_ASYNC_EVENT_MSG msgId:0x80 RL_RF_AE_FRAME_TRIGGER_RDY_SB AsyncSb:0xB
    RL_RF_ASYNC_EVENT_MSG msgId:0x80 RL_RF_AE_FRAME_END_SB AsyncSb:0xF

    3. I tried multiple chirp loops per frame and the device will operate but the LVDS valid is only active for the first frame.

    Thank you for your help.
  • When running from Radar Studio, you continue to receive LVDS data after the first frame?  If so, perhaps you could get the LVDS configuration that has been written (i.e. AWR_DEV_CONF_GET_MSG) and see how it differs from what your config is setting up. You may need to search AWR1xx_Radar_Interface_Control.pdf to make sure you're sending all commands/parameters required for LVDS.  I did notice a few of your parameters are over the max:

    rlDeviceSetDataPathConfig

    intfSel = 1

    transferFmtPkt0 = 1;

    transferFmtPkt1 = 0;

    cqConfig =2;

    cq0TransSize = 132;

    cq1TransSize = 132;

    cq2TransSize = 72;

  • Yes, when I ran the same settings on Radar Studio, I continue to receive LVDS data after the first frame.

    The LVDS settings are identical, but I will go over the ICD and make sure I am sending all the commands/parameters required for LVDS.

    I think those parameters are ignored, because transferFmtPkt1 is set to 0. I also tried to set them to 0 just want see what happen and the result is the same.


    Thanks again,
  • With all of the reserved fields set to the value specified in the ICD, this is no longer an issue.