MCAN.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2023, Texas Instruments Incorporated
3  * All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions
7  * are met:
8  *
9  * * Redistributions of source code must retain the above copyright
10  * notice, this list of conditions and the following disclaimer.
11  *
12  * * Redistributions in binary form must reproduce the above copyright
13  * notice, this list of conditions and the following disclaimer in the
14  * documentation and/or other materials provided with the distribution.
15  *
16  * * Neither the name of Texas Instruments Incorporated nor the names of
17  * its contributors may be used to endorse or promote products derived
18  * from this software without specific prior written permission.
19  *
20  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
21  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
22  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
23  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
24  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
25  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
26  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
27  * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
28  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
29  * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
30  * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31  */
32 /*!*****************************************************************************
33  * @file MCAN.h
34  *
35  * @brief Hardware abstraction layer for M_CAN Controller v3.2.1
36  *
37  *******************************************************************************
38  */
39 
40 /* Structs were designed to avoid bitfields, unions, and casting
41  * for portability and to avoid static analysis violations.
42  */
43 #ifndef ti_drivers_can_common_mcan__include
44 #define ti_drivers_can_common_mcan__include
45 
46 #include <stdint.h>
47 #include <stddef.h>
49 
50 #ifdef __cplusplus
51 extern "C" {
52 #endif
53 
54 /*
55  * MCAN register and message RAM R/W functions are defined in the
56  * device-specific driver since access methods will vary for internal vs
57  * external devices as will the base MCAN register address.
58  */
59 extern void MCAN_writeReg(uint32_t offset, uint32_t value);
60 extern void MCAN_writeMsgRAM(uint32_t offset, const uint8_t *src, size_t numBytes);
61 extern uint32_t MCAN_readReg(uint32_t offset);
62 extern void MCAN_readMsgRAM(uint8_t *dst, uint32_t offset, size_t numBytes);
63 extern uint32_t MCAN_getMRAMOffset(void);
64 
65 /* Unsigned constants for boolean values to avoid MISRA violations */
66 #ifndef TRUE
67  #define TRUE (1U)
68 #endif
69 
70 #ifndef FALSE
71  #define FALSE (0U)
72 #endif
73 
80 #define MCAN_STATUS_SUCCESS ((int_fast16_t)0)
81 
88 #define MCAN_STATUS_ERROR ((int_fast16_t)-1)
89 
91 #define MCAN_MAX_PAYLOAD_SIZE (64U)
92 
94 #define MCAN_STD_ID_FILTER_ELEM_SIZE (4U)
95 
97 #define MCAN_EXT_ID_FILTER_ELEM_SIZE (8U)
98 
100 #define MCAN_TX_EVENT_ELEM_SIZE (8U)
101 
103 #define MCAN_TX_RX_ELEMENT_HEADER_SIZE (8U)
104 
113 typedef uint32_t MCAN_IntrLineNum;
114 
115 #define MCAN_INTR_LINE_NUM_0 (0U)
116 
117 #define MCAN_INTR_LINE_NUM_1 (1U)
118 
119 /* @} */
120 
129 typedef uint32_t MCAN_IdType;
130 
131 #define MCAN_ID_TYPE_11_BIT (0U)
132 
133 #define MCAN_ID_TYPE_29_BIT (1U)
134 
135 /* @} */
136 
145 typedef uint32_t MCAN_OperationMode;
146 
147 #define MCAN_OPERATION_MODE_NORMAL (0U)
148 
149 #define MCAN_OPERATION_MODE_SW_INIT (1U)
150 
151 /* @} */
152 
161 typedef uint32_t MCAN_MemType;
162 
163 #define MCAN_MEM_TYPE_BUF (0U)
164 
165 #define MCAN_MEM_TYPE_FIFO (1U)
166 
167 /* @} */
168 
177 typedef uint32_t MCAN_RxFIFONum;
178 
179 #define MCAN_RX_FIFO_NUM_0 (0U)
180 
181 #define MCAN_RX_FIFO_NUM_1 (1U)
182 
183 /* @} */
184 
193 typedef uint32_t MCAN_PinType;
194 
195 #define MCAN_PIN_TYPE_RX (0U)
196 
197 #define MCAN_PIN_TYPE_TX (1U)
198 
199 /* @} */
200 
209 typedef uint32_t MCAN_ElemSize;
210 
211 #define MCAN_ELEM_SIZE_8BYTES (0U)
212 
213 #define MCAN_ELEM_SIZE_12BYTES (1U)
214 
215 #define MCAN_ELEM_SIZE_16BYTES (2U)
216 
217 #define MCAN_ELEM_SIZE_20BYTES (3U)
218 
219 #define MCAN_ELEM_SIZE_24BYTES (4U)
220 
221 #define MCAN_ELEM_SIZE_32BYTES (5U)
222 
223 #define MCAN_ELEM_SIZE_48BYTES (6U)
224 
225 #define MCAN_ELEM_SIZE_64BYTES (7U)
226 
227 /* @} */
228 
237 typedef uint32_t MCAN_TimeOutSelect;
238 
239 #define MCAN_TIMEOUT_SELECT_CONT (0U)
240 
241 #define MCAN_TIMEOUT_SELECT_TX_EVENT_FIFO (1U)
242 
243 #define MCAN_TIMEOUT_SELECT_RX_FIFO0 (2U)
244 
245 #define MCAN_TIMEOUT_SELECT_RX_FIFO1 (3U)
246 
247 /* @} */
248 
257 typedef uint32_t MCAN_IntrSrc;
258 
259 #define MCAN_INTR_SRC_RX_FIFO0_NEW_MSG (MCAN_IR_RF0N_MASK)
260 
261 #define MCAN_INTR_SRC_RX_FIFO0_WATERMARK (MCAN_IR_RF0W_MASK)
262 
263 #define MCAN_INTR_SRC_RX_FIFO0_FULL (MCAN_IR_RF0F_MASK)
264 
265 #define MCAN_INTR_SRC_RX_FIFO0_MSG_LOST (MCAN_IR_RF0L_MASK)
266 
267 #define MCAN_INTR_SRC_RX_FIFO1_NEW_MSG (MCAN_IR_RF1N_MASK)
268 
269 #define MCAN_INTR_SRC_RX_FIFO1_WATERMARK (MCAN_IR_RF1W_MASK)
270 
271 #define MCAN_INTR_SRC_RX_FIFO1_FULL (MCAN_IR_RF1F_MASK)
272 
273 #define MCAN_INTR_SRC_RX_FIFO1_MSG_LOST (MCAN_IR_RF1L_MASK)
274 
275 #define MCAN_INTR_SRC_HIGH_PRIO_MSG (MCAN_IR_HPM_MASK)
276 
277 #define MCAN_INTR_SRC_TRANS_COMPLETE (MCAN_IR_TC_MASK)
278 
279 #define MCAN_INTR_SRC_TRANS_CANCEL_FINISH (MCAN_IR_TCF_MASK)
280 
281 #define MCAN_INTR_SRC_TX_FIFO_EMPTY (MCAN_IR_TFE_MASK)
282 
283 #define MCAN_INTR_SRC_TX_EVT_FIFO_NEW_ENTRY (MCAN_IR_TEFN_MASK)
284 
285 #define MCAN_INTR_SRC_TX_EVT_FIFO_WATERMARK (MCAN_IR_TEFW_MASK)
286 
287 #define MCAN_INTR_SRC_TX_EVT_FIFO_FULL (MCAN_IR_TEFF_MASK)
288 
289 #define MCAN_INTR_SRC_TX_EVT_FIFO_ELEM_LOST (MCAN_IR_TEFL_MASK)
290 
291 #define MCAN_INTR_SRC_TIMESTAMP_WRAPAROUND (MCAN_IR_TSW_MASK)
292 
293 #define MCAN_INTR_SRC_MSG_RAM_ACCESS_FAILURE (MCAN_IR_MRAF_MASK)
294 
295 #define MCAN_INTR_SRC_TIMEOUT (MCAN_IR_TOO_MASK)
296 
297 #define MCAN_INTR_SRC_DEDICATED_RX_BUFF_MSG (MCAN_IR_DRX_MASK)
298 
299 #define MCAN_INTR_SRC_BIT_ERR_CORRECTED (MCAN_IR_BEC_MASK)
300 
301 #define MCAN_INTR_SRC_BIT_ERR_UNCORRECTED (MCAN_IR_BEU_MASK)
302 
303 #define MCAN_INTR_SRC_ERR_LOG_OVRFLW (MCAN_IR_ELO_MASK)
304 
305 #define MCAN_INTR_SRC_ERR_PASSIVE (MCAN_IR_EP_MASK)
306 
307 #define MCAN_INTR_SRC_WARNING_STATUS (MCAN_IR_EW_MASK)
308 
309 #define MCAN_INTR_SRC_BUS_OFF_STATUS (MCAN_IR_BO_MASK)
310 
311 #define MCAN_INTR_SRC_WATCHDOG (MCAN_IR_WDI_MASK)
312 
313 #define MCAN_INTR_SRC_PROTOCOL_ERR_ARB (MCAN_IR_PEA_MASK)
314 
315 #define MCAN_INTR_SRC_PROTOCOL_ERR_DATA (MCAN_IR_PED_MASK)
316 
317 #define MCAN_INTR_SRC_RES_ADDR_ACCESS (MCAN_IR_ARA_MASK)
318 
319 /* @} */
320 
329 typedef uint32_t MCAN_ECCErrType;
330 
331 #define MCAN_ECC_ERR_TYPE_SEC (0U)
332 
333 #define MCAN_ECC_ERR_TYPE_DED (1U)
334 
335 /* @} */
336 
345 typedef uint32_t MCAN_LpbkMode;
346 
347 #define MCAN_LPBK_MODE_INTERNAL (0U)
348 
352 #define MCAN_LPBK_MODE_EXTERNAL (1U)
353 
358 /* @} */
359 
368 typedef uint32_t MCAN_ComState;
369 
370 #define MCAN_COM_STATE_SYNCHRONIZING (0U)
371 
372 #define MCAN_COM_STATE_IDLE (1U)
373 
374 #define MCAN_COM_STATE_RECEIVER (2U)
375 
376 #define MCAN_COM_STATE_TRANSMITTER (3U)
377 
378 /* @} */
379 
388 typedef uint32_t MCAN_GFCNonMatching;
389 
390 #define MCAN_GFC_NM_ACCEPT_INTO_RXFIFO0 (0U)
391 
392 #define MCAN_GFC_NM_ACCEPT_INTO_RXFIFO1 (1U)
393 
394 #define MCAN_GFC_NM_REJECT (3U)
395 
396 /* @} */
397 
406 typedef uint32_t MCAN_TSCCTimestampSel;
407 
408 #define MCAN_TSCC_COUNTER_ALWAYS_0 (0U)
409 
410 #define MCAN_TSCC_COUNTER_USE_TCP (1U)
411 
412 #define MCAN_TSCC_COUNTER_EXTERNAL (2U)
413 
414 /* @} */
415 
424 typedef uint32_t MCAN_ErrCode;
425 
426 #define MCAN_ERR_CODE_NO_ERROR (0U)
427 
430 #define MCAN_ERR_CODE_STUFF_ERROR (1U)
431 
434 #define MCAN_ERR_CODE_FORM_ERROR (2U)
435 
436 #define MCAN_ERR_CODE_ACK_ERROR (3U)
437 
440 #define MCAN_ERR_CODE_BIT1_ERROR (4U)
441 
446 #define MCAN_ERR_CODE_BIT0_ERROR (5U)
447 
456 #define MCAN_ERR_CODE_CRC_ERROR (6U)
457 
461 #define MCAN_ERR_CODE_NO_CHANGE (7U)
462 
466 /* @} */
467 
473 typedef struct
474 {
480  uint32_t nomTimeSeg1;
485  uint32_t nomTimeSeg2;
500  uint32_t dataTimeSeg1;
505  uint32_t dataTimeSeg2;
516 
520 typedef struct
521 {
522  uint32_t tdcf;
526  uint32_t tdco;
531 
535 typedef struct
536 {
537  uint32_t rrfe;
542  uint32_t rrfs;
547  uint32_t anfe;
551  uint32_t anfs;
556 
560 typedef struct
561 {
562  uint32_t fdMode;
567  uint32_t brsEnable;
573  uint32_t txpEnable;
578  uint32_t efbi;
584  uint32_t pxhDisable;
589  uint32_t darEnable;
595  uint32_t wdcPreload;
603  uint32_t tdcEnable;
609 
613 typedef struct
614 {
615  uint32_t monEnable;
620  uint32_t asmEnable;
626  uint32_t tsPrescalar;
631  uint32_t tsSelect;
635  uint32_t timeoutSelect;
639  uint32_t timeoutPreload;
655 
659 typedef struct
660 {
661  uint32_t transErrLogCnt;
663  uint32_t recErrCnt;
665  uint32_t rpStatus;
670  uint32_t canErrLogCnt;
673 
677 typedef struct
678 {
679  uint32_t lastErrCode;
683  uint32_t act;
687  uint32_t errPassive;
692  uint32_t warningStatus;
698  uint32_t busOffStatus;
703  uint32_t dlec;
707  uint32_t resi;
712  uint32_t rbrs;
717  uint32_t rfdf;
723  uint32_t pxe;
728  uint32_t tdcv;
731 
748 typedef struct
749 {
767  uint32_t rxFIFO0Size;
777  uint32_t rxFIFO0OpMode;
784  uint32_t rxFIFO1Size;
794  uint32_t rxFIFO1OpMode;
799  uint32_t rxBufStartAddr;
801  uint32_t rxBufElemSize;
803  uint32_t rxFIFO0ElemSize;
805  uint32_t rxFIFO1ElemSize;
810  uint32_t txEventFIFOSize;
821  uint32_t txBufStartAddr;
823  uint32_t txBufNum;
828  uint32_t txFIFOQSize;
833  uint32_t txFIFOQMode;
838  uint32_t txBufElemSize;
841 
845 typedef struct
846 {
847  uint32_t bufIdx;
851  uint32_t msi;
858  uint32_t filterIdx;
860  uint32_t filterList;
866 
870 typedef struct
871 {
872  uint32_t statusLow;
874  uint32_t statusHigh;
877 
881 typedef struct
882 {
883  uint32_t fillLvl;
885  uint32_t getIdx;
887  uint32_t putIdx;
889  uint32_t fifoFull;
894  uint32_t msgLost;
897 
901 typedef struct
902 {
903  uint32_t freeLvl;
905  uint32_t getIdx;
909  uint32_t putIdx;
911  uint32_t fifoFull;
917 
921 typedef struct
922 {
923  uint32_t fillLvl;
925  uint32_t getIdx;
927  uint32_t putIdx;
929  uint32_t fifoFull;
934  uint32_t eleLost;
941 
945 typedef struct
946 {
947  uint8_t data[MCAN_MAX_PAYLOAD_SIZE];
951  uint32_t id;
953  uint32_t rtr;
958  uint32_t xtd;
963  uint32_t esi;
968  uint32_t dlc;
974  uint32_t brs;
979  uint32_t fdf;
984  uint32_t efc;
989  uint32_t mm;
992 
998 typedef struct
999 {
1000  uint32_t id;
1002  uint32_t rtr;
1007  uint32_t xtd;
1012  uint32_t esi;
1017  uint32_t dlc;
1023  uint32_t brs;
1028  uint32_t fdf;
1033  uint32_t efc;
1038  uint32_t mm;
1040  const uint8_t *data;
1045 
1049 typedef struct
1050 {
1051  uint8_t data[MCAN_MAX_PAYLOAD_SIZE];
1055  uint32_t id;
1057  uint16_t rxts;
1059  uint8_t rtr;
1064  uint8_t xtd;
1069  uint8_t esi;
1074  uint8_t dlc;
1080  uint8_t brs;
1085  uint8_t fdf;
1090  uint8_t fidx;
1092  uint8_t anmf;
1098 
1104 typedef struct
1105 {
1106  uint32_t id;
1108  uint16_t rxts;
1110  uint8_t rtr;
1115  uint8_t xtd;
1120  uint8_t esi;
1125  uint8_t dlc;
1131  uint8_t brs;
1136  uint8_t fdf;
1141  uint8_t fidx;
1143  uint8_t anmf;
1148  uint8_t *data;
1153 
1157 typedef struct
1158 {
1159  uint32_t id;
1161  uint16_t txts;
1163  uint8_t rtr;
1168  uint8_t xtd;
1173  uint8_t esi;
1178  uint8_t dlc;
1184  uint8_t brs;
1189  uint8_t fdf;
1194  uint8_t et;
1202  uint8_t mm;
1205 
1209 typedef struct
1210 {
1211  uint32_t sfid2;
1213  uint32_t sfid1;
1215  uint32_t sfec;
1229  uint32_t sft;
1237 
1241 typedef struct
1242 {
1243  uint32_t efid1;
1245  uint32_t efid2;
1247  uint32_t efec;
1261  uint32_t eft;
1270 
1280 int_fast16_t MCAN_init(const MCAN_InitParams *initParams);
1281 
1291 int_fast16_t MCAN_config(const MCAN_ConfigParams *config);
1292 
1301 void MCAN_setOpMode(uint32_t mode);
1302 
1310 uint32_t MCAN_getOpMode(void);
1311 
1321 int_fast16_t MCAN_setBitTime(const MCAN_BitTimingParams *bitTiming);
1322 
1331 void MCAN_configMsgRAM(const MCAN_MsgRAMConfig *msgRAMConfig);
1332 
1345 void MCAN_writeTxMsgNoCpy(uint32_t bufIdx, const MCAN_TxBufElementNoCpy *elem);
1346 
1355 void MCAN_writeTxMsg(uint32_t bufIdx, const MCAN_TxBufElement *elem);
1356 
1363 void MCAN_setTxBufAddReq(uint32_t bufIdx);
1364 
1373 void MCAN_getNewDataStatus(MCAN_RxNewDataStatus *newDataStatus);
1374 
1383 void MCAN_clearNewDataStatus(const MCAN_RxNewDataStatus *newDataStatus);
1384 
1403 void MCAN_readRxMsgNoCpy(uint32_t memType, uint32_t num, MCAN_RxBufElementNoCpy *elem);
1404 
1419 void MCAN_readRxMsg(uint32_t memType, uint32_t num, MCAN_RxBufElement *elem);
1420 
1430 void MCAN_addStdMsgIDFilter(uint32_t filtNum, const MCAN_StdMsgIDFilterElement *elem);
1431 
1441 void MCAN_addExtMsgIDFilter(uint32_t filtNum, const MCAN_ExtMsgIDFilterElement *elem);
1442 
1454 void MCAN_enableLoopbackMode(uint32_t lpbkMode);
1455 
1464 void MCAN_disableLoopbackMode(void);
1465 
1475 
1486 void MCAN_setIntrEnable(uint32_t intrMask, uint32_t enable);
1487 
1498 void MCAN_setIntrLineSel(uint32_t intrMask, uint32_t lineNum);
1499 
1510 void MCAN_setIntrLineEnable(uint32_t lineNum, uint32_t enable);
1511 
1517 uint32_t MCAN_getIntrStatus(void);
1518 
1526 void MCAN_clearIntrStatus(uint32_t intrMask);
1527 
1538 void MCAN_getRxFIFOStatus(uint32_t fifoNum, MCAN_RxFIFOStatus *fifoStatus);
1539 
1548 void MCAN_getTxFIFOQStatus(MCAN_TxFIFOQStatus *fifoQStatus);
1549 
1560 int_fast16_t MCAN_setRxFIFOAck(uint32_t fifoNum, uint32_t idx);
1561 
1567 uint32_t MCAN_getTxBufReqPend(void);
1568 
1574 void MCAN_cancelTxBufReq(uint32_t bufIdx);
1575 
1581 uint32_t MCAN_getTxBufTransmissionStatus(void);
1582 
1588 uint32_t MCAN_getTxBufCancellationStatus(void);
1589 
1597 void MCAN_setTxBufTransIntrEnable(uint32_t bufMask, uint32_t enable);
1598 
1608 
1616 uint32_t MCAN_getClkStopAck(void);
1617 
1618 #ifdef __cplusplus
1619 }
1620 #endif
1621 
1622 #endif /* ti_drivers_can_common_mcan__include */
uint32_t id
Definition: MCAN.h:1106
uint8_t dlc
Definition: MCAN.h:1125
uint8_t fidx
Definition: MCAN.h:1141
uint32_t statusLow
Definition: MCAN.h:872
uint8_t xtd
Definition: MCAN.h:1115
Structure for MCAN Tx Buffer element which takes data as a pointer. Please note that as the data fiel...
Definition: MCAN.h:998
Structure for MCAN Rx Buffer element which takes data as a pointer. Please note that as the data fiel...
Definition: MCAN.h:1104
void MCAN_setIntrEnable(uint32_t intrMask, uint32_t enable)
Enables/disables interrupts.
uint32_t rrfs
Definition: MCAN.h:542
uint32_t rxFIFO1StartAddr
Definition: MCAN.h:782
void MCAN_setOpMode(uint32_t mode)
Sets MCAN module mode of operation.
uint32_t efid2
Definition: MCAN.h:1245
uint32_t sfec
Definition: MCAN.h:1215
uint32_t dlec
Definition: MCAN.h:703
uint32_t darEnable
Definition: MCAN.h:589
uint32_t dataSynchJumpWidth
Definition: MCAN.h:510
uint32_t monEnable
Definition: MCAN.h:615
uint32_t efec
Definition: MCAN.h:1247
uint32_t MCAN_getIntrStatus(void)
Returns interrupt status.
uint32_t timeoutPreload
Definition: MCAN.h:639
uint32_t sfid1
Definition: MCAN.h:1213
uint32_t id
Definition: MCAN.h:1159
uint32_t brs
Definition: MCAN.h:974
uint32_t xtd
Definition: MCAN.h:1007
uint32_t nomTimeSeg1
Definition: MCAN.h:480
Structure for MCAN Standard Message ID Filter Element.
Definition: MCAN.h:1209
uint8_t fidx
Definition: MCAN.h:1090
uint32_t statusHigh
Definition: MCAN.h:874
uint32_t fillLvl
Definition: MCAN.h:883
void MCAN_writeTxMsgNoCpy(uint32_t bufIdx, const MCAN_TxBufElementNoCpy *elem)
Writes Tx message to message RAM.
uint32_t pxe
Definition: MCAN.h:723
void MCAN_getTxFIFOQStatus(MCAN_TxFIFOQStatus *fifoQStatus)
Reads Tx FIFO/Queue status.
uint32_t MCAN_ErrCode
Enum to represent MCAN&#39;s Error Code.
Definition: MCAN.h:424
uint32_t MCAN_PinType
Enum to represent the MCAN pin type.
Definition: MCAN.h:193
uint8_t xtd
Definition: MCAN.h:1168
uint32_t fillLvl
Definition: MCAN.h:923
uint32_t MCAN_IdType
Enum to represent the MCAN Identifier Type.
Definition: MCAN.h:129
uint32_t MCAN_getTxBufReqPend(void)
Returns Tx Buffer Request Pending status.
uint32_t id
Definition: MCAN.h:1000
uint32_t lastErrCode
Definition: MCAN.h:679
uint32_t sfid2
Definition: MCAN.h:1211
uint32_t brsEnable
Definition: MCAN.h:567
uint32_t rtr
Definition: MCAN.h:1002
uint8_t dlc
Definition: MCAN.h:1074
void MCAN_readMsgRAM(uint8_t *dst, uint32_t offset, size_t numBytes)
uint32_t fdf
Definition: MCAN.h:979
Structure for MCAN Extended Message ID Filter Element.
Definition: MCAN.h:1241
uint32_t eleLost
Definition: MCAN.h:934
uint32_t sidFilterListSize
Definition: MCAN.h:752
Structure for MCAN Rx FIFO Status.
Definition: MCAN.h:881
uint32_t dlc
Definition: MCAN.h:1017
uint32_t fdf
Definition: MCAN.h:1028
uint32_t txBufElemSize
Definition: MCAN.h:838
Structure for MCAN High Priority Message.
Definition: MCAN.h:845
uint8_t fdf
Definition: MCAN.h:1136
uint32_t tdcf
Definition: MCAN.h:522
int_fast16_t MCAN_setBitTime(const MCAN_BitTimingParams *bitTiming)
Configures bit timings for MCAN module.
uint32_t rbrs
Definition: MCAN.h:712
uint32_t esi
Definition: MCAN.h:1012
uint32_t txFIFOQSize
Definition: MCAN.h:828
uint32_t rxBufStartAddr
Definition: MCAN.h:799
void MCAN_setTxBufAddReq(uint32_t bufIdx)
Sets Tx Buffer Add Request.
void MCAN_setTxBufTransIntrEnable(uint32_t bufMask, uint32_t enable)
Enables/disables Tx Buffer Transmission Interrupt.
uint32_t sft
Definition: MCAN.h:1229
uint8_t et
Definition: MCAN.h:1194
void MCAN_readRxMsg(uint32_t memType, uint32_t num, MCAN_RxBufElement *elem)
Reads received message from message RAM.
uint8_t esi
Definition: MCAN.h:1069
uint32_t fifoFull
Definition: MCAN.h:911
uint32_t rxFIFO1OpMode
Definition: MCAN.h:794
int_fast16_t MCAN_config(const MCAN_ConfigParams *config)
Configures MCAN module.
uint8_t fdf
Definition: MCAN.h:1189
uint32_t xtd
Definition: MCAN.h:958
uint32_t asmEnable
Definition: MCAN.h:620
uint32_t txEventFIFOWatermark
Definition: MCAN.h:815
uint32_t nomTimeSeg2
Definition: MCAN.h:485
uint32_t putIdx
Definition: MCAN.h:909
uint32_t recErrCnt
Definition: MCAN.h:663
uint32_t txEventFIFOStartAddr
Definition: MCAN.h:808
uint8_t rtr
Definition: MCAN.h:1163
uint32_t MCAN_getTxBufTransmissionStatus(void)
Returns Tx Buffer Transmission Occurred status.
uint32_t tsPrescalar
Definition: MCAN.h:626
Structure for MCAN error logging counters status.
Definition: MCAN.h:659
void MCAN_writeReg(uint32_t offset, uint32_t value)
uint32_t efid1
Definition: MCAN.h:1243
uint32_t timeoutSelect
Definition: MCAN.h:635
uint32_t dataRatePrescalar
Definition: MCAN.h:495
uint32_t brs
Definition: MCAN.h:1023
int_fast16_t MCAN_init(const MCAN_InitParams *initParams)
Initializes MCAN module.
uint32_t dataTimeSeg2
Definition: MCAN.h:505
uint8_t anmf
Definition: MCAN.h:1092
uint8_t esi
Definition: MCAN.h:1173
void MCAN_getNewDataStatus(MCAN_RxNewDataStatus *newDataStatus)
Returns New Data Message Status.
void MCAN_clearNewDataStatus(const MCAN_RxNewDataStatus *newDataStatus)
Clears New Data Message Status.
uint32_t tdcv
Definition: MCAN.h:728
const uint8_t * data
Definition: MCAN.h:1040
uint32_t errPassive
Definition: MCAN.h:687
uint32_t freeLvl
Definition: MCAN.h:903
uint32_t MCAN_TSCCTimestampSel
Enum to represent the MCAN timestamp select.
Definition: MCAN.h:406
uint32_t getIdx
Definition: MCAN.h:905
uint32_t MCAN_ECCErrType
Enum to represent the ECC Error Types.
Definition: MCAN.h:329
uint32_t id
Definition: MCAN.h:951
Structure for bit timing calculation. Bit timing related to data phase will be valid only if CAN-FD m...
Definition: MCAN.h:473
uint32_t id
Definition: MCAN.h:1055
uint8_t rtr
Definition: MCAN.h:1059
uint32_t putIdx
Definition: MCAN.h:927
void MCAN_writeTxMsg(uint32_t bufIdx, const MCAN_TxBufElement *elem)
Writes Tx message to message RAM.
void MCAN_setIntrLineEnable(uint32_t lineNum, uint32_t enable)
Enables/disables selected interrupt line.
uint32_t rxFIFO1Watermark
Definition: MCAN.h:789
uint32_t fifoFull
Definition: MCAN.h:929
uint32_t MCAN_getClkStopAck(void)
Returns clock stop acknowledgement for MCAN module.
uint8_t anmf
Definition: MCAN.h:1143
M_CAN controller v3.2.1 register definitions.
uint32_t rxFIFO0Watermark
Definition: MCAN.h:772
uint32_t rpStatus
Definition: MCAN.h:665
Structure for MCAN initialization parameters.
Definition: MCAN.h:560
uint32_t MCAN_OperationMode
Enum to represent the MCAN mode of operation.
Definition: MCAN.h:145
uint32_t MCAN_ElemSize
Enum to represent FIFO/Buffer element Size.
Definition: MCAN.h:209
Structure for MCAN protocol status.
Definition: MCAN.h:677
uint32_t eft
Definition: MCAN.h:1261
uint32_t dlc
Definition: MCAN.h:968
uint32_t rxFIFO1ElemSize
Definition: MCAN.h:805
uint32_t canErrLogCnt
Definition: MCAN.h:670
uint32_t rtr
Definition: MCAN.h:953
void MCAN_cancelTxBufReq(uint32_t bufIdx)
Cancels a Tx Buffer Request.
uint32_t resi
Definition: MCAN.h:707
uint8_t brs
Definition: MCAN.h:1080
uint32_t warningStatus
Definition: MCAN.h:692
uint32_t rxFIFO0OpMode
Definition: MCAN.h:777
uint32_t nomRatePrescalar
Definition: MCAN.h:475
uint32_t bufIdx
Definition: MCAN.h:847
uint32_t MCAN_MemType
Enum to represent the MCAN Message RAM type.
Definition: MCAN.h:161
void MCAN_getProtocolStatus(MCAN_ProtocolStatus *protStatus)
Returns protocol status for MCAN module.
uint32_t efbi
Definition: MCAN.h:578
uint32_t MCAN_LpbkMode
Enum to select the MCAN Loopback mode.
Definition: MCAN.h:345
uint32_t sidFilterStartAddr
Definition: MCAN.h:750
int_fast16_t MCAN_setRxFIFOAck(uint32_t fifoNum, uint32_t idx)
Sets Rx FIFO Acknowledgement.
uint32_t getIdx
Definition: MCAN.h:925
uint8_t dlc
Definition: MCAN.h:1178
void MCAN_configMsgRAM(const MCAN_MsgRAMConfig *msgRAMConfig)
Configures the various sections of Message RAM.
uint32_t wdcPreload
Definition: MCAN.h:595
uint8_t mm
Definition: MCAN.h:1202
uint8_t brs
Definition: MCAN.h:1184
uint32_t rxFIFO0Size
Definition: MCAN.h:767
uint32_t nomSynchJumpWidth
Definition: MCAN.h:490
uint32_t tdcEnable
Definition: MCAN.h:603
uint32_t msgLost
Definition: MCAN.h:894
uint32_t transErrLogCnt
Definition: MCAN.h:661
uint32_t anfs
Definition: MCAN.h:551
void MCAN_writeMsgRAM(uint32_t offset, const uint8_t *src, size_t numBytes)
uint32_t dataTimeSeg1
Definition: MCAN.h:500
uint32_t anfe
Definition: MCAN.h:547
uint32_t tsSelect
Definition: MCAN.h:631
uint16_t txts
Definition: MCAN.h:1161
uint32_t txBufStartAddr
Definition: MCAN.h:821
MCAN_GlobalFiltConfig filterConfig
Definition: MCAN.h:650
uint32_t MCAN_IntrSrc
Enum for MCAN interrupts.
Definition: MCAN.h:257
uint32_t timeoutCntEnable
Definition: MCAN.h:645
uint32_t txFIFOQMode
Definition: MCAN.h:833
uint32_t xidFilterStartAddr
Definition: MCAN.h:757
uint32_t msi
Definition: MCAN.h:851
uint32_t xidFilterListSize
Definition: MCAN.h:759
void MCAN_setIntrLineSel(uint32_t intrMask, uint32_t lineNum)
Sets interrupt line select.
uint32_t rrfe
Definition: MCAN.h:537
void MCAN_clearIntrStatus(uint32_t intrMask)
Clears the interrupt status.
Structure for MCAN new data flag for Rx buffer.
Definition: MCAN.h:870
Structure for MCAN Global Filter Configuration parameters.
Definition: MCAN.h:535
Structure for MCAN Tx Event FIFO Status.
Definition: MCAN.h:921
uint32_t mm
Definition: MCAN.h:989
uint32_t busOffStatus
Definition: MCAN.h:698
uint32_t efc
Definition: MCAN.h:984
MCAN_TDCConfig tdcConfig
Definition: MCAN.h:599
uint32_t txEventFIFOSize
Definition: MCAN.h:810
uint32_t filterList
Definition: MCAN.h:860
void MCAN_disableLoopbackMode(void)
Disables Loopback Test Mode for MCAN module.
uint8_t rtr
Definition: MCAN.h:1110
uint32_t rfdf
Definition: MCAN.h:717
uint32_t rxFIFO1Size
Definition: MCAN.h:784
uint8_t * data
Definition: MCAN.h:1148
Structure for MCAN Tx Buffer element.
Definition: MCAN.h:945
uint8_t xtd
Definition: MCAN.h:1064
uint32_t MCAN_IntrLineNum
Enum to select the MCAN interrupt lines.
Definition: MCAN.h:113
uint32_t pxhDisable
Definition: MCAN.h:584
uint32_t rxBufElemSize
Definition: MCAN.h:801
uint32_t mm
Definition: MCAN.h:1038
uint32_t txBufNum
Definition: MCAN.h:823
Structure for MCAN Tx FIFO/Queue Status.
Definition: MCAN.h:901
uint32_t rxFIFO0ElemSize
Definition: MCAN.h:803
void MCAN_readRxMsgNoCpy(uint32_t memType, uint32_t num, MCAN_RxBufElementNoCpy *elem)
Reads received message from message RAM.
uint32_t rxFIFO0StartAddr
Definition: MCAN.h:765
uint32_t MCAN_getOpMode(void)
Returns MCAN module mode of operation.
uint32_t putIdx
Definition: MCAN.h:887
uint32_t MCAN_GFCNonMatching
Enum to represent the MCAN general filter configuration for non-matching frames.
Definition: MCAN.h:388
uint32_t MCAN_getMRAMOffset(void)
#define MCAN_MAX_PAYLOAD_SIZE
Maximum payload supported by CAN-FD protocol in bytes.
Definition: MCAN.h:91
void MCAN_addStdMsgIDFilter(uint32_t filtNum, const MCAN_StdMsgIDFilterElement *elem)
Adds Standard Message ID Filter Element.
Structure for MCAN Tx Event FIFO element.
Definition: MCAN.h:1157
uint32_t esi
Definition: MCAN.h:963
void MCAN_readTxEventFIFO(MCAN_TxEventFIFOElement *txEventElem)
Reads message from Tx Event FIFO.
uint32_t fdMode
Definition: MCAN.h:562
uint8_t esi
Definition: MCAN.h:1120
uint16_t rxts
Definition: MCAN.h:1108
void MCAN_enableLoopbackMode(uint32_t lpbkMode)
Enables Loopback Test Mode for MCAN module.
uint32_t MCAN_ComState
Enum to represent MCAN&#39;s communication state.
Definition: MCAN.h:368
uint32_t filterIdx
Definition: MCAN.h:858
Structure for MCAN configuration parameters.
Definition: MCAN.h:613
Structure for MCAN Rx Buffer element.
Definition: MCAN.h:1049
uint32_t txpEnable
Definition: MCAN.h:573
uint8_t brs
Definition: MCAN.h:1131
uint32_t efc
Definition: MCAN.h:1033
uint32_t MCAN_TimeOutSelect
Enum to represent the MCAN time-out counter configuration.
Definition: MCAN.h:237
uint16_t rxts
Definition: MCAN.h:1057
uint32_t MCAN_getTxBufCancellationStatus(void)
Returns Transmit Buffer Cancellation Finished status.
uint32_t getIdx
Definition: MCAN.h:885
uint32_t MCAN_readReg(uint32_t offset)
Structure for MCAN Message RAM Configuration Parameters. Message RAM can contain following sections: ...
Definition: MCAN.h:748
Structure for MCAN Transmitter Delay Compensation parameters.
Definition: MCAN.h:520
uint32_t fifoFull
Definition: MCAN.h:889
uint32_t tdco
Definition: MCAN.h:526
uint32_t act
Definition: MCAN.h:683
void MCAN_addExtMsgIDFilter(uint32_t filtNum, const MCAN_ExtMsgIDFilterElement *elem)
Adds Extended Message ID Filter Element.
uint8_t fdf
Definition: MCAN.h:1085
uint32_t MCAN_RxFIFONum
Enum to represent the MCAN Rx FIFO number.
Definition: MCAN.h:177
void MCAN_getRxFIFOStatus(uint32_t fifoNum, MCAN_RxFIFOStatus *fifoStatus)
Reads Rx FIFO status.
© Copyright 1995-2023, Texas Instruments Incorporated. All rights reserved.
Trademarks | Privacy policy | Terms of use | Terms of sale