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.

CCS/AWR1443BOOST: how to start "frame start interrupt"

Part Number: AWR1443BOOST
Other Parts Discussed in Thread: AWR1443, , AWR1642BOOST, IWR1443

Tool/software: Code Composer Studio

Hello,

(2018-08-29)

I am trying on making CAN works on AWR1443. I built a new project by copying the SDK demo project, and put code for CAN but it stuck at "Semaphore_pend(dataPathObj->frameStart_semHandle, BIOS_WAIT_FOREVER);" which is waiting for "frame start interrupt". I wonder how this is "frame start interrupt" activated. In the SDK demo it seems activated when I enable the program to read the UART.

(2018-08-30)

I am guessing this is related to the command "sensorStart" in the cfg file. In the "MmwDemo_sensorMgmtTask" there are "sensor_START", "frame_START" and "key_Press" to push state from "STOP" to "START", so if I can send "sensorStart" command without the CLI, it may activate the "frame start interrupt", am I on the track?

Best Regards,

Tao Wang

  • Yes,

    You are correct

    Thank you
    Cesar
  • Hello Cesar,

    Can you give me some more detail. I am struggling in finding how to do that. From the state machine, "INIT" state can transit to "START" with event "sensor_START", but in default "INIT" state transit to "STOP" state. I cannot find how to send the "sensor_START" event to "INIT" state or "STOP" state without CLI or GPIO button (I tried with the button, it seems not work).

    Best Regards,

    Tao 

  • With comparing of the "cli.c" in the SDK and in the ODOC(Object Data Over CAN) demo, I find the way in the demo used for CAN FD: bypass the cli and make a table for the configuration of the radar. But the debug always crash at trying to execute the command "sensorStop" which is the first command for the radar configuration. Is there any extra initialization for the commands to the radar? Or there is some timing for commands to radar?

    As the change of the code cause overflow of program memory, I comment off "Initialize LVDS streaming components", will this affect the command sent to radar?

    Tao

  • Hello Tao,

    The AWR1443BOOST does not support CANFD. Also the ODOC demo is not expected to work on the AWR1443BOOST.

    The AWR1443BOOST only has a CAN interface.

    -Raghu
  • Hello Raghu,

    I know 1443 only has CAN and ODOC demo only works with 1642. This is why I am struggling to make CAN works on 1443. I made it work now, i.e., I know how to send CAN frame from R4F. However, I got new problem: it seems require timing or delay between CAN frames transmitting. I play with "Task_sleep(nTick);" between frames, if nTick is big, I got crash with "{module#8}: "../main.c", line 2344: error {id:0x10000, args:[0x17a24, 0x17a24]} xdc.runtime.Error.raise: terminating execution"; if nTick is small, there will be lost frames. Any advice on how to deal with this problem?

    Best Regards,
    Tao
  • Hello Tao,

    Can you check by increasing your frame periodicity in the frame configuration?

    In the file mss/cli.c   "{"frameCfg 0 1 32 0 100 1 0 \n\r"},"  change the highlighted parameter to higher number.

    Thanks,

    Raghu

  • Hello Raghu,

    Thanks. I tried with 33.333, 66.667, 100, 200, 300, 500, 11.111, 10, it seems not help. I also tried "Frame trigger delay in ms", which seems not work, always failed in configuration.

    You reminds me on the data load, as I activated all the data in guiMonitor (object, range, noise, azimuth, doppler, stat). Anyway, after activation of only "object" and "stat", I still cannot make CAN work fluently. Now I only can make it work in very slow mode with a statement "System_printf" between frames in the transmitting.

    "{"frameCfg 0 1 32 0 100 1 0 \n\r"}," is for ODOC demo, I use "{"frameCfg 0 2 16 0 100 1 0 \n\r"}," . I paste here my whole cfg file, please check if you can find problems of it.

    uint8_t* radarCmdString[MAX_RADAR_CMD] =
    {
    {"sensorStop \n\r"},
    {"flushCfg \n\r"},
    {"dfeDataOutputMode 1 \n\r"},
    {"channelCfg 15 7 0 \n\r"},
    {"adcCfg 2 1 \n\r"},
    {"adcbufCfg 0 1 0 1 \n\r"},
    {"profileCfg 0 77 7 7 57.14 0 0 70 1 240 4884 0 0 34 \n\r"},
    {"chirpCfg 0 0 0 0 0 0 0 1 \n\r"},
    {"chirpCfg 1 1 0 0 0 0 0 4 \n\r"},
    {"chirpCfg 2 2 0 0 0 0 0 2 \n\r"},
    {"frameCfg 0 2 16 0 33.333 1 0 \n\r"},
    {"guiMonitor 1 0 0 0 0 1 \n\r"},
    {"cfarCfg 0 2 8 4 3 0 768 \n\r"},
    {"peakGrouping 1 1 0 1 229 \n\r"},
    {"multiObjBeamForming 1 0.5 \n\r"},
    {"clutterRemoval 0 \n\r"},
    {"calibDcRangeSig 0 -5 8 256 \n\r"},
    {"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\r"},
    {"measureRangeBiasAndRxChanPhase 0 1.5 0.2 \n\r"},
    {"CQRxSatMonitor 0 3 5 123 0 \n\r"},
    {"CQSigImgMonitor 0 119 4 \n\r"},
    {"analogMonitor 1 1 \n\r"},
    {"sensorStart \n\r"},
    };

    Best Regards,
    Tao
  • Hello Tao,

    It is a bit confusing for me when you give reference to ODOC and say you are using it on AWR1443BOOST.

    Have you modified the ODOC with the CAN driver interfaces? Please confirm.

    I am also assuming that you have built the code for the AWR1443 code .

    Also some of the configurations are not supported in the AWR1443.

    You can change the configuration as below for the AWR1443 :

    sensorStop
    flushCfg
    dfeDataOutputMode 1
    channelCfg 15 5 0
    adcCfg 2 1
    adcbufCfg 0 1 0 1
    profileCfg 0 77 7 7 58 0 0 68 1 225 4500 0 0 30
    chirpCfg 0 0 0 0 0 0 0 1
    chirpCfg 1 1 0 0 0 0 0 4
    frameCfg 0 1 16 0 100 1 0
    guiMonitor 1 1 1 0 0 1
    cfarCfg 0 2 8 4 3 0 1200
    peakGrouping 1 1 1 1 224
    multiObjBeamForming 1 0.5
    calibDcRangeSig 0 -5 8 256
    clutterRemoval 0
    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
    measureRangeBiasAndRxChanPhase 0 1.5 0.2
    CQRxSatMonitor 0 3 4 127 0
    CQSigImgMonitor 0 111 4
    analogMonitor 1 1
    sensorStart


    BR,
    Raghu
  • Hello Raghu,

    Thanks. The cfg file I send you is the one used in the "ROS point cloud visualizer", which pass the data through UART. It works well with passing data to UART, but cause problem when sending data to CAN.

    I used your cfg file, it works with "Tash_sleep(1)" between CAN frames sending. I also changed it to 3D:

    ****************************************************

    channelCfg 15 7 0
    chirpCfg 0 0 0 0 0 0 0 1
    chirpCfg 1 1 0 0 0 0 0 4
    chirpCfg 2 2 0 0 0 0 0 2
    frameCfg 0 2 16 0 100 1 0
    guiMonitor 1 0 0 0 0 1

    ****************************************************

    It also works with "Task_sleep(1);", but with much less "objects" compare to the cfg file I used before (9 objects vs. 40 objects).

    Yes, you are right, I firstly tested ODOC with AWR1642BOOST, however it has only two antennas, so only 2D objects. In our application we need 3D objects, so I am working on transmitting data from radar xWR1443 to CAN. 

    I create the project by copying the SDK demo for xWR1443, and add the CAN stuff by referring to

    1. document "Adding CAN Tx and Rx to an Existing mmWave Project"(spracg9);
    2. test code in "driver" fold for CAN in SDK v1.2;
    3. ODOC demo

    Till now, it seems not able to transmit "too" many CAN frames (about 10) in one running, e.g., with my old cfg file in one packet, there is about 40 objects which is 40*12+4=492 bytes which is 492/8=63 CAN frames. It seems in the the transmitting of one packet, if it is "too" big, transmitting to CAN occupy all the CPU and some other tasks that is required are missed.

    As I mentioned the cfg file I sent you is one from the "ROS demo", would you mind give me more details of which may cause problem? I want to get as more "objects" as possible.

    I wonder why "Task_sleep(1)" is required. As I understand, the radar data is read in "interrupt handler", and also the transmitting on CAN is also serviced in "interrupt handler", am I right?

    Best Regards,

    Tao 

  • Tao,

    Have you also explored the option of using the multiple message objects to Tx the data?

    -Raghu
  • Hello Raghu,
    Both your cfg file and mine have the line "multiObjBeamForming 1 0.5", it is already activated, right? How can I play with it?
    Tao
  • Hello Tao,

    The multiObjBeamForming is to enable/disable two peak detection in azimuth for same range and velocity . If this is enabled, a different object with different azimuth can be found for the same range/doppler.

    BR,
    Raghu
  • Hello Raghu,

    Thanks for your answer. So I should keep multiObjBeamForming enabled, and as in most of the demo, the threshold is 0.5, which I will keep it. 

    At last I made CAN works on xWR1443, there is a little difference compared to UART in several demos, I cannot make 30 frames/second, the better I got now is 25 frames/second (frameCfg 0 2 16 0 40 1 0) on AWR1443 and 15 frames/second for IWR1443.

    Best Regards,

    Tao Wang