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
