60 #include "../inc/hw_types.h" 61 #include "../inc/hw_memmap.h" 62 #include "../inc/hw_canfd.h" 69 #define CANSS_CTRL_EXT_TIMESTAMP_EN (CANFD_MCANSS_CTRL_EXT_TS_CNTR_EN_M) 70 #define CANSS_CTRL_AUTOWAKEUP_EN (CANFD_MCANSS_CTRL_AUTOWAKEUP_M) 71 #define CANSS_CTRL_WAKEUP_REQ_EN (CANFD_MCANSS_CTRL_WAKEUPREQEN_M) 72 #define CANSS_CTRL_DEBUG_SUSPEND_EN (CANFD_MCANSS_CTRL_DBGSUSP_FREE_M) 79 #define CANSS_STATUS_ENABLE_FDOE (CANFD_MCANSS_STAT_ENABLE_FDOE_M) 80 #define CANSS_STATUS_MEM_INIT_DONE (CANFD_MCANSS_STAT_MEM_INIT_DONE_M) 88 #define CANSS_INT_EXT_TIMESTAMP_OVERFLOW \ 89 (CANFD_MCANSS_IRS_EXT_TS_CNTR_OVFL_M) 96 #define CANSS_EOI_EXT_TIMESTAMP 0U 97 #define CANSS_EOI_MCAN0 1U 98 #define CANSS_EOI_MCAN1 2U 106 #define CAN_INT_LINE0 0U 107 #define CAN_INT_LINE1 1U 115 #define CAN_INT_DMA_DONE1 (CANFD_IMASK0_DMA_DONE1_M) 116 #define CAN_INT_DMA_DONE0 (CANFD_IMASK0_DMA_DONE0_M) 117 #define CAN_INT_FILTER_EVENT2 (CANFD_IMASK0_FE2_M) 118 #define CAN_INT_EXT_TS_OR_WAKE (CANFD_IMASK0_EXT_TS_OR_WAKE_M) 119 #define CAN_INT_DED (CANFD_IMASK0_DED_M) 120 #define CAN_INT_SEC (CANFD_IMASK0_SEC_M) 121 #define CAN_INT_INTL1 (CANFD_IMASK0_INTL1_M) 122 #define CAN_INT_INTL0 (CANFD_IMASK0_INTL0_M) 123 #define CAN_INT_MASK (0x0000000FU) 130 #define CANSS_CLK_DIVIDE_BY_1 0U 131 #define CANSS_CLK_DIVIDE_BY_2 1U 132 #define CANSS_CLK_DIVIDE_BY_4 2U 139 #define CANSS_CLKCTRL_WAKEUP_GLITCH_FILTER_EN (CANFD_MCANSS_CLKCTL_WKUP_GLTFLT_EN_M) 140 #define CANSS_CLKCTRL_WAKEUP_INT_EN (CANFD_MCANSS_CLKCTL_WAKEUP_INT_EN_M) 141 #define CANSS_CLKCTRL_STOP_REQ (CANFD_MCANSS_CLKCTL_STOPREQ_M) 148 #define CANSS_CLKSTAT_CLKSTOP_REQ_OVR \ 149 (CANFD_MCANSS_CLKSTS_STOPREQ_HW_OVR_M) 150 #define CANSS_CLKSTAT_CLKSTOP_ACK (CANFD_MCANSS_CLKSTS_CLKSTOP_ACKSTS_M) 170 HWREG(CANFD_BASE + CANFD_O_MCANSS_CTRL) |= flags;
191 HWREG(CANFD_BASE + CANFD_O_MCANSS_CTRL) &= (uint32_t)~flags;
208 return (HWREG(CANFD_BASE + CANFD_O_MCANSS_STAT));
221 return (HWREG(CANFD_BASE + CANFD_O_MCANSS_IES));
234 return (HWREG(CANFD_BASE + CANFD_O_MCANSS_IRS));
250 HWREG(CANFD_BASE + CANFD_O_MCANSS_ICS) = flags;
268 HWREG(CANFD_BASE + CANFD_O_MCANSS_IE) = flags;
286 HWREG(CANFD_BASE + CANFD_O_MCANSS_IECS) = flags;
321 HWREG(CANFD_BASE + CANFD_O_MCANSS_EXT_TS_PRESCALER) = prescaler;
333 return (HWREG(CANFD_BASE + CANFD_O_MCANSS_EXT_TS_UNSERVICED_INTR_CNTR));
363 uint32_t offset = (lineNum ==
CAN_INT_LINE0) ? CANFD_O_IMASK0 : CANFD_O_IMASK1;
365 HWREG(CANFD_BASE + offset) |= flags;
395 uint32_t offset = (lineNum ==
CAN_INT_LINE0) ? CANFD_O_IMASK0 : CANFD_O_IMASK1;
397 HWREG(CANFD_BASE + offset) &= (uint32_t)~flags;
421 uint32_t offset = (lineNum ==
CAN_INT_LINE0) ? CANFD_O_MIS0 : CANFD_O_MIS1;
422 return (HWREG(CANFD_BASE + offset));
446 uint32_t offset = (lineNum ==
CAN_INT_LINE0) ? CANFD_O_RIS0 : CANFD_O_RIS1;
447 return (HWREG(CANFD_BASE + offset));
493 HWREG(CANFD_BASE + CANFD_O_MCANSS_CLKDIV) = ratio;
543 return HWREG(CANFD_BASE + CANFD_O_MCANSS_CLKSTS);
__STATIC_INLINE uint32_t CANGetRawIntStatus(uint8_t lineNum)
Gets the CAN raw peripheral interrupt status.
Definition: can.h:444
__STATIC_INLINE void CANSSSetClockDivider(uint32_t ratio)
Sets the CAN Subsystem clock divider ratio for the functional clock input.
Definition: can.h:491
__STATIC_INLINE uint32_t CANSSGetRawIntStatus(void)
Gets the CAN Subsystem raw interrupt status.
Definition: can.h:232
__STATIC_INLINE void CANSSEnableInt(uint32_t flags)
Enables the specified CAN Subsytem interrupt(s).
Definition: can.h:266
void CANSSSetEndOfInt(uint32_t eoi) __attribute__((weak))
Sets the CAN Subsystem End Of Interrupt (EOI).
void CANSSSetClkStopCtrl(uint32_t flags) __attribute__((weak))
Sets the CAN Subsystem clock stop control feature flag(s).
__STATIC_INLINE void CANSSClearInt(uint32_t flags)
Clears the specified CAN Subsytem interrupt enable(s).
Definition: can.h:248
#define CAN_INT_LINE0
Interrupt Line 0.
Definition: can.h:106
void CANSSClearClkStopCtrl(uint32_t flags) __attribute__((weak))
Clears the CAN Subsystem clock stop control feature flag(s).
__STATIC_INLINE void CANSetIntMask(uint32_t lineNum, uint32_t flags)
Sets the CAN peripheral interrupt mask.
Definition: can.h:361
__attribute__((weak))
Definition: can.c:43
__STATIC_INLINE void CANSSDisableInt(uint32_t flags)
Disables the specified CAN Subsytem interrupt(s).
Definition: can.h:284
__STATIC_INLINE uint32_t CANSSGetStatus(void)
Gets the CAN Subsystem status.
Definition: can.h:206
__STATIC_INLINE void CANSSSetExtTimestampPrescaler(uint32_t prescaler)
Sets the CAN Subsystem external timestamp prescaler.
Definition: can.h:319
__STATIC_INLINE void CANSSClearControl(uint32_t flags)
Clears the specified CAN Subsystem control feature flag(s).
Definition: can.h:189
__STATIC_INLINE uint32_t CANSSGetExtTSUnservicedIntCounter(void)
Gets the CAN Subsystem external timestamp unserviced interrupts counter.
Definition: can.h:331
__STATIC_INLINE void CANSSSetControl(uint32_t flags)
Sets the specified CAN Subsystem control feature flag(s).
Definition: can.h:168
__STATIC_INLINE void CANClearIntMask(uint8_t lineNum, uint32_t flags)
Clears the CAN peripheral interrupt mask.
Definition: can.h:393
__STATIC_INLINE uint32_t CANSSGetClkStopCtrlStatus(void)
Gets the CAN Subsystem clock stop control status.
Definition: can.h:541
#define __STATIC_INLINE
Definition: cmsis_gcc.h:47
__STATIC_INLINE uint32_t CANGetMaskedIntStatus(uint8_t lineNum)
Gets the CAN masked peripheral interrupt status.
Definition: can.h:419
void CANClearInt(uint8_t lineNum, uint32_t flags) __attribute__((weak))
Clears the specified CAN peripheral interrupt(s).
__STATIC_INLINE uint32_t CANSSGetMaskedIntStatus(void)
Gets the CAN Subsystem masked interrupt status.
Definition: can.h:219