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: 20Hz Configuration for Radar Module - Observed packet drops on the CAN bus

Part Number: IWR6843

Tool/software:

Hello,

I am using the CAN interface of the IWR6843 to receive data from the radar. I have used the object_data_over_can example given in the TI site for Automotive Radars for enabling the CAN transmission for the Industrial Radar IWR6843. But, the problem I am facing currently is that if I increase the radar frame periodicity to 20Hz or at 50ms each, I can see some packets are dropped at the CAN Bus level.  When I configure for 5Hz, then the drop is not observed. I have given the configuration I am using below:

"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, 4 = 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 10 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 10 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 -17 17\n",
    "cfarFovCfg -1 0 0 49.99\n",
    "cfarFovCfg -1 1 -30 30.00\n",
    "%SceneryParam -50 50 0.5 60 -6 6\n",
    "staticBoundaryBox -50 50 0.5 60 -0.5 6\n",
    "boundaryBox -50 50 0.5 60 -0.5 6\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",

Can someone tell me if there is any inherent limit to using the radar at 20Hz or what metrics should I be using to decide what should be the max frequency. Any links to relevant documentation where I should be searching is also helpful.

Thanks & Regards,
Prishat

  • Hi,

    We are looking into your query. Please allow us a day or two to respond back.

    Regards

  • Hello.

    Have you made sure to remove any debugging statements or prints that might be slowing down your program?

    Sincerely,

    Santosh

  • Hello,

    Thanks for the suggestions. I have already removed all the debugging statements.

    One important consideration that I forgot to mention is that I am using 4 radars on the same CAN bus with the following addressing scheme:

    MISTRAL_RADAR_HEADER_0          0xC01  
    MISTRAL_RADAR_PACKET_0          0xD01  
    MISTRAL_RADAR_SIDE_INFO_0       0xD07  
    
    MISTRAL_RADAR_HEADER_1          0xC11  
    MISTRAL_RADAR_PACKET_1          0xD11  
    MISTRAL_RADAR_SIDE_INFO_1       0xD17  
    
    MISTRAL_RADAR_HEADER_2          0xC21  
    MISTRAL_RADAR_PACKET_2          0xD21  
    MISTRAL_RADAR_SIDE_INFO_2       0xD27  
    
    MISTRAL_RADAR_HEADER_3          0xC31  
    MISTRAL_RADAR_PACKET_3          0xD31  
    MISTRAL_RADAR_SIDE_INFO_3       0xD37  
    
     

    When I run a single radar, the bus level CAN frame drops are very less, almost non-existent. The issue starts when I plug multiple radars.

    Any suggestions are welcome.

    Thanks & Regards

    Prishat Bachhar

  • Hello Prishat.

    Can you confirm that you 1) have automatic retransmission for all nodes on the CAN bus and 2) make sure all the devices have the same bitrate and bit timing parameters(do not subtract 1 from any value).

    Sincerely,

    Santosh

  • Hello Santosh,

    Clarification for the points you mentioned:

    1) I am using the CANFD_transmitData() driver function. Which I think, does not retransmit inherently, so the application layer has a while loop to send data to it continuously if it fails. Following is the part of the SDK code in canfd.c, from which I am inferring this:

    if (index == (MCAN_getTxBufReqPend(baseAddr) & index))
    {
        *errCode = CANFD_EINUSE;
        retVal = MINUS_ONE;
    }

    2) I have confirmed all the nodes to have the same bitrate configurations (all of the 4 radar nodes and the receiving MCU)

    Is using the while-loop a problem as it continuously sends data to the driver?

    Thanks & Regards,

    Prishat Bachhar

  • Hello Prishat.

    If DAR(automatic retransmission) is set to 0, then the while loop will not be required; the transmit function will automatically retransmit unack'ed frames.  I would double check all of your CAN settings and setup with the CAN Integration guide on the radar toolbox along with the application note linked at the bottom of this guide.  Please make sure everything aligns with this guide and see if it resolves your issue.