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 __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 
416 typedef struct
417 {
423  uint32_t nomTimeSeg1;
428  uint32_t nomTimeSeg2;
443  uint32_t dataTimeSeg1;
448  uint32_t dataTimeSeg2;
459 
463 typedef struct
464 {
465  uint32_t tdcf;
469  uint32_t tdco;
474 
478 typedef struct
479 {
480  uint32_t rrfe;
485  uint32_t rrfs;
490  MCAN_GFCNonMatching anfe;
494  MCAN_GFCNonMatching anfs;
499 
503 typedef struct
504 {
505  uint32_t fdMode;
510  uint32_t brsEnable;
516  uint32_t txpEnable;
521  uint32_t efbi;
527  uint32_t pxhDisable;
532  uint32_t darEnable;
538  uint32_t wdcPreload;
546  uint32_t tdcEnable;
552 
556 typedef struct
557 {
558  uint32_t monEnable;
563  uint32_t asmEnable;
569  uint32_t tsPrescalar;
574  MCAN_TSCCTimestampSel tsSelect;
578  MCAN_TimeOutSelect timeoutSelect;
582  uint32_t timeoutPreload;
598 
602 typedef struct
603 {
604  uint32_t transErrLogCnt;
606  uint32_t recErrCnt;
608  uint32_t rpStatus;
613  uint32_t canErrLogCnt;
616 
620 typedef struct
621 {
622  MCAN_ErrCode lastErrCode;
626  MCAN_ComState act;
630  uint32_t errPassive;
635  uint32_t warningStatus;
641  uint32_t busOffStatus;
646  MCAN_ErrCode dlec;
650  uint32_t resi;
655  uint32_t rbrs;
660  uint32_t rfdf;
666  uint32_t pxe;
671  uint32_t tdcv;
674 
691 typedef struct
692 {
710  uint32_t rxFIFO0Size;
720  uint32_t rxFIFO0OpMode;
727  uint32_t rxFIFO1Size;
737  uint32_t rxFIFO1OpMode;
742  uint32_t rxBufStartAddr;
744  uint32_t rxBufElemSize;
746  uint32_t rxFIFO0ElemSize;
748  uint32_t rxFIFO1ElemSize;
753  uint32_t txEventFIFOSize;
764  uint32_t txBufStartAddr;
766  uint32_t txBufNum;
771  uint32_t txFIFOQSize;
776  uint32_t txFIFOQMode;
781  uint32_t txBufElemSize;
784 
788 typedef struct
789 {
790  uint32_t bufIdx;
794  uint32_t msi;
801  uint32_t filterIdx;
803  uint32_t filterList;
809 
813 typedef struct
814 {
815  uint32_t statusLow;
817  uint32_t statusHigh;
820 
824 typedef struct
825 {
826  uint32_t fillLvl;
828  uint32_t getIdx;
830  uint32_t putIdx;
832  uint32_t fifoFull;
837  uint32_t msgLost;
840 
844 typedef struct
845 {
846  uint32_t freeLvl;
848  uint32_t getIdx;
852  uint32_t putIdx;
854  uint32_t fifoFull;
860 
864 typedef struct
865 {
866  uint32_t fillLvl;
868  uint32_t getIdx;
870  uint32_t putIdx;
872  uint32_t fifoFull;
877  uint32_t eleLost;
884 
888 typedef struct
889 {
890  uint8_t data[MCAN_MAX_PAYLOAD_SIZE];
894  uint32_t id;
896  uint32_t rtr;
901  uint32_t xtd;
906  uint32_t esi;
911  uint32_t dlc;
917  uint32_t brs;
922  uint32_t fdf;
927  uint32_t efc;
932  uint32_t mm;
935 
941 typedef struct
942 {
943  uint32_t id;
945  uint32_t rtr;
950  uint32_t xtd;
955  uint32_t esi;
960  uint32_t dlc;
966  uint32_t brs;
971  uint32_t fdf;
976  uint32_t efc;
981  uint32_t mm;
983  const uint8_t *data;
988 
992 typedef struct
993 {
994  uint8_t data[MCAN_MAX_PAYLOAD_SIZE];
998  uint32_t id;
1000  uint16_t rxts;
1002  uint8_t rtr;
1007  uint8_t xtd;
1012  uint8_t esi;
1017  uint8_t dlc;
1023  uint8_t brs;
1028  uint8_t fdf;
1033  uint8_t fidx;
1035  uint8_t anmf;
1041 
1047 typedef struct
1048 {
1049  uint32_t id;
1051  uint16_t rxts;
1053  uint8_t rtr;
1058  uint8_t xtd;
1063  uint8_t esi;
1068  uint8_t dlc;
1074  uint8_t brs;
1079  uint8_t fdf;
1084  uint8_t fidx;
1086  uint8_t anmf;
1091  uint8_t *data;
1096 
1100 typedef struct
1101 {
1102  uint32_t id;
1104  uint16_t txts;
1106  uint8_t rtr;
1111  uint8_t xtd;
1116  uint8_t esi;
1121  uint8_t dlc;
1127  uint8_t brs;
1132  uint8_t fdf;
1137  uint8_t et;
1145  uint8_t mm;
1148 
1152 typedef struct
1153 {
1154  uint32_t sfid2;
1156  uint32_t sfid1;
1158  uint32_t sfec;
1172  uint32_t sft;
1180 
1184 typedef struct
1185 {
1186  uint32_t efid1;
1188  uint32_t efid2;
1190  uint32_t efec;
1204  uint32_t eft;
1213 
1223 int_fast16_t MCAN_init(const MCAN_InitParams *initParams);
1224 
1234 int_fast16_t MCAN_config(const MCAN_ConfigParams *config);
1235 
1244 void MCAN_setOpMode(MCAN_OperationMode mode);
1245 
1253 MCAN_OperationMode MCAN_getOpMode(void);
1254 
1264 int_fast16_t MCAN_setBitTime(const MCAN_BitTimingParams *bitTiming);
1265 
1274 void MCAN_configMsgRAM(const MCAN_MsgRAMConfig *msgRAMConfig);
1275 
1288 void MCAN_writeTxMsgNoCpy(uint32_t bufIdx, const MCAN_TxBufElementNoCpy *elem);
1289 
1298 void MCAN_writeTxMsg(uint32_t bufIdx, const MCAN_TxBufElement *elem);
1299 
1306 void MCAN_setTxBufAddReq(uint32_t bufIdx);
1307 
1316 void MCAN_getNewDataStatus(MCAN_RxNewDataStatus *newDataStatus);
1317 
1326 void MCAN_clearNewDataStatus(const MCAN_RxNewDataStatus *newDataStatus);
1327 
1346 void MCAN_readRxMsgNoCpy(MCAN_MemType memType, uint32_t num, MCAN_RxBufElementNoCpy *elem);
1347 
1362 void MCAN_readRxMsg(MCAN_MemType memType, uint32_t num, MCAN_RxBufElement *elem);
1363 
1373 void MCAN_addStdMsgIDFilter(uint32_t filtNum, const MCAN_StdMsgIDFilterElement *elem);
1374 
1384 void MCAN_addExtMsgIDFilter(uint32_t filtNum, const MCAN_ExtMsgIDFilterElement *elem);
1385 
1397 void MCAN_enableLoopbackMode(MCAN_LpbkMode lpbkMode);
1398 
1407 void MCAN_disableLoopbackMode(void);
1408 
1418 
1427 void MCAN_enableInt(uint32_t intMask);
1428 
1437 void MCAN_disableInt(uint32_t intMask);
1438 
1449 void MCAN_setIntLineSel(uint32_t intMask, MCAN_IntLineNum lineNum);
1450 
1459 void MCAN_enableIntLine(MCAN_IntLineNum lineNum);
1460 
1469 void MCAN_disableIntLine(MCAN_IntLineNum lineNum);
1470 
1476 uint32_t MCAN_getIntStatus(void);
1477 
1485 void MCAN_clearIntStatus(uint32_t intMask);
1486 
1497 void MCAN_getRxFIFOStatus(MCAN_RxFIFONum fifoNum, MCAN_RxFIFOStatus *fifoStatus);
1498 
1507 void MCAN_getTxFIFOQStatus(MCAN_TxFIFOQStatus *fifoQStatus);
1508 
1519 int_fast16_t MCAN_setRxFIFOAck(MCAN_RxFIFONum fifoNum, uint32_t idx);
1520 
1526 uint32_t MCAN_getTxBufReqPend(void);
1527 
1533 void MCAN_cancelTxBufReq(uint32_t bufIdx);
1534 
1540 uint32_t MCAN_getTxBufTransmissionStatus(void);
1541 
1547 uint32_t MCAN_getTxBufCancellationStatus(void);
1548 
1554 void MCAN_enableTxBufTransInt(uint32_t bufMask);
1555 
1561 void MCAN_disableTxBufTransInt(uint32_t bufMask);
1562 
1572 
1580 uint32_t MCAN_getClkStopAck(void);
1581 
1582 #ifdef __cplusplus
1583 }
1584 #endif
1585 
1586 #endif /* __MCAN_H__ */
uint32_t id
Definition: MCAN.h:1049
void MCAN_enableLoopbackMode(MCAN_LpbkMode lpbkMode)
Enables Loopback Test Mode for MCAN module.
uint8_t dlc
Definition: MCAN.h:1068
uint8_t fidx
Definition: MCAN.h:1084
void MCAN_clearIntStatus(uint32_t intMask)
Clears the interrupt status.
uint32_t statusLow
Definition: MCAN.h:815
void MCAN_enableTxBufTransInt(uint32_t bufMask)
Enables Tx Buffer Transmission Interrupt.
MCAN_GFCNonMatching anfe
Definition: MCAN.h:490
uint8_t xtd
Definition: MCAN.h:1058
Structure for MCAN Tx Buffer element which takes data as a pointer. Please note that as the data fiel...
Definition: MCAN.h:941
MCAN_TSCCTimestampSel tsSelect
Definition: MCAN.h:574
Structure for MCAN Rx Buffer element which takes data as a pointer. Please note that as the data fiel...
Definition: MCAN.h:1047
uint32_t rrfs
Definition: MCAN.h:485
uint32_t rxFIFO1StartAddr
Definition: MCAN.h:725
uint32_t efid2
Definition: MCAN.h:1188
uint32_t sfec
Definition: MCAN.h:1158
void MCAN_disableIntLine(MCAN_IntLineNum lineNum)
Disables selected interrupt line.
uint32_t darEnable
Definition: MCAN.h:532
uint32_t dataSynchJumpWidth
Definition: MCAN.h:453
uint32_t monEnable
Definition: MCAN.h:558
uint32_t efec
Definition: MCAN.h:1190
uint32_t timeoutPreload
Definition: MCAN.h:582
uint32_t sfid1
Definition: MCAN.h:1156
uint32_t id
Definition: MCAN.h:1102
uint32_t brs
Definition: MCAN.h:917
uint32_t xtd
Definition: MCAN.h:950
uint32_t nomTimeSeg1
Definition: MCAN.h:423
void MCAN_getRxFIFOStatus(MCAN_RxFIFONum fifoNum, MCAN_RxFIFOStatus *fifoStatus)
Reads Rx FIFO status.
Structure for MCAN Standard Message ID Filter Element.
Definition: MCAN.h:1152
uint8_t fidx
Definition: MCAN.h:1033
uint32_t statusHigh
Definition: MCAN.h:817
uint32_t fillLvl
Definition: MCAN.h:826
void MCAN_writeTxMsgNoCpy(uint32_t bufIdx, const MCAN_TxBufElementNoCpy *elem)
Writes Tx message to message RAM.
uint32_t pxe
Definition: MCAN.h:666
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:367
uint8_t xtd
Definition: MCAN.h:1111
uint32_t fillLvl
Definition: MCAN.h:866
uint32_t MCAN_getTxBufReqPend(void)
Returns Tx Buffer Request Pending status.
uint32_t id
Definition: MCAN.h:943
uint32_t sfid2
Definition: MCAN.h:1154
uint32_t brsEnable
Definition: MCAN.h:510
uint32_t rtr
Definition: MCAN.h:945
uint8_t dlc
Definition: MCAN.h:1017
void MCAN_readMsgRAM(uint8_t *dst, uint32_t offset, size_t numBytes)
MCAN_ComState act
Definition: MCAN.h:626
uint32_t fdf
Definition: MCAN.h:922
Structure for MCAN Extended Message ID Filter Element.
Definition: MCAN.h:1184
uint32_t eleLost
Definition: MCAN.h:877
void MCAN_readRxMsg(MCAN_MemType memType, uint32_t num, MCAN_RxBufElement *elem)
Reads received message from message RAM.
uint32_t sidFilterListSize
Definition: MCAN.h:695
Structure for MCAN Rx FIFO Status.
Definition: MCAN.h:824
uint32_t dlc
Definition: MCAN.h:960
MCAN_OperationMode MCAN_getOpMode(void)
Returns MCAN module mode of operation.
uint32_t fdf
Definition: MCAN.h:971
void MCAN_readRxMsgNoCpy(MCAN_MemType memType, uint32_t num, MCAN_RxBufElementNoCpy *elem)
Reads received message from message RAM.
uint32_t txBufElemSize
Definition: MCAN.h:781
Structure for MCAN High Priority Message.
Definition: MCAN.h:788
void MCAN_setOpMode(MCAN_OperationMode mode)
Sets MCAN module mode of operation.
uint8_t fdf
Definition: MCAN.h:1079
uint32_t tdcf
Definition: MCAN.h:465
int_fast16_t MCAN_setBitTime(const MCAN_BitTimingParams *bitTiming)
Configures bit timings for MCAN module.
uint32_t rbrs
Definition: MCAN.h:655
uint32_t esi
Definition: MCAN.h:955
uint32_t txFIFOQSize
Definition: MCAN.h:771
uint32_t rxBufStartAddr
Definition: MCAN.h:742
void MCAN_setTxBufAddReq(uint32_t bufIdx)
Sets Tx Buffer Add Request.
uint32_t sft
Definition: MCAN.h:1172
uint8_t et
Definition: MCAN.h:1137
uint8_t esi
Definition: MCAN.h:1012
uint32_t fifoFull
Definition: MCAN.h:854
void MCAN_setIntLineSel(uint32_t intMask, MCAN_IntLineNum lineNum)
Sets interrupt line select.
uint32_t rxFIFO1OpMode
Definition: MCAN.h:737
int_fast16_t MCAN_config(const MCAN_ConfigParams *config)
Configures MCAN module.
uint8_t fdf
Definition: MCAN.h:1132
uint32_t xtd
Definition: MCAN.h:901
uint32_t asmEnable
Definition: MCAN.h:563
uint32_t txEventFIFOWatermark
Definition: MCAN.h:758
uint32_t nomTimeSeg2
Definition: MCAN.h:428
uint32_t putIdx
Definition: MCAN.h:852
uint32_t recErrCnt
Definition: MCAN.h:606
uint32_t txEventFIFOStartAddr
Definition: MCAN.h:751
uint8_t rtr
Definition: MCAN.h:1106
uint32_t MCAN_getTxBufTransmissionStatus(void)
Returns Tx Buffer Transmission Occurred status.
uint32_t tsPrescalar
Definition: MCAN.h:569
Structure for MCAN error logging counters status.
Definition: MCAN.h:602
void MCAN_writeReg(uint32_t offset, uint32_t value)
uint32_t efid1
Definition: MCAN.h:1186
uint32_t dataRatePrescalar
Definition: MCAN.h:438
uint32_t brs
Definition: MCAN.h:966
int_fast16_t MCAN_init(const MCAN_InitParams *initParams)
Initializes MCAN module.
uint32_t dataTimeSeg2
Definition: MCAN.h:448
uint8_t anmf
Definition: MCAN.h:1035
uint8_t esi
Definition: MCAN.h:1116
void MCAN_getNewDataStatus(MCAN_RxNewDataStatus *newDataStatus)
Returns 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:671
const uint8_t * data
Definition: MCAN.h:983
uint32_t errPassive
Definition: MCAN.h:630
uint32_t freeLvl
Definition: MCAN.h:846
MCAN_ErrCode lastErrCode
Definition: MCAN.h:622
uint32_t MCAN_TSCCTimestampSel
Enum to represent the MCAN timestamp select.
Definition: MCAN.h:349
uint32_t getIdx
Definition: MCAN.h:848
uint32_t id
Definition: MCAN.h:894
void MCAN_enableIntLine(MCAN_IntLineNum lineNum)
Enables selected interrupt line.
Structure for bit timing calculation. Bit timing related to data phase will be valid only if CAN-FD m...
Definition: MCAN.h:416
uint32_t id
Definition: MCAN.h:998
uint8_t rtr
Definition: MCAN.h:1002
uint32_t putIdx
Definition: MCAN.h:870
void MCAN_writeTxMsg(uint32_t bufIdx, const MCAN_TxBufElement *elem)
Writes Tx message to message RAM.
uint32_t rxFIFO1Watermark
Definition: MCAN.h:732
uint32_t fifoFull
Definition: MCAN.h:872
uint32_t MCAN_getClkStopAck(void)
Returns clock stop acknowledgement for MCAN module.
uint8_t anmf
Definition: MCAN.h:1086
M_CAN controller v3.2.1 register definitions.
uint32_t rxFIFO0Watermark
Definition: MCAN.h:715
uint32_t rpStatus
Definition: MCAN.h:608
Structure for MCAN initialization parameters.
Definition: MCAN.h:503
MCAN_TimeOutSelect timeoutSelect
Definition: MCAN.h:578
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:620
MCAN_ErrCode dlec
Definition: MCAN.h:646
uint32_t eft
Definition: MCAN.h:1204
uint32_t dlc
Definition: MCAN.h:911
uint32_t rxFIFO1ElemSize
Definition: MCAN.h:748
uint32_t canErrLogCnt
Definition: MCAN.h:613
uint32_t rtr
Definition: MCAN.h:896
void MCAN_cancelTxBufReq(uint32_t bufIdx)
Cancels a Tx Buffer Request.
uint32_t resi
Definition: MCAN.h:650
uint8_t brs
Definition: MCAN.h:1023
uint32_t warningStatus
Definition: MCAN.h:635
uint32_t rxFIFO0OpMode
Definition: MCAN.h:720
uint32_t nomRatePrescalar
Definition: MCAN.h:418
uint32_t bufIdx
Definition: MCAN.h:790
uint32_t MCAN_MemType
Enum to represent the MCAN Message RAM type.
Definition: MCAN.h:136
void MCAN_getProtocolStatus(MCAN_ProtocolStatus *protStatus)
Returns protocol status for MCAN module.
uint32_t efbi
Definition: MCAN.h:521
uint32_t MCAN_LpbkMode
Enum to select the MCAN Loopback mode.
Definition: MCAN.h:288
uint32_t sidFilterStartAddr
Definition: MCAN.h:693
uint32_t getIdx
Definition: MCAN.h:868
uint32_t MCAN_IntSrc
Enum for MCAN interrupts.
Definition: MCAN.h:216
uint8_t dlc
Definition: MCAN.h:1121
int_fast16_t MCAN_setRxFIFOAck(MCAN_RxFIFONum fifoNum, uint32_t idx)
Sets Rx FIFO Acknowledgement.
void MCAN_configMsgRAM(const MCAN_MsgRAMConfig *msgRAMConfig)
Configures the various sections of Message RAM.
uint32_t wdcPreload
Definition: MCAN.h:538
uint8_t mm
Definition: MCAN.h:1145
MCAN_GFCNonMatching anfs
Definition: MCAN.h:494
uint8_t brs
Definition: MCAN.h:1127
uint32_t rxFIFO0Size
Definition: MCAN.h:710
uint32_t nomSynchJumpWidth
Definition: MCAN.h:433
uint32_t tdcEnable
Definition: MCAN.h:546
uint32_t msgLost
Definition: MCAN.h:837
uint32_t transErrLogCnt
Definition: MCAN.h:604
void MCAN_writeMsgRAM(uint32_t offset, const uint8_t *src, size_t numBytes)
uint32_t dataTimeSeg1
Definition: MCAN.h:443
uint16_t txts
Definition: MCAN.h:1104
uint32_t txBufStartAddr
Definition: MCAN.h:764
MCAN_GlobalFiltConfig filterConfig
Definition: MCAN.h:593
uint32_t timeoutCntEnable
Definition: MCAN.h:588
uint32_t txFIFOQMode
Definition: MCAN.h:776
uint32_t xidFilterStartAddr
Definition: MCAN.h:700
uint32_t msi
Definition: MCAN.h:794
uint32_t xidFilterListSize
Definition: MCAN.h:702
uint32_t rrfe
Definition: MCAN.h:480
Structure for MCAN new data flag for Rx buffer.
Definition: MCAN.h:813
Structure for MCAN Global Filter Configuration parameters.
Definition: MCAN.h:478
Structure for MCAN Tx Event FIFO Status.
Definition: MCAN.h:864
uint32_t mm
Definition: MCAN.h:932
uint32_t busOffStatus
Definition: MCAN.h:641
uint32_t efc
Definition: MCAN.h:927
MCAN_TDCConfig tdcConfig
Definition: MCAN.h:542
uint32_t txEventFIFOSize
Definition: MCAN.h:753
uint32_t filterList
Definition: MCAN.h:803
void MCAN_disableLoopbackMode(void)
Disables Loopback Test Mode for MCAN module.
uint32_t MCAN_IntLineNum
Enum to select the MCAN interrupt lines.
Definition: MCAN.h:104
uint8_t rtr
Definition: MCAN.h:1053
uint32_t rfdf
Definition: MCAN.h:660
uint32_t rxFIFO1Size
Definition: MCAN.h:727
uint8_t * data
Definition: MCAN.h:1091
Structure for MCAN Tx Buffer element.
Definition: MCAN.h:888
uint8_t xtd
Definition: MCAN.h:1007
uint32_t pxhDisable
Definition: MCAN.h:527
uint32_t rxBufElemSize
Definition: MCAN.h:744
uint32_t mm
Definition: MCAN.h:981
void MCAN_disableInt(uint32_t intMask)
Disables interrupts.
uint32_t txBufNum
Definition: MCAN.h:766
Structure for MCAN Tx FIFO/Queue Status.
Definition: MCAN.h:844
uint32_t rxFIFO0ElemSize
Definition: MCAN.h:746
uint32_t rxFIFO0StartAddr
Definition: MCAN.h:708
uint32_t putIdx
Definition: MCAN.h:830
uint32_t MCAN_GFCNonMatching
Enum to represent the MCAN general filter configuration for non-matching frames.
Definition: MCAN.h:331
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.
Structure for MCAN Tx Event FIFO element.
Definition: MCAN.h:1100
uint32_t esi
Definition: MCAN.h:906
uint32_t MCAN_getIntStatus(void)
Returns interrupt status.
void MCAN_readTxEventFIFO(MCAN_TxEventFIFOElement *txEventElem)
Reads message from Tx Event FIFO.
uint32_t fdMode
Definition: MCAN.h:505
uint8_t esi
Definition: MCAN.h:1063
uint16_t rxts
Definition: MCAN.h:1051
uint32_t MCAN_ComState
Enum to represent MCAN&#39;s communication state.
Definition: MCAN.h:311
uint32_t filterIdx
Definition: MCAN.h:801
Structure for MCAN configuration parameters.
Definition: MCAN.h:556
Structure for MCAN Rx Buffer element.
Definition: MCAN.h:992
uint32_t txpEnable
Definition: MCAN.h:516
uint8_t brs
Definition: MCAN.h:1074
uint32_t efc
Definition: MCAN.h:976
uint32_t MCAN_TimeOutSelect
Enum to represent the MCAN time-out counter configuration.
Definition: MCAN.h:196
uint16_t rxts
Definition: MCAN.h:1000
uint32_t MCAN_getTxBufCancellationStatus(void)
Returns Transmit Buffer Cancellation Finished status.
uint32_t getIdx
Definition: MCAN.h:828
void MCAN_disableTxBufTransInt(uint32_t bufMask)
Disables Tx Buffer Transmission Interrupt.
uint32_t MCAN_readReg(uint32_t offset)
Structure for MCAN Message RAM Configuration Parameters. Message RAM can contain following sections: ...
Definition: MCAN.h:691
Structure for MCAN Transmitter Delay Compensation parameters.
Definition: MCAN.h:463
uint32_t fifoFull
Definition: MCAN.h:832
uint32_t tdco
Definition: MCAN.h:469
void MCAN_addExtMsgIDFilter(uint32_t filtNum, const MCAN_ExtMsgIDFilterElement *elem)
Adds Extended Message ID Filter Element.
uint8_t fdf
Definition: MCAN.h:1028
uint32_t MCAN_RxFIFONum
Enum to represent the MCAN Rx FIFO number.
Definition: MCAN.h:152
© Copyright 1995-2023, Texas Instruments Incorporated. All rights reserved.
Trademarks | Privacy policy | Terms of use | Terms of sale