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.

TDA4VM: MCAN_ECR错误处理方法

Part Number: TDA4VM


Hi

在CAN接收处理函数中,有如下sample code:

 /* Checking for Errors */
            MCAN_getErrCounters(mcanModAddr, &errCounter);
            if ((0U == errCounter.recErrCnt) &&
                (0U == errCounter.canErrLogCnt))
            {
                MCAN_RxFIFOStatus fifoStatus;
                fifoStatus.num = (uint32_t)MCAN_RX_FIFO_NUM_1;
                MCAN_getRxFIFOStatus(mcanModAddr, &fifoStatus);
                MCAN_readMsgRam(mcanModAddr,
                                MCAN_MEM_TYPE_FIFO,
                                fifoStatus.getIdx,
                                (uint32_t)fifoStatus.num,
                                &rxMsg);
                (void)MCAN_writeRxFIFOAck(mcanModAddr,
                                          (uint32_t)fifoStatus.num,
                                          fifoStatus.getIdx);

            }
            else
            {
                appLogPrintf("MCAN: Error in reception %d: rec %d, cel %d!!!\n", inst->index, errCounter.recErrCnt, errCounter.canErrLogCnt);

            }

CAN正常收发的过程中,突然出现无法接收,但是发送是好的。通过log查看ECR寄存器的rec在递减,但是cel一直为0,

请问:

1,出现ECR错误时候该如何处理

2,如何清除ECR寄存器的rec域的值

3,ECR寄存器rec域有变化时候,为何cel的值一直为0