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: Consistent TX issue on CAN after 90 minutes

Part Number: IWR6843

Tool/software:

Hello,

I am using 4 IWR6843 Radars on a single CAN Bus at 20Hz frequency each. I am observing that after 90 minutes, the radar performance across all 4 deteriorates. By deteriorates, I mean that the effective frequency of the radar decreases. 

I am using the following configuration:

"sensorStop\n",//stop sensor before configuring
	"flushCfg\n",//flush the configuration
	"dfeDataOutputMode 1\n",//frame based chirp configuration
	"channelCfg 15 7 0\n",//15 = 4 antennas 1111b, 7 = azimuth(tx1 & tx3) and elevation(tx2) both the antennas are enabled 111b, n/a
	"adcCfg 2 1\n",//2 = 16-bits adc, 1 = output format complex mode
	"adcbufCfg -1 0 1 1 1\n",//-1 = by default, 0 = adcbuf output format only complex mode, 1 = adcbuf iq swap selection, 1 = non-interleaved, 1 = only 1 supported
	"profileCfg 0 61 35 6 43.0 0 0 8.241 1 125 3433 0 0 48\n",//0 = profile identifier, 60 = frequency 60GHz, 35 = idle time in usec, 6 = adc start time in usec, 43.0 = ramp end time in usec, 0 = txOutPower(always 0), 0 = txPhaseShifter(always 0), 8.241 = freq. slope in MHz, 1 = txStartTime in usec, 125 = numOfADCSamples, 3433 = digOutSampleRate, 0 = HPF1 175KHz, 0 = HPF2 350KHz, 48 = rxGain
	"chirpCfg 0 0 0 0 0 0 0 1\n",// 0 = chirp start index, 0 = chirp end index, 0 = profile identifier, 0 = start freq variation in Hz, 0 = freq slope variation in KHz/us, 0 = idel time variation in us, 0 = adc start time variation in us, 1 = tx enable antenna 001b tx1 enabled & tx2 tx3 disabled
	"chirpCfg 1 1 0 0 0 0 0 2\n",// 1 = chirp start index, 1 = chirp end index, 0 = profile identifier, 0 = start freq variation in Hz, 0 = freq slope variation in KHz/us, 0 = idel time variation in us, 0 = adc start time variation in us, 2 = tx enable antenna 100b tx3 enabled & tx1 tx2 disabled
	"chirpCfg 2 2 0 0 0 0 0 4\n",// 2 = chirp start index, 2 = chirp end index, 0 = profile identifier, 0 = start freq variation in Hz, 0 = freq slope variation in KHz/us, 0 = idel time variation in us, 0 = adc start time variation in us, 4 = tx enable antenna 100b tx3 enabled & tx1 tx2 disabled
	"frameCfg 0 1 128 0 50 1 0\n",//0 = chirp start index, 1 = chirp end index, 128 = doppler chirps, 0 = num of frames, 100 = frame periodicity in ms, 1 = software trigger, 0 = frame trigger delay in ms
	"lowPower 0 0\n",//0 = dont care, 0 = regular adc mode
	"guiMonitor -1 1 0 0 0 0 0\n",//-1 = by default, 1 = enable export of point cloud(x,y,z,doppler,snr,noiseval), 0 = disabled to log magnitude range, 0 = disabled to log noise profile,
	"cfarCfg -1 0 2 8 4 3 0 15 1\n",//-1 = by default, 0 = detection in range direction, 2 = CFAR_CASO, 8 = noise avg window length, 4 = guard length, 3 = division shift, 0 = cyclic/wrap around mode disabled, 10 = threshold scale in dB, 1 = peak groupnig enabled to resolve radar freeze issue
	"cfarCfg -1 1 0 4 2 3 1 15 1\n",//-1 = by default, 1 = detection in doppler direction, 0 = CFAR_CA, 4 = noise avg window length, 2 = guard length, 3 = division shift, 1 = cyclic/wrap around mode enabled, 10 = threshold scale in dB, 1 = peak groupnig enabled to resolve radar freeze issue
	"multiObjBeamForming -1 1 0.5\n",
	"clutterRemoval -1 0\n",//disabled clutter removal to detect static objects
	"calibDcRangeSig -1 0 -5 8 256\n",
	"extendedMaxVelocity -1 0\n",
	"bpmCfg -1 0 0 1\n",
	"lvdsStreamCfg -1 0 0 0\n",
	"compRangeBiasAndRxChanPhase 0.0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0\n",
	"measureRangeBiasAndRxChanPhase 0 1.5 0.2\n",
	"CQRxSatMonitor 0 3 4 63 0\n",
	"CQSigImgMonitor 0 127 4\n",
	"analogMonitor 0 0\n",
	"aoaFovCfg -1 -60 60 -20 20\n",//1 -HFOV +HFOV -VFOV +VFOV
	"cfarFovCfg -1 0 0 49.99\n",//-1 0 0 max detection_range
	"cfarFovCfg -1 1 -30 30.00\n",//-1 1 -speed_in_m/s +speed_in_m/s
	"%SceneryParam -50 50 0.5 60 -6 6\n",
	"staticBoundaryBox -60 60 0 50 -50 50\n",
	"boundaryBox -50 50 0 50 -50 50\n",
	"gatingParam 4 6 6 6 10\n",
	"stateParam 4 10 60 600 20 600\n",
	"allocationParam 30 30 0.5 3 2 2\n",
	"maxAcceleration 0.1 0.1 0.1\n",
	"trackingCfg 1 2 250 20 78 121 99\n",
	"sensorPosition 2 0 0\n",
	"presenceBoundaryBox -3 3 2 6 0.5 2.5\n",
	"sensorStart\r\n",

Is there any other firmware level configuration that I should take into account. Is there a chance that the dss subsystem may be effected by temperature after 90 minutes. Is there a better way to debug this. Can someone please provide some insights.

Thanks,

Prishat Bachhar

  • Hello.

    We are looking into this; please provide us a day or two to provide an update.

    Sincerely,

    Santosh

  • Hello Prishat.

    Can you go through this thread and make sure you have all the following CAN settings for communicating with multiple CAN devices?

    Sincerely,

    Santosh

  • Hello Santosh,

    This is the configuration that I am using.

     mcanCfgParams->fdMode          = 0x1U;
        mcanCfgParams->brsEnable       = 0x1U;
        mcanCfgParams->txpEnable       = 0x0U;
        mcanCfgParams->efbi            = 0x0U;
        mcanCfgParams->pxhddisable     = 0x0U;
        mcanCfgParams->darEnable       = 0x1U;
        mcanCfgParams->wkupReqEnable   = 0x1U;
        mcanCfgParams->autoWkupEnable  = 0x1U;
        mcanCfgParams->emulationEnable = 0x0U;
        mcanCfgParams->emulationFAck   = 0x0U;
        mcanCfgParams->clkStopFAck     = 0x0U;
        mcanCfgParams->wdcPreload      = 0x0U;
        mcanCfgParams->tdcEnable       = 0x1U;
        mcanCfgParams->tdcConfig.tdcf  = 0U;
        mcanCfgParams->tdcConfig.tdco  = 8U;
        mcanCfgParams->monEnable       = 0x0U;
        mcanCfgParams->asmEnable       = 0x0U;
        mcanCfgParams->tsPrescalar     = 0x0U;
        mcanCfgParams->tsSelect        = 0x0U;
        mcanCfgParams->timeoutSelect   = CANFD_MCANTimeOutSelect_CONT;
        mcanCfgParams->timeoutPreload  = 0x0U;
        mcanCfgParams->timeoutCntEnable= 0x0U;
        mcanCfgParams->filterConfig.rrfe        = 0x1U;
        mcanCfgParams->filterConfig.rrfs        = 0x1U;
        mcanCfgParams->filterConfig.anfe        = 0x1U;//0x3U;//0x1U;
        mcanCfgParams->filterConfig.anfs        = 0x1U;//0x3U;//0x1U;
        mcanCfgParams->msgRAMConfig.lss         = 127U;
        mcanCfgParams->msgRAMConfig.lse         = 64U;
        mcanCfgParams->msgRAMConfig.txBufNum    = 32U;
        mcanCfgParams->msgRAMConfig.txFIFOSize  = 0U;
        mcanCfgParams->msgRAMConfig.txBufMode   = 0U;
        mcanCfgParams->msgRAMConfig.txEventFIFOSize         = 0U;
        mcanCfgParams->msgRAMConfig.txEventFIFOWaterMark    = 0U;
        mcanCfgParams->msgRAMConfig.rxFIFO0size             = 0U;
        mcanCfgParams->msgRAMConfig.rxFIFO0OpMode           = 0U;
        mcanCfgParams->msgRAMConfig.rxFIFO0waterMark        = 0U;
        mcanCfgParams->msgRAMConfig.rxFIFO1size             = 64U;
        mcanCfgParams->msgRAMConfig.rxFIFO1waterMark        = 64U;
        mcanCfgParams->msgRAMConfig.rxFIFO1OpMode           = 64U;
    
    
        mcanCfgParams->eccConfig.enable         = 1U;
        mcanCfgParams->eccConfig.enableChk      = 1U;
        mcanCfgParams->eccConfig.enableRdModWr  = 1U;
    
        mcanCfgParams->errInterruptEnable   = 1U;
        mcanCfgParams->dataInterruptEnable  = 1U;
    //    mcanCfgParams->errInterruptEnable   = 0U;//made 0 instead of 1 to communicate multiple radars on same can bus
    //    mcanCfgParams->dataInterruptEnable  = 0U;//made 0 instead of 1 to communicate multiple radars on same can bus
        mcanCfgParams->appErrCallBack       = MCANAppErrStatusCallback;
        mcanCfgParams->appDataCallBack      = MCANAppCallback;

    The only difference from the one suggested in the thread is

    mcanCfgParams->filterConfig.anfe = 0x1U;
    mcanCfgParams->filterConfig.anfs = 0x1U;

    I need the values as 1 to send messages with different IDs from a central MCU.

    Could this be the problem? If so, can you suggest a way forward.

    Thanks,

    Prishat 

  • Hello Prishat.

    Can you try reducing the frame rate to see if the frame rate is too fast?  Since you are only sending pointcloud data, the 20 Hz frame rate shouldn't be a problem, but if you can test with a lower frame rate and see if that improve the data fidelity over a long period of time, that might be something to test.

    Sincerely,

    Santosh