In our use case, we connect several Radar sensors through CAN bus. Each radar sensor broadcast the detected objects by CAN messages with the different CAN ID.
We modified the firmaware base on Automotive Mrr Lab Demo and we find 2 issues during our test:
Issue 1. Radar sensor stops working when received message's ID of out of the range
Ex.
Set up the recived message object:
rxMsgObjectParams.direction = CANFD_Direction_RX;
rxMsgObjectParams.msgIdType = CANFD_MCANXidType_29_BIT;
rxMsgObjectParams.msgIdentifier = 0xA1;
rxMsgObjHandle = CANFD_createMsgObject (canHandle, &rxMsgObjectParams, &errCode);
and Set up the received message range:
rxMsgObjectRangeParams.msgIdType = CANFD_MCANXidType_29_BIT;
rxMsgObjectRangeParams.startMsgIdentifier = 0xA1;
rxMsgObjectRangeParams.endMsgIdentifier = 0xA5;
rxMsgObjRangeHandle = CANFD_createRxRangeMsgObject(canHandle, &rxMsgObjectRangeParams, &errCode);
Then, when I broadcast a CAN FD message with CAN ID 0x10, the firmware will stop working immediately.
Issue 2. Radar sensor's running is interrupted
To solve issue 1, I increased the received message range. for example, I set the range to allow all CAN IDs:
rxMsgObjectRangeParams.msgIdType = CANFD_MCANXidType_29_BIT;
rxMsgObjectRangeParams.startMsgIdentifier = 0x00000000;
rxMsgObjectRangeParams.endMsgIdentifier = 0xFFFFFFFF;
rxMsgObjRangeHandle = CANFD_createRxRangeMsgObject(canHandle, &rxMsgObjectRangeParams, &errCode);
Then the issue1 is seems solved, but I find after running the sensors on the same CAN network for while, some sensors stop working again. The log shows the dss stops due to it couldn't receive the frame response on time. I check the description of the function CANFD_createRxRangeMsgObject and I believe that is caused by the CAN messages sent in bulk over the network. These CAN messages interrupt the running of Radar sensor and make the processing delay.
My question is:
I would like to know if there is a solution to allow the radar sensor receive any CAN messages and without interrpution of non-interested CAN ID,
Or a solution just simply fix the issue 1.