Can_VS_0_PBcfg.c 35 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157
  1. /*==================================================================================================
  2. * Project : RTD AUTOSAR 4.4
  3. * Platform : CORTEXM
  4. * Peripheral : FLEXCAN
  5. * Dependencies :
  6. *
  7. * Autosar Version : 4.4.0
  8. * Autosar Revision : ASR_REL_4_4_REV_0000
  9. * Autosar Conf.Variant :
  10. * SW Version : 1.0.0
  11. * Build Version : S32K1_RTD_1_0_0_HF01_D2109_ASR_REL_4_4_REV_0000_20210907
  12. *
  13. * (c) Copyright 2020-2021 NXP Semiconductors
  14. * All Rights Reserved.
  15. *
  16. * NXP Confidential. This software is owned or controlled by NXP and may only be
  17. * used strictly in accordance with the applicable license terms. By expressly
  18. * accepting such terms or by downloading, installing, activating and/or otherwise
  19. * using the software, you are agreeing that you have read, and that you agree to
  20. * comply with and are bound by, such license terms. If you do not agree to be
  21. * bound by the applicable license terms, then you may not retain, install,
  22. * activate or otherwise use the software.
  23. ==================================================================================================*/
  24. /*==================================================================================================
  25. ==================================================================================================*/
  26. /**
  27. * @file Can_PBcfg_VS_0.c
  28. * @version 1.0.0
  29. *
  30. * @brief AUTOSAR Can - module interface
  31. * @details Configuration Structures for PostBuild
  32. *
  33. * @addtogroup CAN_DRIVER
  34. * @{
  35. */
  36. #ifdef __cplusplus
  37. extern "C"{
  38. #endif
  39. /**
  40. * @page misra_violations MISRA-C:2012 violations
  41. *
  42. * @section [global]
  43. * Violates MISRA 2012 Required Rule 5.1, External identifiers shall be distinct.
  44. * The used compilers use more than 31 chars for identifiers.
  45. *
  46. * @section [global]
  47. * Violates MISRA 2012 Required Rule 5.2, Identifiers declared in the same scope and name space shall be distinct.
  48. * The used compilers use more than 31 chars for identifiers.
  49. *
  50. * @section [global]
  51. * Violates MISRA 2012 Required Rule 5.4, Macro identifiers shall be distinct.
  52. * The used compilers use more than 31 chars for identifiers.
  53. *
  54. * @section [global]
  55. * Violates MISRA 2012 Required Rule 5.5, Identifiers shall be distinct from macro names.
  56. * The used compilers use more than 31 chars for identifiers.
  57. *
  58. * @section Can_PBcfg_VS_0_c_REF_1
  59. * Violates MISRA 2012 Required Directive 4.10, Precautions shall be taken in order to prevent the contents
  60. * of a header file being included more than once
  61. * This violation is not fixed since the inclusion of <MA>_MemMap.h is as per AUTOSAR requirement [SWS_MemMap_00003].
  62. *
  63. * @section Can_PBcfg_VS_0_c_REF_2
  64. * Violates MISRA 2012 Advisory Rule 20.1, #include directives should only be preceded by preprocessor directives or comments.
  65. * AUTOSAR imposes the specification of the sections in which certain parts of the driver must be placed.
  66. *
  67. * @section Can_PBcfg_VS_0_c_REF_3
  68. * Violates MISRA 2012 Advisory Rule 8.7, Function and objects should not be defined with external linkage if they
  69. * are referenced in only one translation unit.
  70. * This constant variable will be called by higher layer.
  71. *
  72. * @section Can_PBcfg_VS_0_c_REF_4
  73. * Violates MISRA 2012 Advisory Rule 8.9, An object should be defined at block scope if identifier only appears in a single function.
  74. * These objects are used when Precompile is supported.
  75. *
  76. * @section Can_PBcfg_VS_0_c_REF_5
  77. * Violates MISRA 2012 Required Rule 8.4, A compatible declaration shall be visible when an object or function with external linkage is defined.
  78. *
  79. */
  80. /*
  81. (CAN078) The code file structure shall not be defined within this specification completely.
  82. At this point it shall be pointed out that the code-file structure shall include the following file named: Can_PBcfg_VS_0.c.
  83. This file shall contain all post-build time configurable parameters.
  84. (CAN221) VariantPB: (Mix of precompile and Post Build multiple selectable configurable configurations.
  85. */
  86. /*==================================================================================================
  87. * INCLUDE FILES
  88. * 1) system and project includes
  89. * 2) needed interfaces from external units
  90. * 3) internal and external interfaces from this unit
  91. ==================================================================================================*/
  92. #include "Can.h"
  93. #include "Can_Ipw_Types.h"
  94. #include "USER_CONFIG.h"
  95. /*==================================================================================================
  96. * SOURCE FILE VERSION INFORMATION
  97. ==================================================================================================*/
  98. /*
  99. * @file Can_PBcfg_VS_0.c
  100. */
  101. #define CAN_VENDOR_ID_PBCFG_VS_0_C 43
  102. #define CAN_AR_RELEASE_MAJOR_VERSION_PBCFG_VS_0_C 4
  103. #define CAN_AR_RELEASE_MINOR_VERSION_PBCFG_VS_0_C 4
  104. #define CAN_AR_RELEASE_REVISION_VERSION_PBCFG_VS_0_C 0
  105. #define CAN_SW_MAJOR_VERSION_PBCFG_VS_0_C 1
  106. #define CAN_SW_MINOR_VERSION_PBCFG_VS_0_C 0
  107. #define CAN_SW_PATCH_VERSION_PBCFG_VS_0_C 0
  108. /*==================================================================================================
  109. * FILE VERSION CHECKS
  110. ==================================================================================================*/
  111. /* Check if current file and Can.h are of the same vendor */
  112. #if (CAN_VENDOR_ID_PBCFG_VS_0_C != CAN_VENDOR_ID)
  113. #error "Can_PBcfg_VS_0.c and Can.h have different vendor ids"
  114. #endif
  115. /* Check if current file and Can.h are of the same Autosar version */
  116. #if ((CAN_AR_RELEASE_MAJOR_VERSION_PBCFG_VS_0_C != CAN_AR_RELEASE_MAJOR_VERSION) || \
  117. (CAN_AR_RELEASE_MINOR_VERSION_PBCFG_VS_0_C != CAN_AR_RELEASE_MINOR_VERSION) || \
  118. (CAN_AR_RELEASE_REVISION_VERSION_PBCFG_VS_0_C != CAN_AR_RELEASE_REVISION_VERSION))
  119. #error "AutoSar Version Numbers of Can_PBcfg_VS_0.c and Can.h are different"
  120. #endif
  121. /* Check if current file and Can.h are of the same Software version */
  122. #if ((CAN_SW_MAJOR_VERSION_PBCFG_VS_0_C != CAN_SW_MAJOR_VERSION) || \
  123. (CAN_SW_MINOR_VERSION_PBCFG_VS_0_C != CAN_SW_MINOR_VERSION) || \
  124. (CAN_SW_PATCH_VERSION_PBCFG_VS_0_C != CAN_SW_PATCH_VERSION))
  125. #error "Software Version Numbers of Can_PBcfg_VS_0.c and Can.h are different"
  126. #endif
  127. /* Check if current file and Can_Ipw_Types.h are of the same vendor */
  128. #if (CAN_VENDOR_ID_PBCFG_VS_0_C != CAN_IPW_TYPES_VENDOR_ID_H)
  129. #error "Can_PBcfg_VS_0.c and Can_Ipw_Types.h have different vendor ids"
  130. #endif
  131. /* Check if current file and Can_Ipw_Types.h are of the same Autosar version */
  132. #if ((CAN_AR_RELEASE_MAJOR_VERSION_PBCFG_VS_0_C != CAN_IPW_TYPES_AR_RELEASE_MAJOR_VERSION_H) || \
  133. (CAN_AR_RELEASE_MINOR_VERSION_PBCFG_VS_0_C != CAN_IPW_TYPES_AR_RELEASE_MINOR_VERSION_H) || \
  134. (CAN_AR_RELEASE_REVISION_VERSION_PBCFG_VS_0_C != CAN_IPW_TYPES_AR_RELEASE_REVISION_VERSION_H))
  135. #error "AutoSar Version Numbers of Can_PBcfg_VS_0.c and Can_Ipw_Types.h are different"
  136. #endif
  137. /* Check if current file and Can_Ipw_Types.h are of the same Software version */
  138. #if ((CAN_SW_MAJOR_VERSION_PBCFG_VS_0_C != CAN_IPW_TYPES_SW_MAJOR_VERSION_H) || \
  139. (CAN_SW_MINOR_VERSION_PBCFG_VS_0_C != CAN_IPW_TYPES_SW_MINOR_VERSION_H) || \
  140. (CAN_SW_PATCH_VERSION_PBCFG_VS_0_C != CAN_IPW_TYPES_SW_PATCH_VERSION_H))
  141. #error "Software Version Numbers of Can_PBcfg_VS_0.c and Can_Ipw_Types.h are different"
  142. #endif
  143. /*==================================================================================================
  144. * GLOBAL VARIABLES
  145. ==================================================================================================*/
  146. #if (CAN_FEATURE_HAS_DMA_ENABLE == STD_ON)
  147. /* CAN_START_SEC_VAR_CLEARED_UNSPECIFIED_NO_CACHEABLE */
  148. #define CAN_START_SEC_VAR_CLEARED_UNSPECIFIED_NO_CACHEABLE
  149. #include "Can_MemMap.h"
  150. #define CAN_STOP_SEC_VAR_CLEARED_UNSPECIFIED_NO_CACHEABLE
  151. #include "Can_MemMap.h"
  152. /* CAN_STOP_SEC_VAR_CLEARED_UNSPECIFIED_NO_CACHEABLE */
  153. #endif /* (CAN_FEATURE_HAS_DMA_ENABLE == STD_ON) */
  154. /*==================================================================================================
  155. * GLOBAL FUNCTION PROTOTYPES
  156. ==================================================================================================*/
  157. #define CAN_START_SEC_CODE
  158. /* @violates @ref Can_PBcfg_VS_0_c_REF_1 MISRA 2012 Required Directive 4.10 */
  159. #include "Can_MemMap.h"
  160. #if (CAN_TIMESTAMP_ENABLE == STD_ON)
  161. #endif
  162. #define CAN_STOP_SEC_CODE
  163. /* @violates @ref Can_PBcfg_VS_0_c_REF_1 MISRA 2012 Required Directive 4.10 */
  164. /* @violates @ref Can_PBcfg_VS_0_c_REF_2 MISRA 2012 Advisory Rule 20.1 */
  165. #include "Can_MemMap.h"
  166. /*==================================================================================================
  167. * LOCAL TYPEDEFS (STRUCTURES, UNIONS, ENUMS)
  168. ==================================================================================================*/
  169. /*==================================================================================================
  170. * LOCAL CONSTANTS
  171. ==================================================================================================*/
  172. #define CAN_START_SEC_CONFIG_DATA_32
  173. #include "Can_MemMap.h"
  174. /**
  175. * @brief Hardware Buffer Address of CanController_0
  176. */
  177. static const uint32 Can_au32HwBufferAddr_Ctrl0[11U]=
  178. {
  179. (FLEXCAN_0_BASE + (uint32)0x0080U),
  180. (FLEXCAN_0_BASE + (uint32)0x0100U),
  181. (FLEXCAN_0_BASE + (uint32)0x0110U),
  182. (FLEXCAN_0_BASE + (uint32)0x0120U),
  183. (FLEXCAN_0_BASE + (uint32)0x0130U),
  184. (FLEXCAN_0_BASE + (uint32)0x0140U),
  185. (FLEXCAN_0_BASE + (uint32)0x0150U),
  186. (FLEXCAN_0_BASE + (uint32)0x0160U),
  187. (FLEXCAN_0_BASE + (uint32)0x0170U),
  188. (FLEXCAN_0_BASE + (uint32)0x0180U),
  189. (FLEXCAN_0_BASE + (uint32)0x0190U)
  190. };
  191. /**
  192. * @brief Hardware Buffer Address of CanController_1
  193. */
  194. static const uint32 Can_au32HwBufferAddr_Ctrl1[11U]=
  195. {
  196. (FLEXCAN_1_BASE + (uint32)0x0080U),
  197. (FLEXCAN_1_BASE + (uint32)0x0100U),
  198. (FLEXCAN_1_BASE + (uint32)0x0110U),
  199. (FLEXCAN_1_BASE + (uint32)0x0120U),
  200. (FLEXCAN_1_BASE + (uint32)0x0130U),
  201. (FLEXCAN_1_BASE + (uint32)0x0140U),
  202. (FLEXCAN_1_BASE + (uint32)0x0150U),
  203. (FLEXCAN_1_BASE + (uint32)0x0160U),
  204. (FLEXCAN_1_BASE + (uint32)0x0170U),
  205. (FLEXCAN_1_BASE + (uint32)0x0180U),
  206. (FLEXCAN_1_BASE + (uint32)0x0190U)
  207. };
  208. /**
  209. * @brief Hardware Buffer Address of CanController_2
  210. */
  211. static const uint32 Can_au32HwBufferAddr_Ctrl2[8U]=
  212. {
  213. (FLEXCAN_2_BASE + (uint32)0x0080U),
  214. (FLEXCAN_2_BASE + (uint32)0x0100U),
  215. (FLEXCAN_2_BASE + (uint32)0x0110U),
  216. (FLEXCAN_2_BASE + (uint32)0x0120U),
  217. (FLEXCAN_2_BASE + (uint32)0x0130U),
  218. (FLEXCAN_2_BASE + (uint32)0x0140U),
  219. (FLEXCAN_2_BASE + (uint32)0x0150U),
  220. (FLEXCAN_2_BASE + (uint32)0x0160U)
  221. };
  222. /**
  223. * @brief Hardware Filter of Can0HardwareObject_RX
  224. */
  225. static const Can_HwFilterType Can_aHwFilter_Object0[8U]=
  226. {
  227. {
  228. (uint32)0x00000000U,
  229. (uint32)0x00000000U
  230. },
  231. {
  232. (uint32)0x00000000U,
  233. (uint32)0x00000000U
  234. },
  235. {
  236. (uint32)0x00000000U,
  237. (uint32)0x00000000U
  238. },
  239. {
  240. (uint32)0x00000000U,
  241. (uint32)0x00000000U
  242. },
  243. {
  244. (uint32)0x00000000U,
  245. (uint32)0x00000000U
  246. },
  247. {
  248. (uint32)0x00000000U,
  249. (uint32)0x00000000U
  250. },
  251. {
  252. (uint32)0x00000000U,
  253. (uint32)0x00000000U
  254. },
  255. {
  256. (uint32)0x00000000U,
  257. (uint32)0x00000000U
  258. }
  259. };
  260. /**
  261. * @brief Hardware Filter of Can1HardwareObject_RX
  262. */
  263. static const Can_HwFilterType Can_aHwFilter_Object1[8U]=
  264. {
  265. {
  266. (uint32)0x00000000U,
  267. (uint32)0x00000000U
  268. },
  269. {
  270. (uint32)0x00000000U,
  271. (uint32)0x00000000U
  272. },
  273. {
  274. (uint32)0x00000000U,
  275. (uint32)0x00000000U
  276. },
  277. {
  278. (uint32)0x00000000U,
  279. (uint32)0x00000000U
  280. },
  281. {
  282. (uint32)0x00000000U,
  283. (uint32)0x00000000U
  284. },
  285. {
  286. (uint32)0x00000000U,
  287. (uint32)0x00000000U
  288. },
  289. {
  290. (uint32)0x00000000U,
  291. (uint32)0x00000000U
  292. },
  293. {
  294. (uint32)0x00000000U,
  295. (uint32)0x00000000U
  296. }
  297. };
  298. /**
  299. * @brief Hardware Filter of Can2HardwareObject_RX
  300. */
  301. static const Can_HwFilterType Can_aHwFilter_Object2[8U]=
  302. {
  303. {
  304. (uint32)0x00000000U,
  305. (uint32)0x00000000U
  306. },
  307. {
  308. (uint32)0x00000000U,
  309. (uint32)0x00000000U
  310. },
  311. {
  312. (uint32)0x00000000U,
  313. (uint32)0x00000000U
  314. },
  315. {
  316. (uint32)0x00000000U,
  317. (uint32)0x00000000U
  318. },
  319. {
  320. (uint32)0x00000000U,
  321. (uint32)0x00000000U
  322. },
  323. {
  324. (uint32)0x00000000U,
  325. (uint32)0x00000000U
  326. },
  327. {
  328. (uint32)0x00000000U,
  329. (uint32)0x00000000U
  330. },
  331. {
  332. (uint32)0x00000000U,
  333. (uint32)0x00000000U
  334. }
  335. };
  336. #define CAN_STOP_SEC_CONFIG_DATA_32
  337. #include "Can_MemMap.h"
  338. #define CAN_START_SEC_CONFIG_DATA_8
  339. #include "Can_MemMap.h"
  340. /**
  341. * @brief Mapping Controller ID to Controller hardware offset
  342. */
  343. static const uint8 Can_aCtrlOffsetToCtrlIDMap[CAN_HWCONTROLLER_SUPPORT]=
  344. {
  345. (uint8)0,
  346. (uint8)1,
  347. (uint8)2
  348. };
  349. /**
  350. * @brief Mapping Controller ID to Hardware Object ID
  351. */
  352. static const uint8 Can_aHwObjIDToCtrlIDMap[CAN_HWOBJECT_CONFIG_COUNT]=
  353. {
  354. (uint8)0U,
  355. (uint8)1U,
  356. (uint8)2U,
  357. (uint8)0U,
  358. (uint8)1U,
  359. (uint8)2U
  360. };
  361. #define CAN_STOP_SEC_CONFIG_DATA_8
  362. #include "Can_MemMap.h"
  363. #define CAN_START_SEC_CONFIG_DATA_UNSPECIFIED
  364. /* @violates @ref Can_PBcfg_VS_0_c_REF_1 MISRA 2012 Required Directive 4.10 */
  365. /* @violates @ref Can_PBcfg_VS_0_c_REF_2 MISRA 2012 Advisory Rule 20.1 */
  366. #include "Can_MemMap.h"
  367. /**
  368. * @brief Can Hardware Object Config
  369. */
  370. /* @violates @ref Can_PBcfg_VS_0_c_REF_5 MISRA 2012 Required Rule 8.4*/
  371. static const Can_HwObjectConfigType Can_aHwObjectConfig[CAN_HWOBJECT_CONFIG_COUNT]=
  372. {
  373. /* Can0HardwareObject_RX of CanController_0*/
  374. {
  375. /* Hardware Object ID */
  376. (Can_HwHandleType)0U,
  377. /* Hardware Object handle type */
  378. CAN_RECEIVE,
  379. #if (defined CAN0_MSG_TYPE)
  380. #if (CAN0_MSG_TYPE == CAN_MSG_EXTENDED)
  381. /* ID Message type */
  382. CAN_EXTENDED,
  383. #elif (CAN0_MSG_TYPE == CAN_MSG_STANDARD)
  384. /* ID Message type */
  385. CAN_STANDARD,
  386. #else
  387. #error "please select the right CAN Msg Type of CAN0
  388. #endif
  389. #else
  390. #error "please define the CAN0_MSG_TYPE"
  391. #endif
  392. /* Object uses polling */
  393. (boolean)TRUE,
  394. /* Object enable trigger transmit */
  395. (boolean)FALSE,
  396. /* Number of Hw Object used in one Hoh */
  397. (uint8)6U,
  398. /* MainFunction RW period reference */
  399. (uint8)CanMainFunctionRWPeriods_0,
  400. /* Data Payload length */
  401. (uint8)8U,
  402. /* Padding value */
  403. (uint8)0U,
  404. /* Hardware Filter Count */
  405. (uint8)8U,
  406. /* Hw Filter Config */
  407. Can_aHwFilter_Object0,
  408. /* Message Buffer is Legacy FIFO */
  409. CAN_RX_LEGACY_FIFO,
  410. /* Buffer Index in Message buffer ram */
  411. (uint8)0U,
  412. /* Message buffer address */
  413. &Can_au32HwBufferAddr_Ctrl0[0U]
  414. #if (CAN_TIMESTAMP_ENABLE == STD_ON)
  415. /* Time Stamp Enable */
  416. ,(boolean)FALSE
  417. #endif
  418. },
  419. /* Can1HardwareObject_RX of CanController_1*/
  420. {
  421. /* Hardware Object ID */
  422. (Can_HwHandleType)1U,
  423. /* Hardware Object handle type */
  424. CAN_RECEIVE,
  425. #if (defined CAN1_MSG_TYPE)
  426. #if (CAN1_MSG_TYPE == CAN_MSG_EXTENDED)
  427. /* ID Message type */
  428. CAN_EXTENDED,
  429. #elif (CAN1_MSG_TYPE == CAN_MSG_STANDARD)
  430. /* ID Message type */
  431. CAN_STANDARD,
  432. #else
  433. #error "please select the right CAN Msg Type of CAN1
  434. #endif
  435. #else
  436. #error "please define the CAN1_MSG_TYPE"
  437. #endif
  438. /* Object uses polling */
  439. (boolean)TRUE,
  440. /* Object enable trigger transmit */
  441. (boolean)FALSE,
  442. /* Number of Hw Object used in one Hoh */
  443. (uint8)6U,
  444. /* MainFunction RW period reference */
  445. (uint8)CanMainFunctionRWPeriods_0,
  446. /* Data Payload length */
  447. (uint8)8U,
  448. /* Padding value */
  449. (uint8)0U,
  450. /* Hardware Filter Count */
  451. (uint8)8U,
  452. /* Hw Filter Config */
  453. Can_aHwFilter_Object1,
  454. /* Message Buffer is Legacy FIFO */
  455. CAN_RX_LEGACY_FIFO,
  456. /* Buffer Index in Message buffer ram */
  457. (uint8)0U,
  458. /* Message buffer address */
  459. &Can_au32HwBufferAddr_Ctrl1[0U]
  460. #if (CAN_TIMESTAMP_ENABLE == STD_ON)
  461. /* Time Stamp Enable */
  462. ,(boolean)FALSE
  463. #endif
  464. },
  465. /* Can2HardwareObject_RX of CanController_2*/
  466. {
  467. /* Hardware Object ID */
  468. (Can_HwHandleType)2U,
  469. /* Hardware Object handle type */
  470. CAN_RECEIVE,
  471. #if (defined CAN2_MSG_TYPE)
  472. #if (CAN2_MSG_TYPE == CAN_MSG_EXTENDED)
  473. /* ID Message type */
  474. CAN_EXTENDED,
  475. #elif (CAN2_MSG_TYPE == CAN_MSG_STANDARD)
  476. /* ID Message type */
  477. CAN_STANDARD,
  478. #else
  479. #error "please select the right CAN Msg Type of CAN2
  480. #endif
  481. #else
  482. #error "please define the CAN2_MSG_TYPE"
  483. #endif
  484. /* Object uses polling */
  485. (boolean)TRUE,
  486. /* Object enable trigger transmit */
  487. (boolean)FALSE,
  488. /* Number of Hw Object used in one Hoh */
  489. (uint8)6U,
  490. /* MainFunction RW period reference */
  491. (uint8)CanMainFunctionRWPeriods_0,
  492. /* Data Payload length */
  493. (uint8)8U,
  494. /* Padding value */
  495. (uint8)0U,
  496. /* Hardware Filter Count */
  497. (uint8)8U,
  498. /* Hw Filter Config */
  499. Can_aHwFilter_Object2,
  500. /* Message Buffer is Legacy FIFO */
  501. CAN_RX_LEGACY_FIFO,
  502. /* Buffer Index in Message buffer ram */
  503. (uint8)0U,
  504. /* Message buffer address */
  505. &Can_au32HwBufferAddr_Ctrl2[0U]
  506. #if (CAN_TIMESTAMP_ENABLE == STD_ON)
  507. /* Time Stamp Enable */
  508. ,(boolean)FALSE
  509. #endif
  510. },
  511. /* Can0HardwareObject_TX of CanController_0*/
  512. {
  513. /* Hardware Object ID */
  514. (Can_HwHandleType)3U,
  515. /* Hardware Object handle type */
  516. CAN_TRANSMIT,
  517. #if (defined CAN0_MSG_TYPE)
  518. #if (CAN0_MSG_TYPE == CAN_MSG_EXTENDED)
  519. /* ID Message type */
  520. CAN_EXTENDED,
  521. #elif (CAN0_MSG_TYPE == CAN_MSG_STANDARD)
  522. /* ID Message type */
  523. CAN_STANDARD,
  524. #else
  525. #error "please select the right CAN Msg Type of CAN0
  526. #endif
  527. #else
  528. #error "please define the CAN0_MSG_TYPE"
  529. #endif
  530. /* Object uses polling */
  531. (boolean)TRUE,
  532. /* Object enable trigger transmit */
  533. (boolean)FALSE,
  534. /* Number of Hw Object used in one Hoh */
  535. (uint8)10U,
  536. /* MainFunction RW period reference */
  537. (uint8)CanMainFunctionRWPeriods_0,
  538. /* Data Payload length */
  539. (uint8)8U,
  540. /* Padding value */
  541. (uint8)0U,
  542. /* Hardware Filter Count */
  543. (uint8)0U,
  544. /* Hw Filter Config */
  545. NULL_PTR,
  546. /* Message Buffer is Tx normal */
  547. CAN_TX_NORMAL,
  548. /* Buffer Index in Message buffer ram */
  549. (uint8)8U,
  550. /* Message buffer address */
  551. &Can_au32HwBufferAddr_Ctrl0[1U]
  552. #if (CAN_TIMESTAMP_ENABLE == STD_ON)
  553. /* Time Stamp Enable */
  554. ,(boolean)FALSE
  555. #endif
  556. },
  557. /* Can1HardwareObject_TX of CanController_1*/
  558. {
  559. /* Hardware Object ID */
  560. (Can_HwHandleType)4U,
  561. /* Hardware Object handle type */
  562. CAN_TRANSMIT,
  563. #if (defined CAN1_MSG_TYPE)
  564. #if (CAN1_MSG_TYPE == CAN_MSG_EXTENDED)
  565. /* ID Message type */
  566. CAN_EXTENDED,
  567. #elif (CAN1_MSG_TYPE == CAN_MSG_STANDARD)
  568. /* ID Message type */
  569. CAN_STANDARD,
  570. #else
  571. #error "please select the right CAN Msg Type of CAN1
  572. #endif
  573. #else
  574. #error "please define the CAN1_MSG_TYPE"
  575. #endif
  576. /* Object uses polling */
  577. (boolean)TRUE,
  578. /* Object enable trigger transmit */
  579. (boolean)FALSE,
  580. /* Number of Hw Object used in one Hoh */
  581. (uint8)10U,
  582. /* MainFunction RW period reference */
  583. (uint8)CanMainFunctionRWPeriods_0,
  584. /* Data Payload length */
  585. (uint8)8U,
  586. /* Padding value */
  587. (uint8)0U,
  588. /* Hardware Filter Count */
  589. (uint8)0U,
  590. /* Hw Filter Config */
  591. NULL_PTR,
  592. /* Message Buffer is Tx normal */
  593. CAN_TX_NORMAL,
  594. /* Buffer Index in Message buffer ram */
  595. (uint8)8U,
  596. /* Message buffer address */
  597. &Can_au32HwBufferAddr_Ctrl1[1U]
  598. #if (CAN_TIMESTAMP_ENABLE == STD_ON)
  599. /* Time Stamp Enable */
  600. ,(boolean)FALSE
  601. #endif
  602. },
  603. /* Can2HardwareObject_TX of CanController_2*/
  604. {
  605. /* Hardware Object ID */
  606. (Can_HwHandleType)5U,
  607. /* Hardware Object handle type */
  608. CAN_TRANSMIT,
  609. #if (defined CAN2_MSG_TYPE)
  610. #if (CAN2_MSG_TYPE == CAN_MSG_EXTENDED)
  611. /* ID Message type */
  612. CAN_EXTENDED,
  613. #elif (CAN2_MSG_TYPE == CAN_MSG_STANDARD)
  614. /* ID Message type */
  615. CAN_STANDARD,
  616. #else
  617. #error "please select the right CAN Msg Type of CAN2
  618. #endif
  619. #else
  620. #error "please define the CAN2_MSG_TYPE"
  621. #endif
  622. /* Object uses polling */
  623. (boolean)TRUE,
  624. /* Object enable trigger transmit */
  625. (boolean)FALSE,
  626. /* Number of Hw Object used in one Hoh */
  627. (uint8)7U,
  628. /* MainFunction RW period reference */
  629. (uint8)CanMainFunctionRWPeriods_0,
  630. /* Data Payload length */
  631. (uint8)8U,
  632. /* Padding value */
  633. (uint8)0U,
  634. /* Hardware Filter Count */
  635. (uint8)0U,
  636. /* Hw Filter Config */
  637. NULL_PTR,
  638. /* Message Buffer is Tx normal */
  639. CAN_TX_NORMAL,
  640. /* Buffer Index in Message buffer ram */
  641. (uint8)8U,
  642. /* Message buffer address */
  643. &Can_au32HwBufferAddr_Ctrl2[1U]
  644. #if (CAN_TIMESTAMP_ENABLE == STD_ON)
  645. /* Time Stamp Enable */
  646. ,(boolean)FALSE
  647. #endif
  648. }
  649. };
  650. /**
  651. * @brief Can Baudrate Config of CanController_0
  652. */
  653. static const Can_BaudrateConfigType Can_aBaudrateConfig_Ctrl0[1U]=
  654. {
  655. {
  656. /*Can_bEnhanceCBTEnable*/
  657. (boolean)FALSE,
  658. /* Tx Bit Rate Switch */
  659. (boolean)FALSE,
  660. /* FD enable */
  661. (boolean)FALSE,
  662. /* Nominal bit rate */
  663. #if (defined CAN0_BAUDRATE)
  664. #if (CAN0_BAUDRATE == CAN_BAUDRATE_500K)
  665. {
  666. (uint8)4U,
  667. (uint8)4U,
  668. (uint8)4U,
  669. (uint16)5U,
  670. #if (CAN_DUAL_CLOCK_MODE == STD_ON)
  671. /* Alternative Baudrate Nominal Prescaler */
  672. (uint16)9U,
  673. #endif
  674. (uint8)3U
  675. },
  676. /* Data bit rate */
  677. {
  678. (uint8)0U,
  679. (uint8)0U,
  680. (uint8)0U,
  681. (uint16)0U,
  682. #if (CAN_DUAL_CLOCK_MODE == STD_ON)
  683. (uint16)0U,
  684. #endif
  685. (uint8)0U
  686. },
  687. /* Tx Arbitration Start delay */
  688. (uint8)12U,
  689. (boolean)FALSE,
  690. (uint8)0U
  691. #elif (CAN0_BAUDRATE == CAN_BAUDRATE_250K)
  692. {
  693. (uint8)2U,
  694. (uint8)5U,
  695. (uint8)5U,
  696. (uint16)11U,
  697. #if (CAN_DUAL_CLOCK_MODE == STD_ON)
  698. /* Alternative Baudrate Nominal Prescaler */
  699. (uint16)9U,
  700. #endif
  701. (uint8)3U
  702. },
  703. /* Data bit rate */
  704. {
  705. (uint8)0U,
  706. (uint8)0U,
  707. (uint8)0U,
  708. (uint16)0U,
  709. #if (CAN_DUAL_CLOCK_MODE == STD_ON)
  710. (uint16)0U,
  711. #endif
  712. (uint8)0U
  713. },
  714. /* Tx Arbitration Start delay */
  715. (uint8)20U,
  716. (boolean)FALSE,
  717. (uint8)0U
  718. #else
  719. #error "please define the baudrate of can0 (BAUDRATE_500K or BAUDRATE_250K)"
  720. #endif
  721. #else
  722. #error "please define the CAN0_BAUDRATE"
  723. #endif
  724. }
  725. };
  726. /**
  727. * @brief HwObject's pointer structure of CanController_0
  728. */
  729. static const Can_HwObjectConfigType * const Can_apHwObject_Ctrl0[2U]=
  730. {
  731. &Can_aHwObjectConfig[0U],
  732. &Can_aHwObjectConfig[3U]
  733. };
  734. /**
  735. * @brief Can Baudrate Config of CanController_1
  736. */
  737. static const Can_BaudrateConfigType Can_aBaudrateConfig_Ctrl1[1U]=
  738. {
  739. {
  740. /*Can_bEnhanceCBTEnable*/
  741. (boolean)FALSE,
  742. /* Tx Bit Rate Switch */
  743. (boolean)FALSE,
  744. /* FD enable */
  745. (boolean)FALSE,
  746. /* Nominal bit rate */
  747. #if (defined CAN1_BAUDRATE)
  748. #if (CAN1_BAUDRATE == CAN_BAUDRATE_500K)
  749. {
  750. (uint8)4U,
  751. (uint8)4U,
  752. (uint8)4U,
  753. (uint16)5U,
  754. #if (CAN_DUAL_CLOCK_MODE == STD_ON)
  755. /* Alternative Baudrate Nominal Prescaler */
  756. (uint16)9U,
  757. #endif
  758. (uint8)3U
  759. },
  760. /* Data bit rate */
  761. {
  762. (uint8)0U,
  763. (uint8)0U,
  764. (uint8)0U,
  765. (uint16)0U,
  766. #if (CAN_DUAL_CLOCK_MODE == STD_ON)
  767. (uint16)0U,
  768. #endif
  769. (uint8)0U
  770. },
  771. /* Tx Arbitration Start delay */
  772. (uint8)12U,
  773. (boolean)FALSE,
  774. (uint8)0U
  775. #elif (CAN1_BAUDRATE == CAN_BAUDRATE_250K)
  776. {
  777. (uint8)2U,
  778. (uint8)5U,
  779. (uint8)5U,
  780. (uint16)11U,
  781. #if (CAN_DUAL_CLOCK_MODE == STD_ON)
  782. /* Alternative Baudrate Nominal Prescaler */
  783. (uint16)9U,
  784. #endif
  785. (uint8)3U
  786. },
  787. /* Data bit rate */
  788. {
  789. (uint8)0U,
  790. (uint8)0U,
  791. (uint8)0U,
  792. (uint16)0U,
  793. #if (CAN_DUAL_CLOCK_MODE == STD_ON)
  794. (uint16)0U,
  795. #endif
  796. (uint8)0U
  797. },
  798. /* Tx Arbitration Start delay */
  799. (uint8)20U,
  800. (boolean)FALSE,
  801. (uint8)0U
  802. #else
  803. #error "please define the baudrate of can1 (BAUDRATE_500K or BAUDRATE_250K)"
  804. #endif
  805. #else
  806. #error "please define the CAN1_BAUDRATE"
  807. #endif
  808. }
  809. };
  810. /**
  811. * @brief HwObject's pointer structure of CanController_1
  812. */
  813. static const Can_HwObjectConfigType * const Can_apHwObject_Ctrl1[2U]=
  814. {
  815. &Can_aHwObjectConfig[1U],
  816. &Can_aHwObjectConfig[4U]
  817. };
  818. /**
  819. * @brief Can Baudrate Config of CanController_2
  820. */
  821. static const Can_BaudrateConfigType Can_aBaudrateConfig_Ctrl2[1U]=
  822. {
  823. {
  824. /*Can_bEnhanceCBTEnable*/
  825. (boolean)FALSE,
  826. /* Tx Bit Rate Switch */
  827. (boolean)FALSE,
  828. /* FD enable */
  829. (boolean)FALSE,
  830. /* Nominal bit rate */
  831. #if (defined CAN2_BAUDRATE)
  832. #if (CAN2_BAUDRATE == CAN_BAUDRATE_500K)
  833. {
  834. (uint8)4U,
  835. (uint8)4U,
  836. (uint8)4U,
  837. (uint16)5U,
  838. #if (CAN_DUAL_CLOCK_MODE == STD_ON)
  839. /* Alternative Baudrate Nominal Prescaler */
  840. (uint16)9U,
  841. #endif
  842. (uint8)3U
  843. },
  844. /* Data bit rate */
  845. {
  846. (uint8)0U,
  847. (uint8)0U,
  848. (uint8)0U,
  849. (uint16)0U,
  850. #if (CAN_DUAL_CLOCK_MODE == STD_ON)
  851. (uint16)0U,
  852. #endif
  853. (uint8)0U
  854. },
  855. /* Tx Arbitration Start delay */
  856. (uint8)12U,
  857. (boolean)FALSE,
  858. (uint8)0U
  859. #elif (CAN2_BAUDRATE == CAN_BAUDRATE_250K)
  860. {
  861. (uint8)2U,
  862. (uint8)5U,
  863. (uint8)5U,
  864. (uint16)11U,
  865. #if (CAN_DUAL_CLOCK_MODE == STD_ON)
  866. /* Alternative Baudrate Nominal Prescaler */
  867. (uint16)9U,
  868. #endif
  869. (uint8)3U
  870. },
  871. /* Data bit rate */
  872. {
  873. (uint8)0U,
  874. (uint8)0U,
  875. (uint8)0U,
  876. (uint16)0U,
  877. #if (CAN_DUAL_CLOCK_MODE == STD_ON)
  878. (uint16)0U,
  879. #endif
  880. (uint8)0U
  881. },
  882. /* Tx Arbitration Start delay */
  883. (uint8)20U,
  884. (boolean)FALSE,
  885. (uint8)0U
  886. #else
  887. #error "please define the baudrate of can2 (BAUDRATE_500K or BAUDRATE_250K)"
  888. #endif
  889. #else
  890. #error "please define the CAN2_BAUDRATE"
  891. #endif
  892. }
  893. };
  894. /**
  895. * @brief HwObject's pointer structure of CanController_2
  896. */
  897. static const Can_HwObjectConfigType * const Can_apHwObject_Ctrl2[2U]=
  898. {
  899. &Can_aHwObjectConfig[2U],
  900. &Can_aHwObjectConfig[5U]
  901. };
  902. /* Inport external structure defined by IPW */
  903. CAN_IPW_EXT
  904. /**
  905. * @brief Can Controller Config
  906. */
  907. static const Can_ControllerConfigType Can_aControllerConfig[CAN_CONTROLLER_CONFIG_COUNT]=
  908. {
  909. {
  910. /* Abstracted CanIf Controller ID */
  911. (uint8)0U,
  912. /* Controller ID */
  913. (uint8)0U,
  914. /* Controller Offset */
  915. (uint8)0U,
  916. /* Controller Base Address */
  917. FLEXCAN_0_BASE,
  918. /* Controller Activation */
  919. (boolean)TRUE,
  920. /* Bus Off uses polling */
  921. (boolean)TRUE,
  922. /* Global mask of Legacy FIFO */
  923. (uint32)0xc0000000U,
  924. /* ID Acceptance Mode */
  925. CAN_LEGACY_FIFO_FORMAT_A,
  926. /* Legacy FIFO Warning Notification */
  927. NULL_PTR,
  928. /* Legacy FIFO Overflow Notification */
  929. NULL_PTR,
  930. /* Enhanced FIFO Overflow Notification */
  931. NULL_PTR,
  932. #if (CAN_FEATURE_HAS_DMA_ENABLE == STD_ON)
  933. /* Enhance FIFO Dma Error Notification */
  934. NULL_PTR,
  935. /* DMA is not enabled */
  936. NULL_PTR,
  937. #endif /* (CAN_FEATURE_HAS_DMA_ENABLE == STD_ON) */
  938. /* Error interrupt enable */
  939. (boolean)FALSE,
  940. /* Error Notification */
  941. NULL_PTR,
  942. /* Error FD Notification */
  943. NULL_PTR,
  944. /* Default Baudrate ID */
  945. (uint16)0U,
  946. /* Baudrate config Count*/
  947. (uint16)1U,
  948. /* Baudrate config Pointer Structure */
  949. Can_aBaudrateConfig_Ctrl0,
  950. /* Pointer to IPW structure to IP config */
  951. &CanIpwHwChannelConfig_VS_00,
  952. /* Hw Object reference count */
  953. (uint8)2U,
  954. /* Pointer point to Group of Hw Object that refer to Controller */
  955. Can_apHwObject_Ctrl0
  956. },
  957. {
  958. /* Abstracted CanIf Controller ID */
  959. (uint8)1U,
  960. /* Controller ID */
  961. (uint8)1U,
  962. /* Controller Offset */
  963. (uint8)1U,
  964. /* Controller Base Address */
  965. FLEXCAN_1_BASE,
  966. /* Controller Activation */
  967. (boolean)TRUE,
  968. /* Bus Off uses polling */
  969. (boolean)TRUE,
  970. /* Global mask of Legacy FIFO */
  971. (uint32)0xc0000000U,
  972. /* ID Acceptance Mode */
  973. CAN_LEGACY_FIFO_FORMAT_A,
  974. /* Legacy FIFO Warning Notification */
  975. NULL_PTR,
  976. /* Legacy FIFO Overflow Notification */
  977. NULL_PTR,
  978. /* Enhanced FIFO Overflow Notification */
  979. NULL_PTR,
  980. #if (CAN_FEATURE_HAS_DMA_ENABLE == STD_ON)
  981. /* Enhance FIFO Dma Error Notification */
  982. NULL_PTR,
  983. /* DMA is not enabled */
  984. NULL_PTR,
  985. #endif /* (CAN_FEATURE_HAS_DMA_ENABLE == STD_ON) */
  986. /* Error interrupt enable */
  987. (boolean)FALSE,
  988. /* Error Notification */
  989. NULL_PTR,
  990. /* Error FD Notification */
  991. NULL_PTR,
  992. /* Default Baudrate ID */
  993. (uint16)0U,
  994. /* Baudrate config Count*/
  995. (uint16)1U,
  996. /* Baudrate config Pointer Structure */
  997. Can_aBaudrateConfig_Ctrl1,
  998. /* Pointer to IPW structure to IP config */
  999. &CanIpwHwChannelConfig_VS_01,
  1000. /* Hw Object reference count */
  1001. (uint8)2U,
  1002. /* Pointer point to Group of Hw Object that refer to Controller */
  1003. Can_apHwObject_Ctrl1
  1004. },
  1005. {
  1006. /* Abstracted CanIf Controller ID */
  1007. (uint8)2U,
  1008. /* Controller ID */
  1009. (uint8)2U,
  1010. /* Controller Offset */
  1011. (uint8)2U,
  1012. /* Controller Base Address */
  1013. FLEXCAN_2_BASE,
  1014. /* Controller Activation */
  1015. (boolean)TRUE,
  1016. /* Bus Off uses polling */
  1017. (boolean)TRUE,
  1018. /* Global mask of Legacy FIFO */
  1019. (uint32)0xc0000000U,
  1020. /* ID Acceptance Mode */
  1021. CAN_LEGACY_FIFO_FORMAT_A,
  1022. /* Legacy FIFO Warning Notification */
  1023. NULL_PTR,
  1024. /* Legacy FIFO Overflow Notification */
  1025. NULL_PTR,
  1026. /* Enhanced FIFO Overflow Notification */
  1027. NULL_PTR,
  1028. #if (CAN_FEATURE_HAS_DMA_ENABLE == STD_ON)
  1029. /* Enhance FIFO Dma Error Notification */
  1030. NULL_PTR,
  1031. /* DMA is not enabled */
  1032. NULL_PTR,
  1033. #endif /* (CAN_FEATURE_HAS_DMA_ENABLE == STD_ON) */
  1034. /* Error interrupt enable */
  1035. (boolean)FALSE,
  1036. /* Error Notification */
  1037. NULL_PTR,
  1038. /* Error FD Notification */
  1039. NULL_PTR,
  1040. /* Default Baudrate ID */
  1041. (uint16)0U,
  1042. /* Baudrate config Count*/
  1043. (uint16)1U,
  1044. /* Baudrate config Pointer Structure */
  1045. Can_aBaudrateConfig_Ctrl2,
  1046. /* Pointer to IPW structure to IP config */
  1047. &CanIpwHwChannelConfig_VS_02,
  1048. /* Hw Object reference count */
  1049. (uint8)2U,
  1050. /* Pointer point to Group of Hw Object that refer to Controller */
  1051. Can_apHwObject_Ctrl2
  1052. }
  1053. };
  1054. /* Inport external structure defined by IPW */
  1055. CAN_IPW_ICOM_RXMESSAGE_EXT
  1056. static const Can_IcomConfigsType Can_aIcomConfig[1U] =
  1057. {
  1058. {
  1059. /* .u8CanIcomConfigId */
  1060. (uint8)1,
  1061. /* .bCanIcomWakeOnBusOff */
  1062. (boolean)FALSE,
  1063. /* .u8NumberCanIcomRxMessage */
  1064. (uint8)1U,
  1065. /* .pCanIcomRxMessageConfigs */
  1066. &CanIpwIcomRxMessageConfig_VS_0_0
  1067. }
  1068. };
  1069. static const Can_ControllerConfigType * const Can_apController[CAN_CONTROLLER_CONFIG_COUNT]=
  1070. {
  1071. &Can_aControllerConfig[0U],
  1072. &Can_aControllerConfig[1U],
  1073. &Can_aControllerConfig[2U]
  1074. };
  1075. /*==================================================================================================
  1076. * GLOBAL CONSTANTS
  1077. ==================================================================================================*/
  1078. /**
  1079. * @brief Top level structure contain all Can driver Config
  1080. */
  1081. /* @violates @ref Can_PBcfg_VS_0_c_REF_3 MISRA 2012 Advisory Rule 8.7 */
  1082. /* @violates @ref Can_PBcfg_VS_0_c_REF_4 MISRA 2012 Advisory Rule 8.9 */
  1083. /* @violates @ref Can_PBcfg_VS_0_c_REF_5 MISRA 2012 Required Rule 8.4 */
  1084. const Can_ConfigType Can_Config =
  1085. {
  1086. /* Configuration Core ID */
  1087. (uint32)0U,
  1088. /* The HTH first Index after HRH consecutive */
  1089. (Can_HwHandleType)3U,
  1090. /* Mapping Controller ID to Controller Hw Offset */
  1091. Can_aCtrlOffsetToCtrlIDMap,
  1092. /* Mapping Controller ID to Hardware Object ID */
  1093. Can_aHwObjIDToCtrlIDMap,
  1094. /* Pointer point to Can Hw Object Config */
  1095. Can_aHwObjectConfig,
  1096. /* The size of Can Icom Configs */
  1097. (uint8)1U,
  1098. /* Pointer point to Can Icom Configs */
  1099. Can_aIcomConfig,
  1100. /* Array of Pointer to Controller infomation have aligned by Controller ID */
  1101. Can_apController
  1102. };
  1103. #define CAN_STOP_SEC_CONFIG_DATA_UNSPECIFIED
  1104. /* @violates @ref Can_PBcfg_VS_0_c_REF_1 MISRA 2012 Required Directive 4.10 */
  1105. /* @violates @ref Can_PBcfg_VS_0_c_REF_2 MISRA 2012 Advisory Rule 20.1 */
  1106. #include "Can_MemMap.h"
  1107. #ifdef __cplusplus
  1108. }
  1109. #endif
  1110. /** @} */