NuMaker M480 & M451 support CAN mask

pull/15026/head
cyliangtw 2021-08-24 17:21:01 +08:00
parent 4866c79aec
commit 3198bab7c6
2 changed files with 22 additions and 3 deletions

View File

@ -284,9 +284,19 @@ int can_mode(can_t *obj, CanMode mode)
} }
int can_filter(can_t *obj, uint32_t id, uint32_t mask, CANFormat format, int32_t handle) int can_filter(can_t *obj, uint32_t id, uint32_t mask, CANFormat format, int32_t handle)
{
uint32_t numask = mask;
if( numask == 0x0000 )
{ {
return CAN_SetRxMsg((CAN_T *)NU_MODBASE(obj->can), handle, (uint32_t)format, id); return CAN_SetRxMsg((CAN_T *)NU_MODBASE(obj->can), handle, (uint32_t)format, id);
} }
if( format == CANStandard )
{
numask = (mask << 18);
}
numask = (numask | CAN_IF_MASK2_MDIR_Msk | CAN_IF_MASK2_MXTD_Msk);
return CAN_SetRxMsgAndMsk((CAN_T *)NU_MODBASE(obj->can), handle, (uint32_t)format, id, numask);
}
void can_reset(can_t *obj) void can_reset(can_t *obj)

View File

@ -328,10 +328,19 @@ int can_mode(can_t *obj, CanMode mode)
} }
int can_filter(can_t *obj, uint32_t id, uint32_t mask, CANFormat format, int32_t handle) int can_filter(can_t *obj, uint32_t id, uint32_t mask, CANFormat format, int32_t handle)
{
uint32_t numask = mask;
if( numask == 0x0000 )
{ {
return CAN_SetRxMsg((CAN_T *)NU_MODBASE(obj->can), handle, (uint32_t)format, id); return CAN_SetRxMsg((CAN_T *)NU_MODBASE(obj->can), handle, (uint32_t)format, id);
} }
if( format == CANStandard )
{
numask = (mask << 18);
}
numask = (numask | CAN_IF_MASK2_MDIR_Msk | CAN_IF_MASK2_MXTD_Msk);
return CAN_SetRxMsgAndMsk((CAN_T *)NU_MODBASE(obj->can), handle, (uint32_t)format, id, numask);
}
void can_reset(can_t *obj) void can_reset(can_t *obj)
{ {