51 #ifndef ti_dl_dl_mcan__include 52 #define ti_dl_dl_mcan__include 57 #include <ti/devices/msp/msp.h> 60 #ifdef __MSPM0_HAS_MCAN__ 71 #define DL_MCAN_INTR_MASK_ALL (MCAN_IR_RF0N_MASK | \ 104 #define DL_MCAN_MAX_PAYLOAD_BYTES (64U) 113 #define DL_MCAN_INTERRUPT_ARA (MCAN_IR_ARA_MASK) 118 #define DL_MCAN_INTERRUPT_PED (MCAN_IR_PED_MASK) 123 #define DL_MCAN_INTERRUPT_PEA (MCAN_IR_PEA_MASK) 128 #define DL_MCAN_INTERRUPT_WDI (MCAN_IR_WDI_MASK) 133 #define DL_MCAN_INTERRUPT_BO (MCAN_IR_BO_MASK) 138 #define DL_MCAN_INTERRUPT_EW (MCAN_IR_EW_MASK) 143 #define DL_MCAN_INTERRUPT_EP (MCAN_IR_EP_MASK) 148 #define DL_MCAN_INTERRUPT_ELO (MCAN_IR_ELO_MASK) 153 #define DL_MCAN_INTERRUPT_BEU (MCAN_IR_BEU_MASK) 158 #define DL_MCAN_INTERRUPT_DRX (MCAN_IR_DRX_MASK) 163 #define DL_MCAN_INTERRUPT_TOO (MCAN_IR_TOO_MASK) 168 #define DL_MCAN_INTERRUPT_MRAF (MCAN_IR_MRAF_MASK) 173 #define DL_MCAN_INTERRUPT_TSW (MCAN_IR_TSW_MASK) 178 #define DL_MCAN_INTERRUPT_TEFL (MCAN_IR_TEFL_MASK) 183 #define DL_MCAN_INTERRUPT_TEFF (MCAN_IR_TEFF_MASK) 188 #define DL_MCAN_INTERRUPT_TEFW (MCAN_IR_TEFW_MASK) 193 #define DL_MCAN_INTERRUPT_TEFN (MCAN_IR_TEFN_MASK) 198 #define DL_MCAN_INTERRUPT_TFE (MCAN_IR_TFE_MASK) 203 #define DL_MCAN_INTERRUPT_TCF (MCAN_IR_TCF_MASK) 208 #define DL_MCAN_INTERRUPT_TC (MCAN_IR_TC_MASK) 213 #define DL_MCAN_INTERRUPT_HPM (MCAN_IR_HPM_MASK) 218 #define DL_MCAN_INTERRUPT_RF1L (MCAN_IR_RF1L_MASK) 223 #define DL_MCAN_INTERRUPT_RF1F (MCAN_IR_RF1F_MASK) 228 #define DL_MCAN_INTERRUPT_RF1W (MCAN_IR_RF1W_MASK) 233 #define DL_MCAN_INTERRUPT_RF1N (MCAN_IR_RF1N_MASK) 238 #define DL_MCAN_INTERRUPT_RF0L (MCAN_IR_RF0L_MASK) 243 #define DL_MCAN_INTERRUPT_RF0F (MCAN_IR_RF0F_MASK) 248 #define DL_MCAN_INTERRUPT_RF0W (MCAN_IR_RF0W_MASK) 253 #define DL_MCAN_INTERRUPT_RF0N (MCAN_IR_RF0N_MASK) 263 #define DL_MCAN_MSP_INTERRUPT_WAKEUP (MCAN_IMASK_WAKEUP_SET) 268 #define DL_MCAN_MSP_INTERRUPT_TIMESTAMP_OVERFLOW (MCAN_IMASK_EXT_TS_CNTR_OVFL_SET) 273 #define DL_MCAN_MSP_INTERRUPT_DOUBLE_ERROR_DETECTION (MCAN_IMASK_DED_SET) 278 #define DL_MCAN_MSP_INTERRUPT_SINGLE_ERROR_CORRECTION (MCAN_IMASK_SEC_SET) 283 #define DL_MCAN_MSP_INTERRUPT_LINE1 (MCAN_IMASK_INTL1_SET) 288 #define DL_MCAN_MSP_INTERRUPT_LINE0 (MCAN_IMASK_INTL0_SET) 298 #define DL_MCAN_INTR_SRC_RX_FIFO0_NEW_MSG (MCAN_IR_RF0N_MASK) 303 #define DL_MCAN_INTR_SRC_RX_FIFO0_WATERMARK (MCAN_IR_RF0W_MASK) 308 #define DL_MCAN_INTR_SRC_RX_FIFO0_FULL (MCAN_IR_RF0F_MASK) 313 #define DL_MCAN_INTR_SRC_RX_FIFO0_MSG_LOST (MCAN_IR_RF0L_MASK) 318 #define DL_MCAN_INTR_SRC_RX_FIFO1_NEW_MSG (MCAN_IR_RF1N_MASK) 323 #define DL_MCAN_INTR_SRC_RX_FIFO1_WATERMARK (MCAN_IR_RF1W_MASK) 328 #define DL_MCAN_INTR_SRC_RX_FIFO1_FULL (MCAN_IR_RF1F_MASK) 333 #define DL_MCAN_INTR_SRC_RX_FIFO1_MSG_LOST (MCAN_IR_RF1L_MASK) 338 #define DL_MCAN_INTR_SRC_HIGH_PRIO_MSG (MCAN_IR_HPM_MASK) 343 #define DL_MCAN_INTR_SRC_TRANS_COMPLETE (MCAN_IR_TC_MASK) 348 #define DL_MCAN_INTR_SRC_TRANS_CANCEL_FINISH (MCAN_IR_TCF_MASK) 353 #define DL_MCAN_INTR_SRC_TX_FIFO_EMPTY (MCAN_IR_TFE_MASK) 358 #define DL_MCAN_INTR_SRC_TX_EVT_FIFO_NEW_ENTRY (MCAN_IR_TEFN_MASK) 363 #define DL_MCAN_INTR_SRC_TX_EVT_FIFO_WATERMARK (MCAN_IR_TEFW_MASK) 368 #define DL_MCAN_INTR_SRC_TX_EVT_FIFO_FULL (MCAN_IR_TEFF_MASK) 373 #define DL_MCAN_INTR_SRC_TX_EVT_FIFO_ELEM_LOST (MCAN_IR_TEFL_MASK) 378 #define DL_MCAN_INTR_SRC_TIMESTAMP_WRAPAROUND (MCAN_IR_TSW_MASK) 383 #define DL_MCAN_INTR_SRC_MSG_RAM_ACCESS_FAILURE (MCAN_IR_MRAF_MASK) 388 #define DL_MCAN_INTR_SRC_TIMEOUT (MCAN_IR_TOO_MASK) 393 #define DL_MCAN_INTR_SRC_DEDICATED_RX_BUFF_MSG (MCAN_IR_DRX_MASK) 398 #define DL_MCAN_INTR_SRC_BIT_ERR_UNCORRECTED (MCAN_IR_BEU_MASK) 403 #define DL_MCAN_INTR_SRC_ERR_LOG_OVRFLW (MCAN_IR_ELO_MASK) 408 #define DL_MCAN_INTR_SRC_ERR_PASSIVE (MCAN_IR_EP_MASK) 413 #define DL_MCAN_INTR_SRC_WARNING_STATUS (MCAN_IR_EW_MASK) 418 #define DL_MCAN_INTR_SRC_BUS_OFF_STATUS (MCAN_IR_BO_MASK) 423 #define DL_MCAN_INTR_SRC_WATCHDOG (MCAN_IR_WDI_MASK) 428 #define DL_MCAN_INTR_SRC_PROTOCOL_ERR_ARB (MCAN_IR_PEA_MASK) 433 #define DL_MCAN_INTR_SRC_PROTOCOL_ERR_DATA (MCAN_IR_PED_MASK) 438 #define DL_MCAN_INTR_SRC_RES_ADDR_ACCESS (MCAN_IR_ARA_MASK) 446 #define DL_MCAN_DBTP_DSJW_MAX (0xFU) 450 #define DL_MCAN_DBTP_DTSEG2_MAX (0xFU) 454 #define DL_MCAN_DBTP_DTSEG1_MAX (0x1FU) 458 #define DL_MCAN_DBTP_DBRP_MAX (0x1FU) 462 #define DL_MCAN_NBTP_NSJW_MAX (0x7FU) 466 #define DL_MCAN_NBTP_NTSEG2_MAX (0x7FU) 470 #define DL_MCAN_NBTP_NTSEG1_MAX (0xFFU) 474 #define DL_MCAN_NBTP_NBRP_MAX (0x1FFU) 478 #define DL_MCAN_RWD_WDC_MAX (0xFFU) 482 #define DL_MCAN_TDCR_TDCF_MAX (0x7FU) 486 #define DL_MCAN_TDCR_TDCO_MAX (0x7FU) 490 #define DL_MCAN_XIDAM_EIDM_MAX (0x1FFFFFFFU) 494 #define DL_MCAN_TSCC_TCP_MAX (0xFU) 498 #define DL_MCAN_TOCC_TOP_MAX (0xFFFFU) 507 DL_MCAN_INSTANCE_0 = SYSCTL_SYSSTATUS_MCAN0READY_MASK,
515 DL_MCAN_FCLK_SYSPLLCLK1 = SYSCTL_GENCLKCFG_CANCLKSRC_SYSPLLOUT1,
517 DL_MCAN_FCLK_HFCLK = SYSCTL_GENCLKCFG_CANCLKSRC_HFCLK,
525 DL_MCAN_FCLK_DIV_1 = MCAN_CLKDIV_RATIO_DIV_BY_1_,
527 DL_MCAN_FCLK_DIV_2 = MCAN_CLKDIV_RATIO_DIV_BY_2_,
529 DL_MCAN_FCLK_DIV_4 = MCAN_CLKDIV_RATIO_DIV_BY_4_,
537 DL_MCAN_INTR_LINE_NUM_0 = 0U,
539 DL_MCAN_INTR_LINE_NUM_1 = 1U
541 } DL_MCAN_INTR_LINE_NUM;
549 DL_MCAN_ID_TYPE_11_BIT = 0U,
551 DL_MCAN_ID_TYPE_29_BIT = 1U
560 DL_MCAN_OPERATION_MODE_NORMAL = 0U,
562 DL_MCAN_OPERATION_MODE_SW_INIT = 1U
564 } DL_MCAN_OPERATION_MODE;
571 DL_MCAN_MEM_TYPE_BUF = 0U,
573 DL_MCAN_MEM_TYPE_FIFO = 1U
582 DL_MCAN_RX_FIFO_NUM_0 = 0U,
584 DL_MCAN_RX_FIFO_NUM_1 = 1U
585 } DL_MCAN_RX_FIFO_NUM;
592 DL_MCAN_PIN_TYPE_RX = 0U,
594 DL_MCAN_PIN_TYPE_TX = 1U
602 DL_MCAN_ELEM_SIZE_8BYTES = 0U,
604 DL_MCAN_ELEM_SIZE_12BYTES = 1U,
606 DL_MCAN_ELEM_SIZE_16BYTES = 2U,
608 DL_MCAN_ELEM_SIZE_20BYTES = 3U,
610 DL_MCAN_ELEM_SIZE_24BYTES = 4U,
612 DL_MCAN_ELEM_SIZE_32BYTES = 5U,
614 DL_MCAN_ELEM_SIZE_48BYTES = 6U,
616 DL_MCAN_ELEM_SIZE_64BYTES = 7U
624 DL_MCAN_TIMEOUT_SELECT_CONT = 0U,
626 DL_MCAN_TIMEOUT_SELECT_TX_EVENT_FIFO = 1U,
628 DL_MCAN_TIMEOUT_SELECT_RX_FIFO0 = 2U,
630 DL_MCAN_TIMEOUT_SELECT_RX_FIFO1 = 3U
632 } DL_MCAN_TIMEOUT_SELECT;
639 DL_MCAN_INTR_SRC_MCAN_EXT_TS = 0x0,
641 DL_MCAN_INTR_SRC_MCAN_LINE_0 = 0x1,
643 DL_MCAN_INTR_SRC_MCAN_LINE_1 = 0x2,
644 } DL_MCAN_INTR_SRC_MCAN;
651 DL_MCAN_ECC_ERR_TYPE_SEC = 0U,
653 DL_MCAN_ECC_ERR_TYPE_DED = 1U
655 } DL_MCAN_ECC_ERR_TYPE;
665 DL_MCAN_LPBK_MODE_INTERNAL = 0U,
674 DL_MCAN_LPBK_MODE_EXTERNAL = 1U
683 DL_MCAN_COM_STATE_SYNCHRONIZING = 0U,
685 DL_MCAN_COM_STATE_IDLE = 1U,
687 DL_MCAN_COM_STATE_RECEIVER = 2U,
689 DL_MCAN_COM_STATE_TRANSMITTER = 3U
699 DL_MCAN_ERR_CODE_NO_ERROR = 0U,
703 DL_MCAN_ERR_CODE_STUFF_ERROR = 1U,
705 DL_MCAN_ERR_CODE_FORM_ERROR = 2U,
709 DL_MCAN_ERR_CODE_ACK_ERROR = 3U,
715 DL_MCAN_ERR_CODE_BIT1_ERROR = 4U,
725 DL_MCAN_ERR_CODE_BIT0_ERROR = 5U,
730 DL_MCAN_ERR_CODE_CRC_ERROR = 6U,
735 DL_MCAN_ERR_CODE_NO_CHANGE = 7U
745 DL_MCAN_FCLK clockSel;
747 DL_MCAN_FCLK_DIV divider;
748 } DL_MCAN_ClockConfig;
759 uint32_t nomRatePrescalar;
763 uint32_t nomTimeSeg1;
767 uint32_t nomTimeSeg2;
771 uint32_t nomSynchJumpWidth;
775 uint32_t dataRatePrescalar;
779 uint32_t dataTimeSeg1;
783 uint32_t dataTimeSeg2;
787 uint32_t dataSynchJumpWidth;
788 } DL_MCAN_BitTimingParams;
830 } DL_MCAN_GlobalFiltConfig;
865 uint32_t pxhddisable;
876 uint32_t wkupReqEnable;
881 uint32_t autoWkupEnable;
886 uint32_t emulationEnable;
894 DL_MCAN_TDCConfig tdcConfig;
900 } DL_MCAN_InitParams;
920 uint32_t tsPrescalar;
931 uint32_t timeoutSelect;
937 uint32_t timeoutPreload;
942 uint32_t timeoutCntEnable;
946 DL_MCAN_GlobalFiltConfig filterConfig;
947 } DL_MCAN_ConfigParams;
954 uint32_t transErrLogCnt;
963 uint32_t canErrLogCnt;
964 } DL_MCAN_ErrCntStatus;
973 uint32_t lastErrCode;
988 uint32_t warningStatus;
993 uint32_t busOffStatus;
1021 } DL_MCAN_ProtocolStatus;
1050 uint32_t txStartAddr;
1062 uint32_t txFIFOSize;
1069 uint32_t txBufElemSize;
1071 uint32_t txEventFIFOStartAddr;
1077 uint32_t txEventFIFOSize;
1083 uint32_t txEventFIFOWaterMark;
1085 uint32_t rxFIFO0startAddr;
1091 uint32_t rxFIFO0size;
1097 uint32_t rxFIFO0waterMark;
1102 uint32_t rxFIFO0OpMode;
1104 uint32_t rxFIFO1startAddr;
1110 uint32_t rxFIFO1size;
1116 uint32_t rxFIFO1waterMark;
1121 uint32_t rxFIFO1OpMode;
1123 uint32_t rxBufStartAddr;
1125 uint32_t rxBufElemSize;
1127 uint32_t rxFIFO0ElemSize;
1129 uint32_t rxFIFO1ElemSize;
1130 } DL_MCAN_MsgRAMConfigParams;
1154 uint32_t filterList;
1155 } DL_MCAN_HighPriorityMsgInfo;
1164 uint32_t statusHigh;
1165 } DL_MCAN_RxNewDataStatus;
1188 } DL_MCAN_RxFIFOStatus;
1207 } DL_MCAN_TxFIFOStatus;
1230 } DL_MCAN_TxEventFIFOStatus;
1254 } DL_MCAN_ECCErrForceParams;
1277 } DL_MCAN_ECCErrStatus;
1304 } DL_MCAN_RevisionId;
1318 } DL_MCAN_ECCAggrRevisionId;
1338 uint32_t enableRdModWr;
1339 } DL_MCAN_ECCConfigParams;
1353 } DL_MCAN_ECCWrapRevisionId;
1402 uint8_t data[DL_MCAN_MAX_PAYLOAD_BYTES];
1403 } DL_MCAN_TxBufElement;
1454 uint8_t data[DL_MCAN_MAX_PAYLOAD_BYTES];
1455 } DL_MCAN_RxBufElement;
1506 } DL_MCAN_TxEventFIFOElement;
1537 } DL_MCAN_StdMsgIDFilterElement;
1569 } DL_MCAN_ExtMsgIDFilterElement;
1578 uint32_t clkDivConf;
1590 uint32_t nomBitTimeConf;
1593 uint32_t dataBitTimeConf;
1596 uint32_t timeCntConf;
1599 uint32_t timeCntVal;
1602 uint32_t timeOutConf;
1605 uint32_t timeOutCntVal;
1608 uint32_t txDelCompConf;
1614 uint32_t intLnSelConf;
1617 uint32_t intLnEnableConf;
1620 uint32_t globFiltIDConf;
1623 uint32_t stdFiltIDConf;
1626 uint32_t exFiltIDConf;
1629 uint32_t exFiltIDMsk;
1632 uint32_t rxFIFO0Conf;
1635 uint32_t rxBuffConf;
1638 uint32_t rxFIFO1Conf;
1641 uint32_t rxDataSize;
1644 uint32_t txBuffConf;
1647 uint32_t txDataSize;
1650 uint32_t txBuffTxIntConf;
1653 uint32_t txBuffCancIntConf;
1656 uint32_t txEvntFIFOConf;
1659 uint32_t ssCtrlConf;
1662 uint32_t ssIntEnConf;
1665 uint32_t preSclConf;
1668 uint32_t edcVecConf;
1680 uint32_t intEvnt0Conf;
1691 } DL_MCAN_backupConfig;
1696 DL_MCAN_CLOCK_DIVIDE_1 = MCAN_CLKDIV_RATIO_DIV_BY_1_,
1698 DL_MCAN_CLOCK_DIVIDE_2 = MCAN_CLKDIV_RATIO_DIV_BY_2_,
1700 DL_MCAN_CLOCK_DIVIDE_4 = MCAN_CLKDIV_RATIO_DIV_BY_4_
1701 } DL_MCAN_CLOCK_DIVIDE;
1706 DL_MCAN_IIDX_WAKEUP = MCAN_IIDX_STAT_WAKEUP,
1709 DL_MCAN_IIDX_TIMESTAMP_OVERFLOW = MCAN_IIDX_STAT_EXT_TS_CNTR_OVFL,
1712 DL_MCAN_IIDX_DOUBLE_ERROR_DETECTION = MCAN_IIDX_STAT_DED,
1715 DL_MCAN_IIDX_SINGLE_ERROR_CORRECTION = MCAN_IIDX_STAT_SEC,
1717 DL_MCAN_IIDX_LINE1 = MCAN_IIDX_STAT_INTL1,
1719 DL_MCAN_IIDX_LINE0 = MCAN_IIDX_STAT_INTL0
1731 bool DL_MCAN_isReady(DL_MCAN_INSTANCE instance);
1740 void DL_MCAN_setClockConfig(
1741 MCAN_Regs *mcan,
const DL_MCAN_ClockConfig *config);
1750 void DL_MCAN_getClockConfig(MCAN_Regs *mcan, DL_MCAN_ClockConfig *config);
1759 bool DL_MCAN_isInReset(
const MCAN_Regs *mcan);
1770 bool DL_MCAN_isFDOpEnable(
const MCAN_Regs *mcan);
1781 bool DL_MCAN_isMemInitDone(
const MCAN_Regs *mcan);
1791 void DL_MCAN_setOpMode(MCAN_Regs *mcan, uint32_t mode);
1800 uint32_t DL_MCAN_getOpMode(
const MCAN_Regs *mcan);
1811 int32_t DL_MCAN_init(MCAN_Regs *mcan,
const DL_MCAN_InitParams *initParams);
1822 int32_t DL_MCAN_config(
1823 MCAN_Regs *mcan,
const DL_MCAN_ConfigParams *configParams);
1834 void DL_MCAN_eccConfig(
1835 MCAN_Regs *mcan,
const DL_MCAN_ECCConfigParams *configParams);
1846 int32_t DL_MCAN_setBitTime(
1847 MCAN_Regs *mcan,
const DL_MCAN_BitTimingParams *configParams);
1859 int32_t DL_MCAN_msgRAMConfig(
1860 MCAN_Regs *mcan,
const DL_MCAN_MsgRAMConfigParams *msgRAMConfigParams);
1871 int32_t DL_MCAN_setExtIDAndMask(MCAN_Regs *mcan, uint32_t idMask);
1886 void DL_MCAN_writeMsgRam(MCAN_Regs *mcan, uint32_t memType, uint32_t bufNum,
1887 const DL_MCAN_TxBufElement *elem);
1897 int32_t DL_MCAN_TXBufAddReq(MCAN_Regs *mcan, uint32_t bufNum);
1908 void DL_MCAN_getNewDataStatus(
1909 const MCAN_Regs *mcan, DL_MCAN_RxNewDataStatus *newDataStatus);
1920 void DL_MCAN_clearNewDataStatus(
1921 MCAN_Regs *mcan,
const DL_MCAN_RxNewDataStatus *newDataStatus);
1939 void DL_MCAN_readMsgRam(
const MCAN_Regs *mcan, uint32_t memType,
1940 uint32_t bufNum, uint32_t fifoNum, DL_MCAN_RxBufElement *elem);
1951 void DL_MCAN_readTxEventFIFO(
1952 const MCAN_Regs *mcan, DL_MCAN_TxEventFIFOElement *txEventElem);
1968 void DL_MCAN_addStdMsgIDFilter(MCAN_Regs *mcan, uint32_t filtNum,
1969 const DL_MCAN_StdMsgIDFilterElement *elem);
1985 void DL_MCAN_addExtMsgIDFilter(MCAN_Regs *mcan, uint32_t filtNum,
1986 const DL_MCAN_ExtMsgIDFilterElement *elem);
2002 void DL_MCAN_lpbkModeEnable(MCAN_Regs *mcan, uint32_t lpbkMode,
bool enable);
2012 void DL_MCAN_getErrCounters(
2013 const MCAN_Regs *mcan, DL_MCAN_ErrCntStatus *errCounter);
2023 void DL_MCAN_getProtocolStatus(
2024 const MCAN_Regs *mcan, DL_MCAN_ProtocolStatus *protStatus);
2036 void DL_MCAN_enableIntr(MCAN_Regs *mcan, uint32_t intrMask,
bool enable);
2049 void DL_MCAN_selectIntrLine(
2050 MCAN_Regs *mcan, uint32_t intrMask, uint32_t lineNum);
2059 uint32_t DL_MCAN_getIntrLineSelectStatus(
const MCAN_Regs *mcan);
2072 void DL_MCAN_enableIntrLine(MCAN_Regs *mcan, uint32_t lineNum,
bool enable);
2081 uint32_t DL_MCAN_getIntrStatus(
const MCAN_Regs *mcan);
2092 void DL_MCAN_clearIntrStatus(
2093 MCAN_Regs *mcan, uint32_t intrMask, DL_MCAN_INTR_SRC_MCAN eoi);
2104 void DL_MCAN_getHighPriorityMsgStatus(
2105 const MCAN_Regs *mcan, DL_MCAN_HighPriorityMsgInfo *hpm);
2115 void DL_MCAN_getRxFIFOStatus(
2116 const MCAN_Regs *mcan, DL_MCAN_RxFIFOStatus *fifoStatus);
2127 int32_t DL_MCAN_writeRxFIFOAck(
2128 MCAN_Regs *mcan, uint32_t fifoNum, uint32_t idx);
2138 void DL_MCAN_getTxFIFOQueStatus(
2139 const MCAN_Regs *mcan, DL_MCAN_TxFIFOStatus *fifoStatus);
2148 uint32_t DL_MCAN_getTxBufReqPend(
const MCAN_Regs *mcan);
2158 int32_t DL_MCAN_txBufCancellationReq(MCAN_Regs *mcan, uint32_t buffNum);
2167 uint32_t DL_MCAN_getTxBufTransmissionStatus(
const MCAN_Regs *mcan);
2176 uint32_t DL_MCAN_txBufCancellationStatus(
const MCAN_Regs *mcan);
2188 int32_t DL_MCAN_TXBufTransIntrEnable(
2189 MCAN_Regs *mcan, uint32_t bufNum,
bool enable);
2202 int32_t DL_MCAN_getTxBufCancellationIntrEnable(
2203 const MCAN_Regs *mcan, uint32_t bufNum,
bool enable);
2216 void DL_MCAN_addClockStopRequest(MCAN_Regs *mcan,
bool enable);
2227 void DL_MCAN_getTxEventFIFOStatus(
2228 const MCAN_Regs *mcan, DL_MCAN_TxEventFIFOStatus *fifoStatus);
2238 int32_t DL_MCAN_writeTxEventFIFOAck(MCAN_Regs *mcan, uint32_t idx);
2249 void DL_MCAN_eccForceError(
2250 MCAN_Regs *mcan,
const DL_MCAN_ECCErrForceParams *eccErr);
2260 void DL_MCAN_eccGetErrorStatus(MCAN_Regs *mcan, DL_MCAN_ECCErrStatus *eccErr);
2271 void DL_MCAN_eccClearErrorStatus(MCAN_Regs *mcan, uint32_t errType);
2281 void DL_MCAN_eccWriteEOI(MCAN_Regs *mcan, uint32_t errType);
2293 void DL_MCAN_eccEnableIntr(MCAN_Regs *mcan, uint32_t errType,
bool enable);
2304 uint32_t DL_MCAN_eccGetIntrStatus(
const MCAN_Regs *mcan, uint32_t errType);
2315 void DL_MCAN_eccClearIntrStatus(MCAN_Regs *mcan, uint32_t errType);
2327 void DL_MCAN_extTSCounterConfig(MCAN_Regs *mcan, uint32_t prescalar);
2339 void DL_MCAN_extTSCounterEnable(MCAN_Regs *mcan,
bool enable);
2353 void DL_MCAN_extTSEnableIntr(MCAN_Regs *mcan,
bool enable);
2363 void DL_MCAN_extTSWriteEOI(MCAN_Regs *mcan);
2375 uint32_t DL_MCAN_extTSGetUnservicedIntrCount(
const MCAN_Regs *mcan);
2390 void DL_MCAN_getRevisionId(
const MCAN_Regs *mcan, DL_MCAN_RevisionId *revId);
2402 uint32_t DL_MCAN_getClockStopAck(
const MCAN_Regs *mcan);
2412 void DL_MCAN_extTSSetRawStatus(MCAN_Regs *mcan);
2422 void DL_MCAN_extTSClearRawStatus(MCAN_Regs *mcan);
2433 uint32_t DL_MCAN_getRxPinState(
const MCAN_Regs *mcan);
2448 void DL_MCAN_setTxPinState(MCAN_Regs *mcan, uint32_t state);
2461 uint32_t DL_MCAN_getTxPinState(
const MCAN_Regs *mcan);
2470 uint32_t DL_MCAN_getTSCounterVal(
const MCAN_Regs *mcan);
2482 uint32_t DL_MCAN_getClkStopAck(
const MCAN_Regs *mcan);
2493 void DL_MCAN_getBitTime(
2494 const MCAN_Regs *mcan, DL_MCAN_BitTimingParams *configParams);
2503 void DL_MCAN_resetTSCounter(MCAN_Regs *mcan);
2512 uint32_t DL_MCAN_getTOCounterVal(
const MCAN_Regs *mcan);
2523 void DL_MCAN_eccAggrGetRevisionId(
2524 const MCAN_Regs *mcan, DL_MCAN_ECCAggrRevisionId *revId);
2535 void DL_MCAN_eccWrapGetRevisionId(
2536 MCAN_Regs *mcan, DL_MCAN_ECCWrapRevisionId *revId);
2548 bool DL_MCAN_extTSIsIntrEnable(
const MCAN_Regs *mcan);
2557 uint32_t DL_MCAN_getEndianVal(
const MCAN_Regs *mcan);
2566 uint32_t DL_MCAN_getExtIDANDMask(
const MCAN_Regs *mcan);
2577 __STATIC_INLINE
void DL_MCAN_enablePower(MCAN_Regs *mcan)
2579 mcan->MCANSS.PWREN = (MCAN_PWREN_KEY_UNLOCK_W | MCAN_PWREN_ENABLE_ENABLE);
2592 __STATIC_INLINE
void DL_MCAN_disablePower(MCAN_Regs *mcan)
2594 mcan->MCANSS.PWREN = (MCAN_PWREN_KEY_UNLOCK_W | MCAN_PWREN_ENABLE_DISABLE);
2613 __STATIC_INLINE
bool DL_MCAN_isPowerEnabled(
const MCAN_Regs *mcan)
2615 return ((mcan->MCANSS.PWREN & MCAN_PWREN_ENABLE_MASK) ==
2616 MCAN_PWREN_ENABLE_ENABLE);
2624 __STATIC_INLINE
void DL_MCAN_reset(MCAN_Regs *mcan)
2626 mcan->MCANSS.RSTCTL =
2627 (MCAN_RSTCTL_KEY_UNLOCK_W | MCAN_RSTCTL_RESETSTKYCLR_CLR |
2628 MCAN_RSTCTL_RESETASSERT_ASSERT);
2640 __STATIC_INLINE
bool DL_MCAN_isReset(
const MCAN_Regs *mcan)
2642 return ((mcan->MCANSS.STAT & MCAN_STAT_RESETSTKY_MASK) ==
2643 MCAN_STAT_RESETSTKY_RESET);
2654 __STATIC_INLINE
void DL_MCAN_enableInterrupt(
2655 MCAN_Regs *mcan, uint32_t interruptMask)
2657 mcan->MCANSS.TI_WRAPPER.MSP.CPU_INT.IMASK |= interruptMask;
2668 __STATIC_INLINE
void DL_MCAN_disableInterrupt(
2669 MCAN_Regs *mcan, uint32_t interruptMask)
2671 mcan->MCANSS.TI_WRAPPER.MSP.CPU_INT.IMASK &= ~(interruptMask);
2686 __STATIC_INLINE uint32_t DL_MCAN_getEnabledInterrupts(
2687 const MCAN_Regs *mcan, uint32_t interruptMask)
2689 return (mcan->MCANSS.TI_WRAPPER.MSP.CPU_INT.IMASK & interruptMask);
2707 __STATIC_INLINE uint32_t DL_MCAN_getEnabledInterruptStatus(
2708 const MCAN_Regs *mcan, uint32_t interruptMask)
2710 return (mcan->MCANSS.TI_WRAPPER.MSP.CPU_INT.MIS & interruptMask);
2728 __STATIC_INLINE uint32_t DL_MCAN_getRawInterruptStatus(
2729 const MCAN_Regs *mcan, uint32_t interruptMask)
2731 return (mcan->MCANSS.TI_WRAPPER.MSP.CPU_INT.RIS & interruptMask);
2746 __STATIC_INLINE DL_MCAN_IIDX DL_MCAN_getPendingInterrupt(
const MCAN_Regs *mcan)
2749 return ((DL_MCAN_IIDX) mcan->MCANSS.TI_WRAPPER.MSP.CPU_INT.IIDX);
2760 __STATIC_INLINE
void DL_MCAN_clearInterruptStatus(
2761 MCAN_Regs *mcan, uint32_t interruptMask)
2763 mcan->MCANSS.TI_WRAPPER.MSP.CPU_INT.ICLR = interruptMask;
2774 __STATIC_INLINE
bool DL_MCAN_isModuleClockEnabled(
const MCAN_Regs *mcan)
2776 return ((mcan->MCANSS.TI_WRAPPER.MSP.MCANSS_CLKEN &
2777 MCAN_CLKEN_CLK_REQEN_MASK) == MCAN_CLKEN_CLK_REQEN_SET);
2786 __STATIC_INLINE
void DL_MCAN_enableModuleClock(MCAN_Regs *mcan)
2788 mcan->MCANSS.TI_WRAPPER.MSP.MCANSS_CLKEN = MCAN_CLKEN_CLK_REQEN_SET;
2797 __STATIC_INLINE
void DL_MCAN_disableModuleClock(MCAN_Regs *mcan)
2799 mcan->MCANSS.TI_WRAPPER.MSP.MCANSS_CLKEN = MCAN_CLKEN_CLK_REQEN_CLR;
2810 __STATIC_INLINE uint32_t DL_MCAN_getModuleClockDivider(
const MCAN_Regs *mcan)
2813 mcan->MCANSS.TI_WRAPPER.MSP.MCANSS_CLKDIV & MCAN_CLKDIV_RATIO_MASK);
2825 __STATIC_INLINE
void DL_MCAN_setModuleClockDivider(
2826 MCAN_Regs *mcan, uint32_t clkdiv)
2829 MCAN_CLKDIV_RATIO_MASK);
2840 __STATIC_INLINE
bool DL_MCAN_isClockStopGateRequestEnabled(
2841 const MCAN_Regs *mcan)
2843 return ((mcan->MCANSS.TI_WRAPPER.MSP.MCANSS_CLKCTL &
2844 MCAN_CLKCTL_STOPREQ_MASK) == MCAN_CLKCTL_STOPREQ_ENABLE);
2853 __STATIC_INLINE
void DL_MCAN_enableClockStopGateRequest(MCAN_Regs *mcan)
2856 MCAN_CLKCTL_STOPREQ_ENABLE, MCAN_CLKCTL_STOPREQ_MASK);
2865 __STATIC_INLINE
void DL_MCAN_disableClockStopGateRequest(MCAN_Regs *mcan)
2868 MCAN_CLKCTL_STOPREQ_DISABLE, MCAN_CLKCTL_STOPREQ_MASK);
2880 __STATIC_INLINE
bool DL_MCAN_isClockStopWakeupInterruptEnabled(
2881 const MCAN_Regs *mcan)
2883 return ((mcan->MCANSS.TI_WRAPPER.MSP.MCANSS_CLKCTL &
2884 MCAN_CLKCTL_WAKEUP_INT_EN_MASK) ==
2885 MCAN_CLKCTL_WAKEUP_INT_EN_ENABLE);
2894 __STATIC_INLINE
void DL_MCAN_enableClockStopWakeupInterrupt(MCAN_Regs *mcan)
2897 MCAN_CLKCTL_WAKEUP_INT_EN_ENABLE, MCAN_CLKCTL_WAKEUP_INT_EN_MASK);
2906 __STATIC_INLINE
void DL_MCAN_disableClockStopWakeupInterrupt(MCAN_Regs *mcan)
2909 MCAN_CLKCTL_WAKEUP_INT_EN_DISABLE, MCAN_CLKCTL_WAKEUP_INT_EN_MASK);
2923 __STATIC_INLINE
bool DL_MCAN_isGlitchFilterWakeupEnabled(
const MCAN_Regs *mcan)
2925 return ((mcan->MCANSS.TI_WRAPPER.MSP.MCANSS_CLKCTL &
2926 MCAN_CLKCTL_WKUP_GLTFLT_EN_MASK) ==
2927 MCAN_CLKCTL_WKUP_GLTFLT_EN_ENABLE);
2939 __STATIC_INLINE
void DL_MCAN_enableGlitchFilterWakeup(MCAN_Regs *mcan)
2942 MCAN_CLKCTL_WKUP_GLTFLT_EN_ENABLE, MCAN_CLKCTL_WKUP_GLTFLT_EN_MASK);
2954 __STATIC_INLINE
void DL_MCAN_disableGlitchFilterWakeup(MCAN_Regs *mcan)
2957 MCAN_CLKCTL_WKUP_GLTFLT_EN_DISABLE, MCAN_CLKCTL_WKUP_GLTFLT_EN_MASK);
2968 __STATIC_INLINE
bool DL_MCAN_getClockStopAcknowledgeStatus(
2969 const MCAN_Regs *mcan)
2971 return ((mcan->MCANSS.TI_WRAPPER.MSP.MCANSS_CLKSTS &
2972 MCAN_CLKSTS_CLKSTOP_ACKSTS_MASK) ==
2973 MCAN_CLKSTS_CLKSTOP_ACKSTS_SET);
2987 __STATIC_INLINE
bool DL_MCAN_getClockStopHardwareOverrideStatus(
2988 const MCAN_Regs *mcan)
2990 return ((mcan->MCANSS.TI_WRAPPER.MSP.MCANSS_CLKSTS &
2991 MCAN_CLKSTS_STOPREQ_HW_OVR_MASK) ==
2992 MCAN_CLKSTS_STOPREQ_HW_OVR_SET);
3003 __STATIC_INLINE
bool DL_MCAN_getControllerClockRequestStatus(
3004 const MCAN_Regs *mcan)
3006 return ((mcan->MCANSS.TI_WRAPPER.MSP.MCANSS_CLKSTS &
3007 MCAN_CLKSTS_CCLKDONE_MASK) == MCAN_CLKSTS_CCLKDONE_SET);
3022 bool DL_MCAN_saveConfiguration(
3023 const MCAN_Regs *mcan, DL_MCAN_backupConfig *ptr);
3037 bool DL_MCAN_restoreConfiguration(MCAN_Regs *mcan, DL_MCAN_backupConfig *ptr);
__STATIC_INLINE void DL_Common_updateReg(volatile uint32_t *reg, uint32_t val, uint32_t mask)
Writes value to specified register - retaining bits unaffected by mask.
Definition: dl_common.h:63