Other Parts Discussed in Thread: C2000WARE
想请教一下,关于can模块的设置可以使用官方提供的函数
CAN_setupMessageObject(uint32_t base, uint32_t objID, uint32_t msgID,
CAN_MsgFrameType frame, CAN_MsgObjType msgType,
uint32_t msgIDMask, uint32_t flags, uint16_t msgLen);
以 CAN_setupMessageObject(CANA_BASE, 0x0015, 0x0020, CAN_MSG_FRAME_STD, CAN_MSG_OBJ_TYPE_RX, 0xFFFFFFFF, CAN_MSG_OBJ_NO_FLAGS, 8)为例
用0x0015的邮箱接收ID为0x0020的CAN数据帧,滤波ID为0xFFFFFFFF
这里设置的CAN_MSG_OBJ_NO_FLAGS表示既不触发中断,也不会使用滤波,那是否表示任何数据都可以被0x0015这个邮箱接收呢?即使msgIDMask全为1或者全为0
该位同样可以设置为CAN_MSG_OBJ_USE_ID_FILTER,像请教一下,如果设置为了CAN_MSG_OBJ_USE_ID_FILTER又表示啥意思呢?是否意味着msgIDMask对应位为1的位置必须与数据帧ID0x0020对应上,该数据才可以被接收呢?
我理解在flags未设置滤波的情况下,msgIDMask为0或者1不会对数据的接收有任何影响;当flags设置为采用滤波的时候,msgIDMask为1的位表示需要匹配,即此时数据ID相应位相同的数据才可以被CAN模块收到,而msgIDMask为0的位表示不采用滤波,因此数据ID对应位0或者1均不影响数据的接收。不知道这种理解方式是否正确?
感谢指教。