MCAN.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2023-2024, 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 __MCAN_H__
44 #define __MCAN_H__
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 
71 #define MCAN_STATUS_SUCCESS ((int_fast16_t)0)
72 
79 #define MCAN_STATUS_ERROR ((int_fast16_t)-1)
80 
82 #define MCAN_MAX_PAYLOAD_SIZE (64U)
83 
85 #define MCAN_STD_ID_FILTER_ELEM_SIZE (4U)
86 
88 #define MCAN_EXT_ID_FILTER_ELEM_SIZE (8U)
89 
91 #define MCAN_TX_EVENT_ELEM_SIZE (8U)
92 
94 #define MCAN_TX_RX_ELEMENT_HEADER_SIZE (8U)
95 
104 typedef uint32_t MCAN_IntLineNum;
105 
106 #define MCAN_INT_LINE_NUM_0 (0U)
107 
108 #define MCAN_INT_LINE_NUM_1 (1U)
109 
110 /* @} */
111 
120 typedef uint32_t MCAN_OperationMode;
121 
122 #define MCAN_OPERATION_MODE_NORMAL (0U)
123 
124 #define MCAN_OPERATION_MODE_SW_INIT (1U)
125 
126 /* @} */
127 
136 typedef uint32_t MCAN_MemType;
137 
138 #define MCAN_MEM_TYPE_BUF (0U)
139 
140 #define MCAN_MEM_TYPE_FIFO (1U)
141 
142 /* @} */
143 
152 typedef uint32_t MCAN_RxFifoNum;
153 
154 #define MCAN_RX_FIFO_NUM_0 (0U)
155 
156 #define MCAN_RX_FIFO_NUM_1 (1U)
157 
158 /* @} */
159 
168 typedef uint32_t MCAN_ElemSize;
169 
170 #define MCAN_ELEM_SIZE_8BYTES (0U)
171 
172 #define MCAN_ELEM_SIZE_12BYTES (1U)
173 
174 #define MCAN_ELEM_SIZE_16BYTES (2U)
175 
176 #define MCAN_ELEM_SIZE_20BYTES (3U)
177 
178 #define MCAN_ELEM_SIZE_24BYTES (4U)
179 
180 #define MCAN_ELEM_SIZE_32BYTES (5U)
181 
182 #define MCAN_ELEM_SIZE_48BYTES (6U)
183 
184 #define MCAN_ELEM_SIZE_64BYTES (7U)
185 
186 /* @} */
187 
196 typedef uint32_t MCAN_TimeOutSelect;
197 
198 #define MCAN_TIMEOUT_SELECT_CONT (0U)
199 
200 #define MCAN_TIMEOUT_SELECT_TX_EVENT_FIFO (1U)
201 
202 #define MCAN_TIMEOUT_SELECT_RX_FIFO0 (2U)
203 
204 #define MCAN_TIMEOUT_SELECT_RX_FIFO1 (3U)
205 
206 /* @} */
207 
216 typedef uint32_t MCAN_IntSrc;
217 
218 #define MCAN_INT_SRC_RX_FIFO0_NEW_MSG (MCAN_IR_RF0N_MASK)
219 
220 #define MCAN_INT_SRC_RX_FIFO0_WATERMARK (MCAN_IR_RF0W_MASK)
221 
222 #define MCAN_INT_SRC_RX_FIFO0_FULL (MCAN_IR_RF0F_MASK)
223 
224 #define MCAN_INT_SRC_RX_FIFO0_MSG_LOST (MCAN_IR_RF0L_MASK)
225 
226 #define MCAN_INT_SRC_RX_FIFO1_NEW_MSG (MCAN_IR_RF1N_MASK)
227 
228 #define MCAN_INT_SRC_RX_FIFO1_WATERMARK (MCAN_IR_RF1W_MASK)
229 
230 #define MCAN_INT_SRC_RX_FIFO1_FULL (MCAN_IR_RF1F_MASK)
231 
232 #define MCAN_INT_SRC_RX_FIFO1_MSG_LOST (MCAN_IR_RF1L_MASK)
233 
234 #define MCAN_INT_SRC_HIGH_PRIO_MSG (MCAN_IR_HPM_MASK)
235 
236 #define MCAN_INT_SRC_TRANS_COMPLETE (MCAN_IR_TC_MASK)
237 
238 #define MCAN_INT_SRC_TRANS_CANCEL_FINISH (MCAN_IR_TCF_MASK)
239 
240 #define MCAN_INT_SRC_TX_FIFO_EMPTY (MCAN_IR_TFE_MASK)
241 
242 #define MCAN_INT_SRC_TX_EVT_FIFO_NEW_ENTRY (MCAN_IR_TEFN_MASK)
243 
244 #define MCAN_INT_SRC_TX_EVT_FIFO_WATERMARK (MCAN_IR_TEFW_MASK)
245 
246 #define MCAN_INT_SRC_TX_EVT_FIFO_FULL (MCAN_IR_TEFF_MASK)
247 
248 #define MCAN_INT_SRC_TX_EVT_FIFO_ELEM_LOST (MCAN_IR_TEFL_MASK)
249 
250 #define MCAN_INT_SRC_TIMESTAMP_WRAPAROUND (MCAN_IR_TSW_MASK)
251 
252 #define MCAN_INT_SRC_MSG_RAM_ACCESS_FAILURE (MCAN_IR_MRAF_MASK)
253 
254 #define MCAN_INT_SRC_TIMEOUT (MCAN_IR_TOO_MASK)
255 
256 #define MCAN_INT_SRC_DEDICATED_RX_BUFF_MSG (MCAN_IR_DRX_MASK)
257 
258 #define MCAN_INT_SRC_BIT_ERR_CORRECTED (MCAN_IR_BEC_MASK)
259 
260 #define MCAN_INT_SRC_BIT_ERR_UNCORRECTED (MCAN_IR_BEU_MASK)
261 
262 #define MCAN_INT_SRC_ERR_LOG_OVERFLOW (MCAN_IR_ELO_MASK)
263 
264 #define MCAN_INT_SRC_ERR_PASSIVE (MCAN_IR_EP_MASK)
265 
266 #define MCAN_INT_SRC_WARNING_STATUS (MCAN_IR_EW_MASK)
267 
268 #define MCAN_INT_SRC_BUS_OFF_STATUS (MCAN_IR_BO_MASK)
269 
270 #define MCAN_INT_SRC_WATCHDOG (MCAN_IR_WDI_MASK)
271 
272 #define MCAN_INT_SRC_PROTOCOL_ERR_ARB (MCAN_IR_PEA_MASK)
273 
274 #define MCAN_INT_SRC_PROTOCOL_ERR_DATA (MCAN_IR_PED_MASK)
275 
276 #define MCAN_INT_SRC_RES_ADDR_ACCESS (MCAN_IR_ARA_MASK)
277 
278 /* @} */
279 
288 typedef uint32_t MCAN_LpbkMode;
289 
290 #define MCAN_LPBK_MODE_INTERNAL (0U)
291 
295 #define MCAN_LPBK_MODE_EXTERNAL (1U)
296 
301 /* @} */
302 
311 typedef uint32_t MCAN_ComState;
312 
313 #define MCAN_COM_STATE_SYNCHRONIZING (0U)
314 
315 #define MCAN_COM_STATE_IDLE (1U)
316 
317 #define MCAN_COM_STATE_RECEIVER (2U)
318 
319 #define MCAN_COM_STATE_TRANSMITTER (3U)
320 
321 /* @} */
322 
331 typedef uint32_t MCAN_GFCNonMatching;
332 
333 #define MCAN_GFC_NM_ACCEPT_INTO_RXFIFO0 (0U)
334 
335 #define MCAN_GFC_NM_ACCEPT_INTO_RXFIFO1 (1U)
336 
337 #define MCAN_GFC_NM_REJECT (3U)
338 
339 /* @} */
340 
349 typedef uint32_t MCAN_TSCCTimestampSel;
350 
351 #define MCAN_TSCC_COUNTER_ALWAYS_0 (0U)
352 
353 #define MCAN_TSCC_COUNTER_USE_TCP (1U)
354 
355 #define MCAN_TSCC_COUNTER_EXTERNAL (2U)
356 
357 /* @} */
358 
367 typedef uint32_t MCAN_ErrCode;
368 
369 #define MCAN_ERR_CODE_NO_ERROR (0U)
370 
373 #define MCAN_ERR_CODE_STUFF_ERROR (1U)
374 
377 #define MCAN_ERR_CODE_FORM_ERROR (2U)
378 
379 #define MCAN_ERR_CODE_ACK_ERROR (3U)
380 
383 #define MCAN_ERR_CODE_BIT1_ERROR (4U)
384 
389 #define MCAN_ERR_CODE_BIT0_ERROR (5U)
390 
399 #define MCAN_ERR_CODE_CRC_ERROR (6U)
400 
404 #define MCAN_ERR_CODE_NO_CHANGE (7U)
405 
409 /* @} */
410 
414 typedef struct
415 {
416  uint32_t tdcf;
424  uint32_t tdco;
434 
441 typedef struct
442 {
448  uint32_t nomTimeSeg1;
453  uint32_t nomTimeSeg2;
469  uint32_t dataTimeSeg1;
474  uint32_t dataTimeSeg2;
489 
493 typedef struct
494 {
495  uint32_t rrfe;
500  uint32_t rrfs;
505  MCAN_GFCNonMatching anfe;
509  MCAN_GFCNonMatching anfs;
514 
518 typedef struct
519 {
520  uint32_t fdMode;
525  uint32_t brsEnable;
531  uint32_t txpEnable;
536  uint32_t efbi;
542  uint32_t pxhDisable;
547  uint32_t darEnable;
553  uint32_t wdcPreload;
558 
562 typedef struct
563 {
564  uint32_t monEnable;
569  uint32_t asmEnable;
575  uint32_t tsPrescaler;
582  MCAN_TSCCTimestampSel tsSelect;
586  MCAN_TimeOutSelect timeoutSelect;
590  uint32_t timeoutPreload;
606 
610 typedef struct
611 {
612  uint32_t transErrLogCnt;
614  uint32_t recErrCnt;
616  uint32_t rpStatus;
621  uint32_t canErrLogCnt;
624 
628 typedef struct
629 {
630  MCAN_ErrCode lastErrCode;
634  MCAN_ComState act;
638  uint32_t errPassive;
643  uint32_t warningStatus;
649  uint32_t busOffStatus;
654  MCAN_ErrCode dlec;
658  uint32_t resi;
663  uint32_t rbrs;
668  uint32_t rfdf;
674  uint32_t pxe;
679  uint32_t tdcv;
682 
699 typedef struct
700 {
718  uint32_t rxFifo0Size;
728  uint32_t rxFifo0OpMode;
735  uint32_t rxFifo1Size;
745  uint32_t rxFifo1OpMode;
750  uint32_t rxBufStartAddr;
752  uint32_t rxBufElemSize;
754  uint32_t rxFifo0ElemSize;
756  uint32_t rxFifo1ElemSize;
761  uint32_t txEventFifoSize;
772  uint32_t txBufStartAddr;
774  uint32_t txBufNum;
779  uint32_t txFifoQSize;
784  uint32_t txFifoQMode;
789  uint32_t txBufElemSize;
792 
796 typedef struct
797 {
798  uint32_t bufIdx;
802  uint32_t msi;
809  uint32_t filterIdx;
811  uint32_t filterList;
817 
821 typedef struct
822 {
823  uint32_t statusLow;
825  uint32_t statusHigh;
828 
832 typedef struct
833 {
834  uint32_t fillLvl;
836  uint32_t getIdx;
838  uint32_t putIdx;
840  uint32_t fifoFull;
845  uint32_t msgLost;
848 
852 typedef struct
853 {
854  uint32_t freeLvl;
856  uint32_t getIdx;
860  uint32_t putIdx;
862  uint32_t fifoFull;
868 
872 typedef struct
873 {
874  uint32_t fillLvl;
876  uint32_t getIdx;
878  uint32_t putIdx;
880  uint32_t fifoFull;
885  uint32_t eleLost;
892 
896 typedef struct
897 {
898  uint8_t data[MCAN_MAX_PAYLOAD_SIZE];
902  uint32_t id;
904  uint32_t rtr;
909  uint32_t xtd;
914  uint32_t esi;
919  uint32_t dlc;
925  uint32_t brs;
930  uint32_t fdf;
935  uint32_t efc;
940  uint32_t mm;
943 
947 typedef struct
948 {
949  uint32_t id;
951  uint32_t rtr;
956  uint32_t xtd;
961  uint32_t esi;
966  uint32_t dlc;
972  uint32_t brs;
977  uint32_t fdf;
982  uint32_t efc;
987  uint32_t mm;
989  const uint8_t *data;
994 
998 typedef struct
999 {
1000  uint8_t data[MCAN_MAX_PAYLOAD_SIZE];
1004  uint32_t id;
1006  uint16_t rxts;
1008  uint8_t rtr;
1013  uint8_t xtd;
1018  uint8_t esi;
1023  uint8_t dlc;
1029  uint8_t brs;
1034  uint8_t fdf;
1039  uint8_t fidx;
1041  uint8_t anmf;
1047 
1053 typedef struct
1054 {
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;
1097  uint8_t *data;
1102 
1106 typedef struct
1107 {
1108  uint32_t id;
1110  uint16_t txts;
1112  uint8_t rtr;
1117  uint8_t xtd;
1122  uint8_t esi;
1127  uint8_t dlc;
1133  uint8_t brs;
1138  uint8_t fdf;
1143  uint8_t et;
1151  uint8_t mm;
1154 
1158 typedef struct
1159 {
1160  uint32_t sfec;
1174  uint32_t sft;
1181  uint32_t sfid1;
1188  uint32_t sfid2;
1209 
1213 typedef struct
1214 {
1215  uint32_t efec;
1229  uint32_t eft;
1237  uint32_t efid1;
1244  uint32_t efid2;
1264 
1274 int_fast16_t MCAN_init(const MCAN_InitParams *initParams);
1275 
1285 int_fast16_t MCAN_config(const MCAN_ConfigParams *config);
1286 
1295 void MCAN_setOpMode(MCAN_OperationMode mode);
1296 
1304 MCAN_OperationMode MCAN_getOpMode(void);
1305 
1314 void MCAN_getBitTime(MCAN_BitTimingParams *bitTiming);
1315 
1325 int_fast16_t MCAN_setBitTime(const MCAN_BitTimingParams *bitTiming);
1326 
1337 void MCAN_configMsgRam(const MCAN_MsgRamConfig *msgRamConfig);
1338 
1353 void MCAN_writeTxMsgNoCpy(uint32_t bufIdx, const MCAN_TxBufElementNoCpy *elem);
1354 
1369 void MCAN_writeTxMsg(uint32_t bufIdx, const MCAN_TxBufElement *elem);
1370 
1381 void MCAN_setTxBufAddReq(uint32_t bufIdx);
1382 
1393 void MCAN_getNewDataStatus(MCAN_RxNewDataStatus *newDataStatus);
1394 
1405 void MCAN_clearNewDataStatus(const MCAN_RxNewDataStatus *newDataStatus);
1406 
1428 void MCAN_readRxMsgNoCpy(MCAN_MemType memType, uint32_t num, MCAN_RxBufElementNoCpy *elem);
1429 
1447 void MCAN_readRxMsg(MCAN_MemType memType, uint32_t num, MCAN_RxBufElement *elem);
1448 
1461 int_fast16_t MCAN_readTxEventFifo(MCAN_TxEventFifoElement *elem);
1462 
1472 void MCAN_addStdMsgIDFilter(uint32_t filtNum, const MCAN_StdMsgIDFilterElement *elem);
1473 
1483 void MCAN_addExtMsgIDFilter(uint32_t filtNum, const MCAN_ExtMsgIDFilterElement *elem);
1484 
1496 void MCAN_enableLoopbackMode(MCAN_LpbkMode lpbkMode);
1497 
1508 void MCAN_disableLoopbackMode(void);
1509 
1519 
1528 void MCAN_enableInt(uint32_t intMask);
1529 
1538 void MCAN_disableInt(uint32_t intMask);
1539 
1550 void MCAN_setIntLineSel(uint32_t intMask, MCAN_IntLineNum lineNum);
1551 
1560 void MCAN_enableIntLine(MCAN_IntLineNum lineNum);
1561 
1570 void MCAN_disableIntLine(MCAN_IntLineNum lineNum);
1571 
1577 uint32_t MCAN_getIntStatus(void);
1578 
1586 void MCAN_clearIntStatus(uint32_t intMask);
1587 
1598 void MCAN_getRxFifoStatus(MCAN_RxFifoNum fifoNum, MCAN_RxFifoStatus *fifoStatus);
1599 
1609 
1618 void MCAN_getTxFifoQStatus(MCAN_TxFifoQStatus *fifoQStatus);
1619 
1630 int_fast16_t MCAN_setRxFifoAck(MCAN_RxFifoNum fifoNum, uint32_t idx);
1631 
1637 uint32_t MCAN_getTxBufReqPend(void);
1638 
1646 void MCAN_cancelTxBufReq(uint32_t bufIdx);
1647 
1653 uint32_t MCAN_getTxBufTransmissionStatus(void);
1654 
1660 uint32_t MCAN_getTxBufCancellationStatus(void);
1661 
1669 void MCAN_enableTxBufTransInt(uint32_t bufMask);
1670 
1678 void MCAN_disableTxBufTransInt(uint32_t bufMask);
1679 
1687 uint32_t MCAN_getClkStopAck(void);
1688 
1694 uint16_t MCAN_getTimestampCounter(void);
1695 
1696 #ifdef __cplusplus
1697 }
1698 #endif
1699 
1700 #endif /* __MCAN_H__ */
uint32_t id
Definition: MCAN.h:1055
void MCAN_enableLoopbackMode(MCAN_LpbkMode lpbkMode)
Enables Loopback Test Mode for M_CAN controller.
uint8_t dlc
Definition: MCAN.h:1074
uint32_t getIdx
Definition: MCAN.h:876
uint8_t fidx
Definition: MCAN.h:1090
void MCAN_clearIntStatus(uint32_t intMask)
Clears the interrupt status.
uint32_t statusLow
Definition: MCAN.h:823
void MCAN_enableTxBufTransInt(uint32_t bufMask)
Enables Tx Buffer Transmission Interrupt.
MCAN_GFCNonMatching anfe
Definition: MCAN.h:505
uint32_t fifoFull
Definition: MCAN.h:880
uint8_t xtd
Definition: MCAN.h:1064
Structure for MCAN Tx Buffer element which takes data as a pointer.
Definition: MCAN.h:947
MCAN_TSCCTimestampSel tsSelect
Definition: MCAN.h:582
Structure for MCAN Rx Buffer element which takes data as a pointer. Please note that as the data fiel...
Definition: MCAN.h:1053
uint32_t rxFifo0Size
Definition: MCAN.h:718
uint32_t rrfs
Definition: MCAN.h:500
uint32_t efid2
Definition: MCAN.h:1244
uint32_t sfec
Definition: MCAN.h:1160
void MCAN_disableIntLine(MCAN_IntLineNum lineNum)
Disables selected interrupt line.
uint32_t darEnable
Definition: MCAN.h:547
uint32_t dataSynchJumpWidth
Definition: MCAN.h:479
uint32_t txEventFifoWatermark
Definition: MCAN.h:766
uint32_t monEnable
Definition: MCAN.h:564
uint32_t efec
Definition: MCAN.h:1215
uint32_t txBufElemSize
Definition: MCAN.h:789
uint32_t nomRatePrescaler
Definition: MCAN.h:443
uint32_t fillLvl
Definition: MCAN.h:834
uint32_t timeoutPreload
Definition: MCAN.h:590
uint32_t txBufStartAddr
Definition: MCAN.h:772
uint32_t txEventFifoStartAddr
Definition: MCAN.h:759
uint32_t eleLost
Definition: MCAN.h:885
uint32_t sfid1
Definition: MCAN.h:1181
uint32_t brs
Definition: MCAN.h:925
uint32_t xtd
Definition: MCAN.h:956
uint32_t nomTimeSeg1
Definition: MCAN.h:448
Structure for MCAN Standard Message ID Filter Element.
Definition: MCAN.h:1158
uint32_t getIdx
Definition: MCAN.h:836
uint8_t fidx
Definition: MCAN.h:1039
uint32_t statusHigh
Definition: MCAN.h:825
uint8_t dlc
Definition: MCAN.h:1127
void MCAN_writeTxMsgNoCpy(uint32_t bufIdx, const MCAN_TxBufElementNoCpy *elem)
Writes Tx message to message RAM.
uint32_t pxe
Definition: MCAN.h:674
uint32_t MCAN_ErrCode
Enum to represent M_CAN Error Code.
Definition: MCAN.h:367
uint32_t MCAN_getTxBufReqPend(void)
Returns Tx Buffer Request Pending status.
uint32_t id
Definition: MCAN.h:949
uint32_t sfid2
Definition: MCAN.h:1188
uint32_t brsEnable
Definition: MCAN.h:525
uint32_t rtr
Definition: MCAN.h:951
uint8_t dlc
Definition: MCAN.h:1023
MCAN_ComState act
Definition: MCAN.h:634
uint32_t fdf
Definition: MCAN.h:930
Structure for MCAN Extended Message ID Filter Element.
Definition: MCAN.h:1213
void MCAN_readRxMsg(MCAN_MemType memType, uint32_t num, MCAN_RxBufElement *elem)
Reads received message from message RAM.
int_fast16_t MCAN_setRxFifoAck(MCAN_RxFifoNum fifoNum, uint32_t idx)
Sets Rx FIFO Acknowledgement.
uint32_t dlc
Definition: MCAN.h:966
uint32_t getIdx
Definition: MCAN.h:856
MCAN_OperationMode MCAN_getOpMode(void)
Returns M_CAN controller mode of operation.
uint32_t fdf
Definition: MCAN.h:977
void MCAN_readRxMsgNoCpy(MCAN_MemType memType, uint32_t num, MCAN_RxBufElementNoCpy *elem)
Reads received message from message RAM.
Structure for MCAN High Priority Message.
Definition: MCAN.h:796
void MCAN_setOpMode(MCAN_OperationMode mode)
Sets M_CAN controller mode of operation.
uint8_t fdf
Definition: MCAN.h:1085
uint32_t tdcf
Definition: MCAN.h:416
int_fast16_t MCAN_setBitTime(const MCAN_BitTimingParams *bitTiming)
Sets M_CAN controller bit timings.
uint32_t rbrs
Definition: MCAN.h:663
uint32_t txEventFifoSize
Definition: MCAN.h:761
uint32_t esi
Definition: MCAN.h:961
void MCAN_setTxBufAddReq(uint32_t bufIdx)
Sets Tx Buffer Add Request.
uint32_t rxFifo0StartAddr
Definition: MCAN.h:716
uint16_t MCAN_getTimestampCounter(void)
Returns the 16-bit timestamp counter value.
uint32_t sft
Definition: MCAN.h:1174
uint8_t esi
Definition: MCAN.h:1018
void MCAN_setIntLineSel(uint32_t intMask, MCAN_IntLineNum lineNum)
Sets interrupt line select.
uint16_t txts
Definition: MCAN.h:1110
int_fast16_t MCAN_config(const MCAN_ConfigParams *config)
Configures M_CAN controller.
uint32_t xtd
Definition: MCAN.h:909
uint32_t asmEnable
Definition: MCAN.h:569
uint32_t nomTimeSeg2
Definition: MCAN.h:453
uint32_t xidFilterListSize
Definition: MCAN.h:710
uint32_t recErrCnt
Definition: MCAN.h:614
uint32_t msgLost
Definition: MCAN.h:845
uint32_t tsPrescaler
Definition: MCAN.h:575
uint32_t txFifoQSize
Definition: MCAN.h:779
uint32_t MCAN_getTxBufTransmissionStatus(void)
Returns Tx Buffer Transmission Occurred status.
uint32_t rxBufStartAddr
Definition: MCAN.h:750
Structure for MCAN error logging counters status.
Definition: MCAN.h:610
void MCAN_writeReg(uint32_t offset, uint32_t value)
uint32_t efid1
Definition: MCAN.h:1237
uint32_t rxFifo1StartAddr
Definition: MCAN.h:733
uint32_t brs
Definition: MCAN.h:972
int_fast16_t MCAN_init(const MCAN_InitParams *initParams)
Initializes M_CAN controller.
uint8_t fdf
Definition: MCAN.h:1138
uint32_t dataTimeSeg2
Definition: MCAN.h:474
uint8_t anmf
Definition: MCAN.h:1041
uint32_t rxFifo1ElemSize
Definition: MCAN.h:756
void MCAN_getNewDataStatus(MCAN_RxNewDataStatus *newDataStatus)
Reads New Data Message Status.
void MCAN_enableInt(uint32_t intMask)
Enables interrupts.
void MCAN_clearNewDataStatus(const MCAN_RxNewDataStatus *newDataStatus)
Clears New Data Message Status.
uint32_t tdcv
Definition: MCAN.h:679
const uint8_t * data
Definition: MCAN.h:989
uint32_t putIdx
Definition: MCAN.h:878
uint32_t errPassive
Definition: MCAN.h:638
MCAN_ErrCode lastErrCode
Definition: MCAN.h:630
uint32_t MCAN_TSCCTimestampSel
Enum to represent the MCAN timestamp select.
Definition: MCAN.h:349
void MCAN_getBitTime(MCAN_BitTimingParams *bitTiming)
Reads the M_CAN controller bit timings.
uint32_t dataRatePrescaler
Definition: MCAN.h:463
void MCAN_getRxFifoStatus(MCAN_RxFifoNum fifoNum, MCAN_RxFifoStatus *fifoStatus)
Reads Rx FIFO status.
uint32_t id
Definition: MCAN.h:902
void MCAN_enableIntLine(MCAN_IntLineNum lineNum)
Enables selected interrupt line.
Structure for bit timing parameters.
Definition: MCAN.h:441
uint32_t id
Definition: MCAN.h:1004
uint32_t rxFifo0OpMode
Definition: MCAN.h:728
uint8_t rtr
Definition: MCAN.h:1112
uint32_t rxFifo1Watermark
Definition: MCAN.h:740
uint8_t rtr
Definition: MCAN.h:1008
void MCAN_writeTxMsg(uint32_t bufIdx, const MCAN_TxBufElement *elem)
Writes Tx message to message RAM.
uint8_t brs
Definition: MCAN.h:1133
uint32_t MCAN_getClkStopAck(void)
Returns clock stop acknowledgement for M_CAN controller.
Structure for MCAN Tx Event FIFO element.
Definition: MCAN.h:1106
uint8_t anmf
Definition: MCAN.h:1092
M_CAN controller v3.2.1 register definitions.
void MCAN_writeMsgRam(uint32_t offset, const uint8_t *src, size_t numBytes)
uint32_t txFifoQMode
Definition: MCAN.h:784
uint32_t rpStatus
Definition: MCAN.h:616
Structure for MCAN initialization parameters.
Definition: MCAN.h:518
MCAN_TimeOutSelect timeoutSelect
Definition: MCAN.h:586
uint32_t MCAN_OperationMode
Enum to represent the MCAN mode of operation.
Definition: MCAN.h:120
uint32_t MCAN_ElemSize
Enum to represent FIFO/Buffer element Size.
Definition: MCAN.h:168
Structure for MCAN protocol status.
Definition: MCAN.h:628
MCAN_ErrCode dlec
Definition: MCAN.h:654
uint32_t eft
Definition: MCAN.h:1229
uint32_t dlc
Definition: MCAN.h:919
uint8_t mm
Definition: MCAN.h:1151
uint32_t canErrLogCnt
Definition: MCAN.h:621
uint32_t fillLvl
Definition: MCAN.h:874
uint32_t rtr
Definition: MCAN.h:904
Structure for MCAN Rx FIFO Status.
Definition: MCAN.h:832
void MCAN_cancelTxBufReq(uint32_t bufIdx)
Cancels a Tx Buffer Request.
uint32_t resi
Definition: MCAN.h:658
uint8_t brs
Definition: MCAN.h:1029
uint32_t warningStatus
Definition: MCAN.h:643
Structure for MCAN Tx FIFO/Queue Status.
Definition: MCAN.h:852
uint32_t bufIdx
Definition: MCAN.h:798
uint32_t MCAN_MemType
Enum to represent the MCAN Message RAM type.
Definition: MCAN.h:136
void MCAN_getProtocolStatus(MCAN_ProtocolStatus *protStatus)
Reads protocol status for M_CAN controller.
uint32_t freeLvl
Definition: MCAN.h:854
uint32_t efbi
Definition: MCAN.h:536
uint32_t MCAN_LpbkMode
Enum to select the MCAN Loopback mode.
Definition: MCAN.h:288
int_fast16_t MCAN_readTxEventFifo(MCAN_TxEventFifoElement *elem)
Reads next available element from Tx Event FIFO.
uint32_t MCAN_IntSrc
Enum for MCAN interrupts.
Definition: MCAN.h:216
uint32_t sidFilterStartAddr
Definition: MCAN.h:701
uint32_t wdcPreload
Definition: MCAN.h:553
MCAN_GFCNonMatching anfs
Definition: MCAN.h:509
uint32_t nomSynchJumpWidth
Definition: MCAN.h:458
uint32_t xidFilterStartAddr
Definition: MCAN.h:708
uint32_t transErrLogCnt
Definition: MCAN.h:612
uint32_t fifoFull
Definition: MCAN.h:862
uint32_t dataTimeSeg1
Definition: MCAN.h:469
void MCAN_getTxFifoQStatus(MCAN_TxFifoQStatus *fifoQStatus)
Reads Tx FIFO/Queue status.
uint8_t et
Definition: MCAN.h:1143
MCAN_GlobalFiltConfig filterConfig
Definition: MCAN.h:601
uint32_t rxFifo0ElemSize
Definition: MCAN.h:754
uint32_t timeoutCntEnable
Definition: MCAN.h:596
uint32_t msi
Definition: MCAN.h:802
uint32_t putIdx
Definition: MCAN.h:838
uint32_t rrfe
Definition: MCAN.h:495
Structure for MCAN new data flag for Rx buffer.
Definition: MCAN.h:821
uint8_t xtd
Definition: MCAN.h:1117
Structure for MCAN Global Filter Configuration parameters.
Definition: MCAN.h:493
uint32_t MCAN_RxFifoNum
Enum to represent the MCAN Rx FIFO number.
Definition: MCAN.h:152
uint32_t mm
Definition: MCAN.h:940
uint32_t fifoFull
Definition: MCAN.h:840
uint32_t rxFifo1Size
Definition: MCAN.h:735
uint32_t busOffStatus
Definition: MCAN.h:649
uint32_t efc
Definition: MCAN.h:935
uint32_t filterList
Definition: MCAN.h:811
void MCAN_disableLoopbackMode(void)
Disables Loopback Test Mode for M_CAN controller.
uint32_t MCAN_IntLineNum
Enum to select the MCAN interrupt lines.
Definition: MCAN.h:104
uint8_t rtr
Definition: MCAN.h:1059
uint32_t rfdf
Definition: MCAN.h:668
uint8_t * data
Definition: MCAN.h:1097
void MCAN_readMsgRam(uint8_t *dst, uint32_t offset, size_t numBytes)
Structure for MCAN Tx Buffer element.
Definition: MCAN.h:896
uint8_t xtd
Definition: MCAN.h:1013
uint32_t pxhDisable
Definition: MCAN.h:542
uint32_t txBufNum
Definition: MCAN.h:774
uint32_t mm
Definition: MCAN.h:987
void MCAN_disableInt(uint32_t intMask)
Disables interrupts.
uint32_t MCAN_GFCNonMatching
Enum to represent the MCAN general filter configuration for non-matching frames.
Definition: MCAN.h:331
MCAN_TDCConfig tdcConfig
Definition: MCAN.h:484
Structure for MCAN Tx Event FIFO Status.
Definition: MCAN.h:872
uint32_t MCAN_getMRAMOffset(void)
#define MCAN_MAX_PAYLOAD_SIZE
Maximum payload supported by CAN-FD protocol in bytes.
Definition: MCAN.h:82
void MCAN_addStdMsgIDFilter(uint32_t filtNum, const MCAN_StdMsgIDFilterElement *elem)
Adds Standard Message ID Filter Element.
uint32_t esi
Definition: MCAN.h:914
uint32_t rxFifo0Watermark
Definition: MCAN.h:723
uint32_t MCAN_getIntStatus(void)
Returns interrupt status.
uint32_t fdMode
Definition: MCAN.h:520
uint8_t esi
Definition: MCAN.h:1069
uint8_t esi
Definition: MCAN.h:1122
uint16_t rxts
Definition: MCAN.h:1057
uint32_t MCAN_ComState
Enum to represent MCAN communication state.
Definition: MCAN.h:311
uint32_t filterIdx
Definition: MCAN.h:809
Structure for MCAN configuration parameters.
Definition: MCAN.h:562
Structure for MCAN Rx Buffer element.
Definition: MCAN.h:998
uint32_t rxFifo1OpMode
Definition: MCAN.h:745
uint32_t txpEnable
Definition: MCAN.h:531
uint32_t sidFilterListSize
Definition: MCAN.h:703
uint8_t brs
Definition: MCAN.h:1080
uint32_t efc
Definition: MCAN.h:982
uint32_t MCAN_TimeOutSelect
Enum to represent the MCAN time-out counter configuration.
Definition: MCAN.h:196
void MCAN_getTxEventFifoStatus(MCAN_TxEventFifoStatus *fifoStatus)
Reads Tx Event FIFO status.
uint32_t putIdx
Definition: MCAN.h:860
uint16_t rxts
Definition: MCAN.h:1006
uint32_t MCAN_getTxBufCancellationStatus(void)
Returns Transmit Buffer Cancellation Finished status.
void MCAN_configMsgRam(const MCAN_MsgRamConfig *msgRamConfig)
Configures the various sections of Message RAM.
void MCAN_disableTxBufTransInt(uint32_t bufMask)
Disables Tx Buffer Transmission Interrupt.
Structure for MCAN Message RAM Configuration Parameters.
Definition: MCAN.h:699
uint32_t MCAN_readReg(uint32_t offset)
Structure for MCAN Transmitter Delay Compensation parameters.
Definition: MCAN.h:414
uint32_t rxBufElemSize
Definition: MCAN.h:752
uint32_t tdco
Definition: MCAN.h:424
void MCAN_addExtMsgIDFilter(uint32_t filtNum, const MCAN_ExtMsgIDFilterElement *elem)
Adds Extended Message ID Filter Element.
uint8_t fdf
Definition: MCAN.h:1034
uint32_t id
Definition: MCAN.h:1108
© Copyright 1995-2024, Texas Instruments Incorporated. All rights reserved.
Trademarks | Privacy policy | Terms of use | Terms of sale