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.

TMS320F280039C: CAN(非MCAN)接收数据区分邮箱问题

Part Number: TMS320F280039C

使用两个CAN邮箱做接收,采用20ms轮询的方式做接收解析,遇到CAN_NDAT_21寄存器问题

下面是我的CAN邮箱配置:

CAN_setupMessageObject(CANA_BASE, 1, 0x15555555, CAN_MSG_FRAME_EXT, CAN_MSG_OBJ_TYPE_TX, 0, CAN_MSG_OBJ_NO_FLAGS, 8);

//accept if ((incomeID & IdMsk) == (objID & IdMsk)) : 0x045XF1XX
CAN_setupMessageObject(CANA_BASE, 2, 0x0450F100,
CAN_MSG_FRAME_EXT, CAN_MSG_OBJ_TYPE_RX, 0x11101100,
CAN_MSG_OBJ_USE_ID_FILTER, 8);

//accept 0x049XF1XX
CAN_setupMessageObject(CANA_BASE, 3, 0x0490F100,
CAN_MSG_FRAME_EXT, CAN_MSG_OBJ_TYPE_RX, 0x11101100,
CAN_MSG_OBJ_USE_ID_FILTER, 8);

这里是我的轮询的接收函数:

void t20ms_Task(void)

{

  if((CanaRegs.CAN_NDAT_21 == 2)&&(((CanaRegs.CAN_IF2CMD.all) & CAN_IF2CMD_BUSY) != CAN_IF2CMD_BUSY))
  {
      CAN_readMessageWithID(CANA_BASE, 2, &CanRxData.FrameType, &CanRxData.DCCanId, CanRxData.CanData.data);

      //Parse CAN data

  }

第一个问题:请问CAN_NDAT_21的作用是什么?

第二个问题:只配置邮箱2时,20ms的任务是可以进行CAN数据接收解析的,但是如果配置了邮箱2、3,就无法正常工作

期待社区大佬解惑!