213
213
(uint32_t)kFLEXCAN_ErrorIntFlag | FLEXCAN_MEMORY_ERROR_INIT_FLAG)
214
214
#endif
215
215
#if (defined(FSL_FEATURE_FLEXCAN_HAS_PN_MODE ) && FSL_FEATURE_FLEXCAN_HAS_PN_MODE )
216
+ #if !(defined(FSL_FEATURE_FLEXCAN_HAS_NO_SLFWAK_SUPPORT ) && FSL_FEATURE_FLEXCAN_HAS_NO_SLFWAK_SUPPORT )
216
217
#define FLEXCAN_WAKE_UP_FLAG \
217
218
((uint32_t)kFLEXCAN_WakeUpIntFlag | (uint64_t)kFLEXCAN_PNMatchIntFlag | (uint64_t)kFLEXCAN_PNTimeoutIntFlag)
219
+ #endif
218
220
#else
221
+ #if !(defined(FSL_FEATURE_FLEXCAN_HAS_NO_SLFWAK_SUPPORT ) && FSL_FEATURE_FLEXCAN_HAS_NO_SLFWAK_SUPPORT )
219
222
#define FLEXCAN_WAKE_UP_FLAG ((uint32_t)kFLEXCAN_WakeUpIntFlag)
220
223
#endif
224
+ #endif
221
225
#if (defined(FSL_FEATURE_FLEXCAN_HAS_MEMORY_ERROR_CONTROL ) && FSL_FEATURE_FLEXCAN_HAS_MEMORY_ERROR_CONTROL )
222
226
#define FLEXCAN_MEMORY_ERROR_INIT_FLAG ((uint64_t)kFLEXCAN_AllMemoryErrorFlag)
223
227
#else
@@ -287,12 +291,14 @@ typedef enum _flexcan_clock_source
287
291
kFLEXCAN_ClkSrc1 = 0x1U , /*!< FlexCAN Protocol Engine clock selected by user as SRC == 1. */
288
292
} flexcan_clock_source_t ;
289
293
294
+ #if !(defined(FSL_FEATURE_FLEXCAN_HAS_NO_WAKSRC_SUPPORT ) && FSL_FEATURE_FLEXCAN_HAS_NO_WAKSRC_SUPPORT )
290
295
/*! @brief FlexCAN wake up source. */
291
296
typedef enum _flexcan_wake_up_source
292
297
{
293
298
kFLEXCAN_WakeupSrcUnfiltered = 0x0U , /*!< FlexCAN uses unfiltered Rx input to detect edge. */
294
299
kFLEXCAN_WakeupSrcFiltered = 0x1U , /*!< FlexCAN uses filtered Rx input to detect edge. */
295
300
} flexcan_wake_up_source_t ;
301
+ #endif
296
302
297
303
/*! @brief FlexCAN Rx Fifo Filter type. */
298
304
typedef enum _flexcan_rx_fifo_filter_type
@@ -397,7 +403,9 @@ enum _flexcan_interrupt_enable
397
403
kFLEXCAN_ErrorInterruptEnable = CAN_CTRL1_ERRMSK_MASK , /*!< CAN Error interrupt, use bit 14. */
398
404
kFLEXCAN_TxWarningInterruptEnable = CAN_CTRL1_TWRNMSK_MASK , /*!< Tx Warning interrupt, use bit 11. */
399
405
kFLEXCAN_RxWarningInterruptEnable = CAN_CTRL1_RWRNMSK_MASK , /*!< Rx Warning interrupt, use bit 10. */
406
+ #if !(defined(FSL_FEATURE_FLEXCAN_HAS_NO_WAKMSK_SUPPORT ) && FSL_FEATURE_FLEXCAN_HAS_NO_WAKMSK_SUPPORT )
400
407
kFLEXCAN_WakeUpInterruptEnable = CAN_MCR_WAKMSK_MASK , /*!< Self Wake Up interrupt, use bit 26. */
408
+ #endif
401
409
#if (defined(FSL_FEATURE_FLEXCAN_HAS_FLEXIBLE_DATA_RATE ) && FSL_FEATURE_FLEXCAN_HAS_FLEXIBLE_DATA_RATE )
402
410
kFLEXCAN_FDErrorInterruptEnable = CAN_CTRL2_ERRMSK_FAST_MASK , /*!< CAN FD Error interrupt, use bit 31. */
403
411
#endif
@@ -418,13 +426,19 @@ enum _flexcan_interrupt_enable
418
426
kFLEXCAN_ERxFifoDataAvlInterruptEnable = FLEXCAN_EFIFO_INT_MASK (CAN_ERFIER_ERFDAIE_MASK ),
419
427
#endif
420
428
#if (defined(FSL_FEATURE_FLEXCAN_HAS_MEMORY_ERROR_CONTROL ) && FSL_FEATURE_FLEXCAN_HAS_MEMORY_ERROR_CONTROL )
429
+ #if !(defined(FSL_FEATURE_FLEXCAN_HAS_NO_HANCEI_SUPPORT ) && FSL_FEATURE_FLEXCAN_HAS_NO_HANCEI_SUPPORT )
421
430
/*! Host Access With Non-Correctable Errors interrupt, use high word bit 0. */
422
431
kFLEXCAN_HostAccessNCErrorInterruptEnable = FLEXCAN_MECR_INT_MASK (CAN_MECR_HANCEI_MSK_MASK ),
432
+ #endif
433
+ #if !(defined(FSL_FEATURE_FLEXCAN_HAS_NO_FANCEI_SUPPORT ) && FSL_FEATURE_FLEXCAN_HAS_NO_FANCEI_SUPPORT )
423
434
/*! FlexCAN Access With Non-Correctable Errors interrupt, use high word bit 2. */
424
435
kFLEXCAN_FlexCanAccessNCErrorInterruptEnable = FLEXCAN_MECR_INT_MASK (CAN_MECR_FANCEI_MSK_MASK ),
436
+ #endif
437
+ #if !(defined(FSL_FEATURE_FLEXCAN_HAS_NO_CEI_SUPPORT ) && FSL_FEATURE_FLEXCAN_HAS_NO_CEI_SUPPORT )
425
438
/*! Host or FlexCAN Access With Correctable Errors interrupt, use high word bit 3. */
426
439
kFLEXCAN_HostOrFlexCanCErrorInterruptEnable = FLEXCAN_MECR_INT_MASK (CAN_MECR_CEI_MSK_MASK ),
427
440
#endif
441
+ #endif
428
442
};
429
443
430
444
/*!
@@ -450,7 +464,9 @@ enum _flexcan_flags
450
464
kFLEXCAN_ReceivingFlag = CAN_ESR1_RX_MASK , /*!< FlexCAN In Reception Status. */
451
465
kFLEXCAN_BusOffIntFlag = CAN_ESR1_BOFFINT_MASK , /*!< Bus Off Interrupt Flag. */
452
466
kFLEXCAN_ErrorIntFlag = CAN_ESR1_ERRINT_MASK , /*!< CAN Error Interrupt Flag. */
467
+ #if !(defined(FSL_FEATURE_FLEXCAN_HAS_NO_SLFWAK_SUPPORT ) && FSL_FEATURE_FLEXCAN_HAS_NO_SLFWAK_SUPPORT )
453
468
kFLEXCAN_WakeUpIntFlag = CAN_ESR1_WAKINT_MASK , /*!< Self Wake-Up Interrupt Flag. */
469
+ #endif
454
470
kFLEXCAN_ErrorFlag =
455
471
(uint32_t )(/*!< All FlexCAN Read Clear Error Status. */
456
472
#if (defined (FSL_FEATURE_FLEXCAN_HAS_FLEXIBLE_DATA_RATE ) && FSL_FEATURE_FLEXCAN_HAS_FLEXIBLE_DATA_RATE )
@@ -745,11 +761,15 @@ typedef struct _flexcan_config
745
761
};
746
762
};
747
763
flexcan_clock_source_t clkSrc ; /*!< Clock source for FlexCAN Protocol Engine. */
764
+ #if !(defined(FSL_FEATURE_FLEXCAN_HAS_NO_WAKSRC_SUPPORT ) && FSL_FEATURE_FLEXCAN_HAS_NO_WAKSRC_SUPPORT )
748
765
flexcan_wake_up_source_t wakeupSrc ; /*!< Wake up source selection. */
766
+ #endif
749
767
uint8_t maxMbNum ; /*!< The maximum number of Message Buffers used by user. */
750
768
bool enableLoopBack ; /*!< Enable or Disable Loop Back Self Test Mode. */
751
769
bool enableTimerSync ; /*!< Enable or Disable Timer Synchronization. */
770
+ #if !(defined(FSL_FEATURE_FLEXCAN_HAS_NO_SLFWAK_SUPPORT ) && FSL_FEATURE_FLEXCAN_HAS_NO_SLFWAK_SUPPORT )
752
771
bool enableSelfWakeup ; /*!< Enable or Disable Self Wakeup Mode. */
772
+ #endif
753
773
bool enableIndividMask ; /*!< Enable or Disable Rx Individual Mask and Queue feature. */
754
774
bool disableSelfReception ; /*!< Enable or Disable Self Reflection. */
755
775
bool enableListenOnlyMode ; /*!< Enable or Disable Listen Only Mode. */
@@ -1666,9 +1686,10 @@ static inline void FLEXCAN_EnableInterrupts(CAN_Type *base, uint32_t mask)
1666
1686
#endif
1667
1687
{
1668
1688
uint32_t primask = DisableGlobalIRQ ();
1669
-
1689
+ #if !(defined( FSL_FEATURE_FLEXCAN_HAS_NO_WAKMSK_SUPPORT ) && FSL_FEATURE_FLEXCAN_HAS_NO_WAKMSK_SUPPORT )
1670
1690
/* Solve Self Wake Up interrupt. */
1671
1691
base -> MCR |= (uint32_t )(mask & (uint32_t )kFLEXCAN_WakeUpInterruptEnable );
1692
+ #endif
1672
1693
1673
1694
#if (defined(FSL_FEATURE_FLEXCAN_HAS_FLEXIBLE_DATA_RATE ) && FSL_FEATURE_FLEXCAN_HAS_FLEXIBLE_DATA_RATE )
1674
1695
if (0 != FSL_FEATURE_FLEXCAN_INSTANCE_HAS_FLEXIBLE_DATA_RATEn (base ))
@@ -1719,8 +1740,10 @@ static inline void FLEXCAN_DisableInterrupts(CAN_Type *base, uint32_t mask)
1719
1740
{
1720
1741
uint32_t primask = DisableGlobalIRQ ();
1721
1742
1743
+ #if !(defined(FSL_FEATURE_FLEXCAN_HAS_NO_WAKMSK_SUPPORT ) && FSL_FEATURE_FLEXCAN_HAS_NO_WAKMSK_SUPPORT )
1722
1744
/* Solve Wake Up Interrupt. */
1723
1745
base -> MCR &= ~(uint32_t )(mask & (uint32_t )kFLEXCAN_WakeUpInterruptEnable );
1746
+ #endif
1724
1747
1725
1748
#if (defined(FSL_FEATURE_FLEXCAN_HAS_FLEXIBLE_DATA_RATE ) && FSL_FEATURE_FLEXCAN_HAS_FLEXIBLE_DATA_RATE )
1726
1749
if (0 != FSL_FEATURE_FLEXCAN_INSTANCE_HAS_FLEXIBLE_DATA_RATEn (base ))
0 commit comments