reg_can.h 7.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178
  1. /** @file reg_can.h
  2. * @brief CAN Register Layer Header File
  3. * @date 29.May.2013
  4. * @version 03.05.02
  5. *
  6. * This file contains:
  7. * - Definitions
  8. * - Types
  9. * - Interface Prototypes
  10. * .
  11. * which are relevant for the CAN driver.
  12. */
  13. /* (c) Texas Instruments 2009-2013, All rights reserved. */
  14. #ifndef __REG_CAN_H__
  15. #define __REG_CAN_H__
  16. #include "sys_common.h"
  17. /* USER CODE BEGIN (0) */
  18. /* USER CODE END */
  19. /* Can Register Frame Definition */
  20. /** @struct canBase
  21. * @brief CAN Register Frame Definition
  22. *
  23. * This type is used to access the CAN Registers.
  24. */
  25. /** @typedef canBASE_t
  26. * @brief CAN Register Frame Type Definition
  27. *
  28. * This type is used to access the CAN Registers.
  29. */
  30. typedef volatile struct canBase
  31. {
  32. uint32 CTL; /**< 0x0000: Control Register */
  33. uint32 ES; /**< 0x0004: Error and Status Register */
  34. uint32 EERC; /**< 0x0008: Error Counter Register */
  35. uint32 BTR; /**< 0x000C: Bit Timing Register */
  36. uint32 INT; /**< 0x0010: Interrupt Register */
  37. uint32 TEST; /**< 0x0014: Test Register */
  38. uint32 rsvd1; /**< 0x0018: Reserved */
  39. uint32 PERR; /**< 0x001C: Parity/SECDED Error Code Register */
  40. uint32 REL; /**< 0x0020: Core Release Register */
  41. uint32 ECCDIAG; /**< 0x0024: ECC Diagnostic Register */
  42. uint32 ECCDIADSTAT; /**< 0x0028: ECC Diagnostic Status Register */
  43. uint32 rsvd2[21]; /**< 0x002C: Reserved */
  44. uint32 ABOTR; /**< 0x0080: Auto Bus On Time Register */
  45. uint32 TXRQX; /**< 0x0084: Transmission Request X Register */
  46. uint32 TXRQx[4U]; /**< 0x0088-0x0094: Transmission Request Registers */
  47. uint32 NWDATX; /**< 0x0098: New Data X Register */
  48. uint32 NWDATx[4U]; /**< 0x009C-0x00A8: New Data Registers */
  49. uint32 INTPNDX; /**< 0x00AC: Interrupt Pending X Register */
  50. uint32 INTPNDx[4U]; /**< 0x00B0-0x00BC: Interrupt Pending Registers */
  51. uint32 MSGVALX; /**< 0x00C0: Message Valid X Register */
  52. uint32 MSGVALx[4U]; /**< 0x00C4-0x00D0: Message Valid Registers */
  53. uint32 rsvd3; /**< 0x00D4: Reserved */
  54. uint32 INTMUXx[4U]; /**< 0x00D8-0x00E4: Interrupt Multiplexer Registers */
  55. uint32 rsvd4[6]; /**< 0x00E8: Reserved */
  56. #if ((__little_endian__ == 1) || (__LITTLE_ENDIAN__ == 1))
  57. uint8 IF1NO; /**< 0x0100: IF1 Command Register, Msg Number */
  58. uint8 IF1STAT; /**< 0x0100: IF1 Command Register, Status */
  59. uint8 IF1CMD; /**< 0x0100: IF1 Command Register, Command */
  60. uint8 rsvd9; /**< 0x0100: IF1 Command Register, Reserved */
  61. #else
  62. uint8 rsvd9; /**< 0x0100: IF1 Command Register, Reserved */
  63. uint8 IF1CMD; /**< 0x0100: IF1 Command Register, Command */
  64. uint8 IF1STAT; /**< 0x0100: IF1 Command Register, Status */
  65. uint8 IF1NO; /**< 0x0100: IF1 Command Register, Msg Number */
  66. #endif
  67. uint32 IF1MSK; /**< 0x0104: IF1 Mask Register */
  68. uint32 IF1ARB; /**< 0x0108: IF1 Arbitration Register */
  69. uint32 IF1MCTL; /**< 0x010C: IF1 Message Control Register */
  70. uint8 IF1DATx[8U]; /**< 0x0110-0x0114: IF1 Data A and B Registers */
  71. uint32 rsvd5[2]; /**< 0x0118: Reserved */
  72. #if ((__little_endian__ == 1) || (__LITTLE_ENDIAN__ == 1))
  73. uint8 IF2NO; /**< 0x0120: IF2 Command Register, Msg No */
  74. uint8 IF2STAT; /**< 0x0120: IF2 Command Register, Status */
  75. uint8 IF2CMD; /**< 0x0120: IF2 Command Register, Command */
  76. uint8 rsvd10; /**< 0x0120: IF2 Command Register, Reserved */
  77. #else
  78. uint8 rsvd10; /**< 0x0120: IF2 Command Register, Reserved */
  79. uint8 IF2CMD; /**< 0x0120: IF2 Command Register, Command */
  80. uint8 IF2STAT; /**< 0x0120: IF2 Command Register, Status */
  81. uint8 IF2NO; /**< 0x0120: IF2 Command Register, Msg Number */
  82. #endif
  83. uint32 IF2MSK; /**< 0x0124: IF2 Mask Register */
  84. uint32 IF2ARB; /**< 0x0128: IF2 Arbitration Register */
  85. uint32 IF2MCTL; /**< 0x012C: IF2 Message Control Register */
  86. uint8 IF2DATx[8U]; /**< 0x0130-0x0134: IF2 Data A and B Registers */
  87. uint32 rsvd6[2]; /**< 0x0138: Reserved */
  88. uint32 IF3OBS; /**< 0x0140: IF3 Observation Register */
  89. uint32 IF3MSK; /**< 0x0144: IF3 Mask Register */
  90. uint32 IF3ARB; /**< 0x0148: IF3 Arbitration Register */
  91. uint32 IF3MCTL; /**< 0x014C: IF3 Message Control Register */
  92. uint8 IF3DATx[8U]; /**< 0x0150-0x0154: IF3 Data A and B Registers */
  93. uint32 rsvd7[2]; /**< 0x0158: Reserved */
  94. uint32 IF3UEy[4U]; /**< 0x0160-0x016C: IF3 Update Enable Registers */
  95. uint32 rsvd8[28]; /**< 0x0170: Reserved */
  96. uint32 TIOC; /**< 0x01E0: TX IO Control Register */
  97. uint32 RIOC; /**< 0x01E4: RX IO Control Register */
  98. } canBASE_t;
  99. /** @def canREG1
  100. * @brief CAN1 Register Frame Pointer
  101. *
  102. * This pointer is used by the CAN driver to access the CAN1 registers.
  103. */
  104. #define canREG1 ((canBASE_t *)0xFFF7DC00U)
  105. /** @def canREG2
  106. * @brief CAN2 Register Frame Pointer
  107. *
  108. * This pointer is used by the CAN driver to access the CAN2 registers.
  109. */
  110. #define canREG2 ((canBASE_t *)0xFFF7DE00U)
  111. /** @def canREG3
  112. * @brief CAN3 Register Frame Pointer
  113. *
  114. * This pointer is used by the CAN driver to access the CAN3 registers.
  115. */
  116. #define canREG3 ((canBASE_t *)0xFFF7E000U)
  117. /** @def canRAM1
  118. * @brief CAN1 Mailbox RAM Pointer
  119. *
  120. * This pointer is used by the CAN driver to access the CAN1 RAM.
  121. */
  122. #define canRAM1 (*(volatile uint32 *)0xFF1E0000U)
  123. /** @def canRAM2
  124. * @brief CAN2 Mailbox RAM Pointer
  125. *
  126. * This pointer is used by the CAN driver to access the CAN2 RAM.
  127. */
  128. #define canRAM2 (*(volatile uint32 *)0xFF1C0000U)
  129. /** @def canRAM3
  130. * @brief CAN3 Mailbox RAM Pointer
  131. *
  132. * This pointer is used by the CAN driver to access the CAN3 RAM.
  133. */
  134. #define canRAM3 (*(volatile uint32 *)0xFF1A0000U)
  135. /** @def canPARRAM1
  136. * @brief CAN1 Mailbox Parity RAM Pointer
  137. *
  138. * This pointer is used by the CAN driver to access the CAN1 Parity RAM
  139. * for testing RAM parity error detect logic.
  140. */
  141. #define canPARRAM1 (*(volatile uint32 *)(0xFF1E0000U + 0x10U))
  142. /** @def canPARRAM2
  143. * @brief CAN2 Mailbox Parity RAM Pointer
  144. *
  145. * This pointer is used by the CAN driver to access the CAN2 Parity RAM
  146. * for testing RAM parity error detect logic.
  147. */
  148. #define canPARRAM2 (*(volatile uint32 *)(0xFF1C0000U + 0x10U))
  149. /** @def canPARRAM3
  150. * @brief CAN3 Mailbox Parity RAM Pointer
  151. *
  152. * This pointer is used by the CAN driver to access the CAN3 Parity RAM
  153. * for testing RAM parity error detect logic.
  154. */
  155. #define canPARRAM3 (*(volatile uint32 *)(0xFF1A0000U + 0x10U))
  156. /* USER CODE BEGIN (1) */
  157. /* USER CODE END */
  158. #endif