diff --git a/FlexCAN.cpp b/FlexCAN.cpp index 2033284..1aef1fb 100644 --- a/FlexCAN.cpp +++ b/FlexCAN.cpp @@ -22,6 +22,7 @@ #define FLEXCANb_IDFLT_TAB(b, n) (*(vuint32_t*)(b+0xE0+(n*4))) #define FLEXCANb_MB_MASK(b, n) (*(vuint32_t*)(b+0x880+(n*4))) #define FLEXCANb_ESR1(b) (*(vuint32_t*)(b+0x20)) +#define FLEXCANb_CTRL2(b) (*(vuint32_t*)(b+0x34)) #if defined(__MK66FX1M0__) # define INCLUDE_FLEXCAN_CAN1 @@ -216,6 +217,9 @@ void FlexCAN::begin (uint32_t baud, const CAN_filter_t &mask, uint8_t txAlt, uin setBaudRate(baud); + // need to modify CTRL2 to allow extended frames, even if global mailbox filter is unused + FLEXCANb_CTRL2(flexcanBase) |= (BIT16); + // enable per-mailbox filtering FLEXCANb_MCR(flexcanBase) |= FLEXCAN_MCR_IRMQ;