MCUSW
Can.h
Go to the documentation of this file.
1 /*
2 *
3 * Copyright (c) 2024 Texas Instruments Incorporated
4 *
5 * All rights reserved not granted herein.
6 *
7 * Limited License.
8 *
9 * Texas Instruments Incorporated grants a world-wide, royalty-free, non-exclusive
10 * license under copyrights and patents it now or hereafter owns or controls to make,
11 * have made, use, import, offer to sell and sell ("Utilize") this software subject to the
12 * terms herein. With respect to the foregoing patent license, such license is granted
13 * solely to the extent that any such patent is necessary to Utilize the software alone.
14 * The patent license shall not apply to any combinations which include this software,
15 * other than combinations with devices manufactured by or for TI ("TI Devices").
16 * No hardware patent is licensed hereunder.
17 *
18 * Redistributions must preserve existing copyright notices and reproduce this license
19 * (including the above copyright notice and the disclaimer and (if applicable) source
20 * code license limitations below) in the documentation and/or other materials provided
21 * with the distribution
22 *
23 * Redistribution and use in binary form, without modification, are permitted provided
24 * that the following conditions are met:
25 *
26 * * No reverse engineering, decompilation, or disassembly of this software is
27 * permitted with respect to any software provided in binary form.
28 *
29 * * any redistribution and use are licensed by TI for use only with TI Devices.
30 *
31 * * Nothing shall obligate TI to provide you with source code for the software
32 * licensed and provided to you in object code.
33 *
34 * If software source code is provided to you, modification and redistribution of the
35 * source code are permitted provided that the following conditions are met:
36 *
37 * * any redistribution and use of the source code, including any resulting derivative
38 * works, are licensed by TI for use only with TI Devices.
39 *
40 * * any redistribution and use of any object code compiled from the source code
41 * and any resulting derivative works, are licensed by TI for use only with TI Devices.
42 *
43 * Neither the name of Texas Instruments Incorporated nor the names of its suppliers
44 *
45 * may be used to endorse or promote products derived from this software without
46 * specific prior written permission.
47 *
48 * DISCLAIMER.
49 *
50 * THIS SOFTWARE IS PROVIDED BY TI AND TI'S LICENSORS "AS IS" AND ANY EXPRESS
51 * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
52 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
53 * IN NO EVENT SHALL TI AND TI'S LICENSORS BE LIABLE FOR ANY DIRECT, INDIRECT,
54 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
55 * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
56 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
57 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
58 * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
59 * OF THE POSSIBILITY OF SUCH DAMAGE.
60 *
61 */
62 
87 /*
88  * Below are the global design requirements which are met by this CAN
89  * driver which can't be mapped to a particular source ID
90  */
91 
92 /*
93  * Design: MCAL-6059,MCAL-5955,MCAL-6022,MCAL-5977,MCAL-6046,MCAL-6127,MCAL-6081,MCAL-5921,MCAL-5987,MCAL-6005,MCAL-5970
94  */
95 
96 #ifndef CAN_H_
97 #define CAN_H_
98 
99 /* ========================================================================== */
100 /* Include Files */
101 /* ========================================================================== */
102 /*
103  * Design: MCAL-5993,MCAL-6004,MCAL-6075,MCAL-5904,MCAL-5980,MCAL-6098
104  */
105 #include "Std_Types.h"
106 #include "ComStack_Types.h"
107 #include "Can_GeneralTypes.h"
108 #include "Can_Cfg.h"
109 
110 /*
111  * Design: MCAL-6106,MCAL-6144
112  */
113 #include "Os.h"
114 
115 #ifdef __cplusplus
116 extern "C"
117 {
118 #endif
119 
120 /* ========================================================================== */
121 /* Macros & Typedefs */
122 /* ========================================================================== */
123 
132 #define CAN_SW_MAJOR_VERSION (9U)
133 
135 #define CAN_SW_MINOR_VERSION (1U)
136 
137 /* @} */
138 #define CAN_SW_PATCH_VERSION (0U)
139 
147 #define CAN_AR_RELEASE_MAJOR_VERSION (4U)
148 
149 #define CAN_AR_RELEASE_MINOR_VERSION (3U)
150 
151 /* @} */
152 #define CAN_AR_RELEASE_REVISION_VERSION (1U)
153 
154 /* Global Macros */
160 #define CAN_VENDOR_ID (44U)
161 
162 #define CAN_MODULE_ID (80U)
163 
164 #define CAN_INSTANCE_ID (0U)
165 /* @} */
166 
172 #define CAN_UNINIT ((uint8)0U)
173 
174 #define CAN_READY ((uint8)1U)
175 /* @} */
176 
185 #define CAN_INIT_ID (0x00U)
186 
187 #define CAN_MAINFCT_WRITE_ID (0x01U)
188 
189 #define CAN_SETCTR_ID (0x03U)
190 
191 #define CAN_DIINT_ID (0x04U)
192 
193 #define CAN_ENINT_ID (0x05U)
194 
195 #define CAN_WRITE_ID (0x06U)
196 
197 #define CAN_VERSION_ID (0x07U)
198 
199 #define CAN_MAINFCT_READ_ID (0x08U)
200 
201 #define CAN_MAINFCT_BO_ID (0x09U)
202 
203 #define CAN_MAINFCT_WU_ID (0x0AU)
204 
205 #define CAN_CKWAKEUP_ID (0x0BU)
206 
207 #define CAN_MAINFCT_MODE_ID (0x0CU)
208 
209 #define CAN_SETBAUDRATE_ID (0x0FU)
210 
211 #define CAN_DEINIT_ID (0x10U)
212 
213 #define CAN_GETCTRERRST_ID (0x11U)
214 
215 #define CAN_GETCTRMODE_ID (0x12U)
216 
217 #define CAN_LOOPBACK_ID (0x20U)
218 
219 #define CAN_RXPROCESS_ID (0x21U)
220 
221 /* @} */
222 
229 #ifndef CAN_E_PARAM_POINTER
230 #define CAN_E_PARAM_POINTER (0x01U)
231 
232 #endif
233 #ifndef CAN_E_PARAM_HANDLE
234 #define CAN_E_PARAM_HANDLE (0x02U)
235 
236 #endif
237 #ifndef CAN_E_PARAM_DLC
238 #define CAN_E_PARAM_DLC (0x03U)
239 
240 #endif
241 #ifndef CAN_E_PARAM_CONTROLLER
242 #define CAN_E_PARAM_CONTROLLER (0x04U)
243 
244 #endif
245 #ifndef CAN_E_UNINIT
246 #define CAN_E_UNINIT (0x05U)
247 
248 #endif
249 #ifndef CAN_E_TRANSITION
250 #define CAN_E_TRANSITION (0x06U)
251 
252 #endif
253 #ifndef CAN_E_DATALOST
254 #define CAN_E_DATALOST (0x07U)
255 
256 #endif
257 #ifndef CAN_E_PARAM_BAUDRATE
258 #define CAN_E_PARAM_BAUDRATE (0x08U)
259 
260 #endif
261 #ifndef CAN_E_ICOM_CONFIG_INVALID
262 #define CAN_E_ICOM_CONFIG_INVALID (0x09U)
263 
264 #endif
265 #ifndef CAN_E_INIT_FAILED
266 #define CAN_E_INIT_FAILED (0x0AU)
267 
268 #endif
269 /* @} */
270 
279 #define CAN_CFG_ID_0 (0x01U)
280 
282 #define CAN_CFG_ID_1 (0x02U)
283 
284 #define CAN_CFG_ID_2 (0x04U)
285 
286 #define CAN_CFG_ID_3 (0x08U)
287 
289 #define CAN_CFG_ID_4 (0x10U)
290 
292 #define CAN_CFG_ID_5 (0x20U)
293 
294 #define CAN_CFG_ID_6 (0x40U)
295 /* @} */
296 
302 #define MIXED_MODE_MB_ID (2U)
303 /* @} */
304 
305 #if (STD_ON == CAN_SAFETY_DIAGNOSTIC)
306 
313 #define MCAN_ERR_TYPE_PEA_ERROR (1U)
314 
315 #define MCAN_ERR_TYPE_TOO_ERROR (2U)
316 /* @} */
317 
323 #define MCAN_LSB_BIT_SET (1U)
324 /* @} */
325 #endif /* (STD_ON == CAN_SAFETY_DIAGNOSTIC) */
326 
327 /* ========================================================================== */
328 /* Structures and Enums */
329 /* ========================================================================== */
338 typedef enum
339 {
345 
349 typedef enum
350 {
351  CAN_FULL = 0x0U,
353  CAN_BASIC = 0x1U
356 
360 typedef enum
361 {
369 
370 #if (STD_ON == CAN_SAFETY_DIAGNOSTIC)
371 
374 typedef enum
375 {
395 #endif /* (STD_ON == CAN_SAFETY_DIAGNOSTIC) */
396 
401 
405 typedef uint32 Can_InterruptMask_Type;
406 
410 typedef struct Can_MaskStruct
411 {
412  uint32 MaskValue;
414 }Can_MaskType;
415 
419 typedef struct Can_HwFilterStruct
420 {
421  Can_IdType IDValue;
423  uint32 Mask;
426 
430 typedef struct Can_FdBaudConfigStruct
431 {
432  uint16 Baud;
434  uint8 PropSeg;
436  uint8 Pseg1;
438  uint8 Pseg2;
440  uint8 Sjw;
442  uint16 TimingValues;
444  uint16 BrpValue;
448  boolean BrsSwitch;
451 
455 typedef struct Can_BaudConfigStruct
456 {
457  uint16 Baud;
459  uint8 PropSeg;
461  uint8 Pseg1;
463  uint8 Pseg2;
465  uint8 Sjw;
467  uint16 TimingValues;
469  uint16 BrpValue;
474 
478 typedef struct Can_ControllerStruct
479 {
485 
489 typedef struct Can_ControllerStruct_PC
490 {
493  boolean CntrActive;
495  uint32 CntrAddr;
508 
512 typedef struct Can_MailboxStruct
513 {
516  uint32 MBIdType;
518  Can_HwHandleType HwHandle;
528  uint32 HwFilterCnt;
539 
543 typedef struct Can_MailboxStruct_PC
544 {
545  uint16 CanObjectId;
548 
552 typedef struct
553 {
554  uint32 Reserved;
556 }Can_DmaPrms;
557 
558 /*
559  * Design: MCAL-5980
560  */
564 typedef struct Can_ConfigType_s
565 {
572  uint32 MaxMbCnt;
574  uint32 MaxBaudConfigID[CAN_MAX_CONTROLLER];
579 
580 #if (STD_ON == CAN_REGISTER_READBACK_API)
581 
588 typedef struct
589 {
629 #endif /* (STD_ON == CAN_REGISTER_READBACK_API) */
630 
631 /* @} */
632 
633 /* ========================================================================== */
634 /* Function Declarations */
635 /* ========================================================================== */
636 
637 #if (CAN_VERSION_INFO_API == STD_ON)
638 
658 FUNC(void,
659  CAN_CODE) Can_GetVersionInfo(P2VAR(Std_VersionInfoType, AUTOMATIC,
660  CAN_APPL_DATA) VersionInfo);
661 #endif
662 
681 FUNC(void, CAN_CODE) Can_Init(P2CONST(Can_ConfigType, AUTOMATIC,
682  CAN_PBCFG) CfgPtr);
683 
711 FUNC(Std_ReturnType, CAN_CODE) Can_SetControllerMode(
712  uint8 Controller, Can_ControllerStateType Transition);
713 
744 FUNC(Std_ReturnType, CAN_CODE) Can_Write(Can_HwHandleType Hth,
745  const Can_PduType *PduInfo);
746 
767 FUNC(void, CAN_CODE) Can_DisableControllerInterrupts(uint8 Controller);
768 
788 FUNC(void, CAN_CODE) Can_EnableControllerInterrupts(uint8 Controller);
789 
790 /* polling functions (always available for non polled systems also)*/
791 
806 FUNC(void, CAN_CODE) Can_MainFunction_Write(void);
807 
822 FUNC(void, CAN_CODE) Can_MainFunction_BusOff(void);
823 
838 FUNC(void, CAN_CODE) Can_MainFunction_Read(void);
839 
854 FUNC(void, CAN_CODE) Can_MainFunction_Wakeup(void);
855 
869 FUNC(void, CAN_CODE) Can_MainFunction_Mode(void);
870 
871 /* Baud rate functions */
897 FUNC(Std_ReturnType, CAN_CODE) Can_SetBaudrate(uint8 Controller,
898  uint16 BaudRateConfigID);
899 
900 #if (CAN_LOOPBACK_ENABLE == STD_ON)
901 
927 FUNC(Std_ReturnType, CAN_CODE) Can_TestLoopBackModeEnable(uint8 Controller,
928  uint8 Mode);
929 
956 FUNC(Std_ReturnType, CAN_CODE) Can_TestLoopBackModeDisable(uint8 Controller,
957  uint8 Mode);
958 #endif
959 
960 #if (STD_ON == CAN_REGISTER_READBACK_API)
961 
984 Std_ReturnType Can_RegisterReadback(VAR(uint8, AUTOMATIC)Controller,
985  P2VAR(Can_RegisterReadbackType, AUTOMATIC,
986  CAN_APPL_DATA) RegRbPtr);
987 #endif
988 
989 #if (STD_ON == CAN_SAFETY_DIAGNOSTIC)
990 
1015 Std_ReturnType Can_EnableIntr(VAR(uint8, AUTOMATIC)Controller,
1016  VAR(uint8, AUTOMATIC)CanErrVar);
1017 
1043 Std_ReturnType Can_DisableIntr(VAR(uint8, AUTOMATIC)Controller,
1044  VAR(uint8, AUTOMATIC)CanErrVar);
1045 
1076 Can_IrqStatusType Can_GetIntrStatus(VAR(uint8, AUTOMATIC)Controller);
1077 
1101 Std_ReturnType Can_ClearIntrStatus(VAR(uint8, AUTOMATIC)Controller);
1102 #endif /* (STD_ON == CAN_SAFETY_DIAGNOSTIC) */
1103 
1124 FUNC(void, CAN_CODE) Can_IntISR_Fun(Can_ControllerInstance CanInstanceID);
1125 
1126 
1148 FUNC(void, CAN_CODE) Can_IntISR_Function(Can_ControllerInstance CanInstanceID,uint32 baseAddr);
1149 
1166 FUNC(void, CAN_CODE) Can_DeInit(void);
1167 
1194 FUNC(Std_ReturnType, CAN_CODE) Can_GetControllerMode(uint8 Controller,
1195  Can_ControllerStateType* ControllerModePtr);
1196 
1221 FUNC(Std_ReturnType, CAN_CODE) Can_GetControllerErrorState
1222  (uint8 ControllerId, Can_ErrorStateType* ErrorStatePtr);
1223 
1224 #ifdef __cplusplus
1225 }
1226 #endif
1227 
1228 #endif /* CAN_H_ end file*/
1229 /* End of File: Can.h */
1230 
1231 /* @} */
Std_ReturnType Can_EnableIntr(VAR(uint8,) Controller, VAR(uint8,) CanErrVar)
This service will Enable the interrupts.
Can_BaudConfigType * DefaultBaud
Definition: Can.h:480
Std_ReturnType Can_GetControllerMode(uint8 Controller, Can_ControllerStateType *ControllerModePtr)
This service reports about the current status of the requested CAN controller.
uint8 PropSeg
Definition: Can.h:459
void Can_DeInit(void)
This function de-initializes the module.
Can_IrqStatusType
CAN IRQ status enum.
Definition: Can.h:374
uint8 CanFdPaddingValue
Definition: Can.h:530
uint32 CanReadBackRegCREL
Definition: Can.h:594
uint16 Baud
Definition: Can.h:432
boolean CanHardwareObjectUsesPolling
Definition: Can.h:536
Definition: Can.h:362
Std_ReturnType Can_ClearIntrStatus(VAR(uint8,) Controller)
This service will clear the interrupt status.
Can mailox configuration definition.
Definition: Can.h:512
Can_MailboxType ** MailBoxList
Definition: Can.h:570
uint8 CanHandleType
Definition: Can.h:514
Can_ControllerInstance CanControllerInst
Definition: Can.h:503
uint32 CanReadBackRegENDN
Definition: Can.h:596
uint16 BrpValue
Definition: Can.h:469
Definition: Can.h:382
void Can_EnableControllerInterrupts(uint8 Controller)
This function enables all allowed interrupts.
Std_ReturnType Can_SetControllerMode(uint8 Controller, Can_ControllerStateType Transition)
This function performs software triggered state transitions of the CAN controller State machine.
void Can_MainFunction_Read(void)
This function performs the polling of RX indications when CAN_RX_PROCESSING is set to POLLING.
Std_ReturnType Can_RegisterReadback(VAR(uint8,) Controller, Can_RegisterReadbackType *RegRbPtr)
This service will readback CAN registers.
Definition: Can.h:342
void Can_MainFunction_BusOff(void)
This function performs the polling of bus-off events that are configured statically as 'to be polled'...
Can_TxRxProcessingType TxProcessingType
Definition: Can.h:499
Can_ControllerType ** CanControllerList
Definition: Can.h:566
uint32 CanReadBackRegRXF1C
Definition: Can.h:620
uint32 CanReadBackRegSIDFC
Definition: Can.h:612
uint32 CanReadBackRegNBTP
Definition: Can.h:606
Can Controller Pre Compile Configuration definition.
Definition: Can.h:489
uint32 Can_InterruptMask_Type
Can Interrupt Mask type.
Definition: Can.h:405
uint32 Mask
Definition: Can.h:423
uint32 CanReadBackRegPID
Definition: Can.h:590
Can_ControllerInstance
Can Controller Instances enum.
Definition: Can_Cfg.h:369
Std_ReturnType Can_Write(Can_HwHandleType Hth, const Can_PduType *PduInfo)
This function is called by CanIf to pass a CAN message to CanDrv for transmission.
Can_TxRxProcessingType RxProcessingType
Definition: Can.h:497
Std_ReturnType Can_SetBaudrate(uint8 Controller, uint16 BaudRateConfigID)
This service shall set the baud rate configuration of the CAN controller. Depending on necessary baud...
Can_IdType IDValue
Definition: Can.h:421
Std_ReturnType Can_TestLoopBackModeDisable(uint8 Controller, uint8 Mode)
This service will disable CAN loopback mode.
Definition: Can.h:384
boolean CntrActive
Definition: Can.h:493
boolean CanFDModeEnabled
Definition: Can.h:505
uint8 Pseg1
Definition: Can.h:461
uint8 CanControllerState_Type
Can Controller State enum type.
Definition: Can.h:400
uint32 MaxMbCnt
Definition: Can.h:572
Can_BaudConfigType ** BaudRateConfigList
Definition: Can.h:482
Dummy structure will be used if DMA support is required.
Definition: Can.h:552
Definition: Can.h:376
Can mailox Pre compile configuration definition.
Definition: Can.h:543
void Can_MainFunction_Mode(void)
This function performs the polling of CAN controller mode transitions.
Definition: Can.h:366
Definition: Can.h:380
uint32 CanReadBackRegCCCR
Definition: Can.h:604
Std_ReturnType Can_GetControllerErrorState(uint8 ControllerId, Can_ErrorStateType *ErrorStatePtr)
This service obtains the error state of the CAN controller.
const Can_ControllerType_PC * Controller
Definition: Can.h:524
Can_FdBaudConfigType BaudFdRateConfig
Definition: Can.h:471
Can_MailBoxDirectionType MBDir
Definition: Can.h:522
uint32 CanReadBackRegTXBC
Definition: Can.h:622
Structure defining the CAN baud rate configuration.
Definition: Can.h:455
Can_HwFilterType ** HwFilterList
Definition: Can.h:526
uint32 CanHwObjectCount
Definition: Can.h:520
uint32 CanReadBackRegSTAT
Definition: Can.h:592
Can_TxRxProcessingType
Can Tx/Rx processing enum.
Definition: Can.h:360
uint32 MBIdType
Definition: Can.h:516
uint8 PropSeg
Definition: Can.h:434
Structure defining the filter mask to be used.
Definition: Can.h:410
Definition: Can.h:388
void Can_GetVersionInfo(Std_VersionInfoType *VersionInfo)
Function returns the version information of this module.
Std_ReturnType Can_DisableIntr(VAR(uint8,) Controller, VAR(uint8,) CanErrVar)
This service will Disable the Interrupts.
Can Controller Configuration definition.
Definition: Can.h:478
VAR(uint8, ETH_VAR_NO_INIT_128) Eth_Ctrl_0_Egress_BufferMem_0[24576U]
Definition: Can.h:392
Can_HwHandleType HwHandle
Definition: Can.h:518
uint8 ControllerId
Definition: Can.h:491
uint16 BrpValue
Definition: Can.h:444
boolean BrsSwitch
Definition: Can.h:448
uint32 CanReadBackRegRXBC
Definition: Can.h:618
Definition: Can.h:386
uint8 Pseg1
Definition: Can.h:436
uint16 Baud
Definition: Can.h:457
#define CAN_MAX_CONTROLLER
Definition: Can_Cfg.h:161
Structure defining the HW filter to be used.
Definition: Can.h:419
uint16 CanObjectId
Definition: Can.h:545
Definition: Can.h:340
Definition: Can.h:364
void Can_MainFunction_Write(void)
This function performs the polling of TX confirmation when CAN_TX_PROCESSING is set to POLLING.
void Can_IntISR_Function(Can_ControllerInstance CanInstanceID, uint32 baseAddr)
This function is the ISR for CAN controller 0/INT 0.
uint8 Sjw
Definition: Can.h:465
uint32 CanReadBackRegTXEFC
Definition: Can.h:626
Can MCAL root configuration structure.
Definition: Can.h:564
uint16 TimingValues
Definition: Can.h:442
uint16 TrcvCompDelay
Definition: Can.h:446
uint8 Pseg2
Definition: Can.h:463
Definition: Can.h:351
Can_DmaPrms * DmaPrms
Definition: Can.h:576
Definition: Can.h:390
This file contains generated pre compile configuration file for CAN MCAL driver.
uint8 CanMaxControllerCount
Definition: Can.h:568
uint32 CntrAddr
Definition: Can.h:495
Definition: Can.h:378
uint32 CanReadBackRegGFC
Definition: Can.h:610
uint16 TimingValues
Definition: Can.h:467
uint32 CanReadBackRegRXF0C
Definition: Can.h:616
Definition: Can.h:353
uint32 MaskValue
Definition: Can.h:412
uint32 CanReadBackRegTDCR
Definition: Can.h:608
Can_HandleType
Can Handle Type enum.
Definition: Can.h:349
Std_ReturnType Can_TestLoopBackModeEnable(uint8 Controller, uint8 Mode)
This service will enable CAN loopback mode.
Can_MailBoxDirectionType
Can Mailbox direction enum.
Definition: Can.h:338
uint32 CanReadBackRegCTRL
Definition: Can.h:598
void Can_MainFunction_Wakeup(void)
This function performs the polling of wake-up events that are configured statically as 'to be polled'...
uint32 CanReadBackRegTXESC
Definition: Can.h:624
void Can_DisableControllerInterrupts(uint8 Controller)
This function disables all interrupts for this CAN controller.
Structure defining the CAN FD data phase baud rate configuration.
Definition: Can.h:430
uint32 CanReadBackRegDBTP
Definition: Can.h:600
boolean BusOffProcessingInterrupt
Definition: Can.h:501
Can_IrqStatusType Can_GetIntrStatus(VAR(uint8,) Controller)
This service will provide the status of the interrupt.
uint8 Pseg2
Definition: Can.h:438
uint32 CanReadBackRegRWD
Definition: Can.h:602
uint8 Sjw
Definition: Can.h:440
Register Readback Structure.
Definition: Can.h:588
void Can_Init(const Can_ConfigType *CfgPtr)
This function initializes the module.
uint32 HwFilterCnt
Definition: Can.h:528
uint32 Reserved
Definition: Can.h:554
uint32 CanReadBackRegXIDFC
Definition: Can.h:614
void Can_IntISR_Fun(Can_ControllerInstance CanInstanceID)
This function is the ISR for CAN controller 0/INT 0.