hpm_mcan_soc.h 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. /*
  2. * Copyright (c) 2023 HPMicro
  3. *
  4. * SPDX-License-Identifier: BSD-3-Clause
  5. *
  6. */
  7. #ifndef HPM_MCAN_SOC_H
  8. #define HPM_MCAN_SOC_H
  9. #include <stdint.h>
  10. #include "hpm_mcan_regs.h"
  11. /**
  12. * @brief TSU External Timebase Sources
  13. */
  14. #define MCAN_TSU_EXT_TIMEBASE_SRC_MIN (0U)
  15. #define MCAN_TSU_EXT_TIMEBASE_SRC_MCAN0 (MCAN_TSU_EXT_TIMEBASE_SRC_MIN)
  16. #define MCAN_TSU_EXT_TIMEBASE_SRC_MCAN1 (1U)
  17. #define MCAN_TSU_EXT_TIMEBASE_SRC_MCAN2 (2U)
  18. #define MCAN_TSU_EXT_TIMEBASE_SRC_MCAN3 (3U)
  19. #define MCAN_TSU_EXT_TIMEBASE_SRC_PTP (4U)
  20. #define MCAN_TSU_EXT_TIMEBASE_SRC_MAX (MCAN_TSU_EXT_TIMEBASE_SRC_PTP)
  21. #ifdef __cpluspus
  22. extern "C" {
  23. #endif
  24. /**
  25. * @brief Set External Timebase Source for MCAN TSU
  26. * @param [in] ptr MCAN base
  27. * @param [in] src External Timebase source
  28. */
  29. static inline void mcan_set_tsu_ext_timebase_src(MCAN_Type *ptr, uint8_t src)
  30. {
  31. ptr->GLB_CTL = (ptr->GLB_CTL & ~MCAN_GLB_CTL_TSU_TBIN_SEL_MASK) | MCAN_GLB_CTL_TSU_TBIN_SEL_SET(src);
  32. }
  33. /**
  34. * @brief Enable Standby Pin for MCAN
  35. * @param [in] ptr MCAN base
  36. */
  37. static inline void mcan_enable_standby_pin(MCAN_Type *ptr)
  38. {
  39. ptr->GLB_CTL |= MCAN_GLB_CTL_M_CAN_STBY_MASK;
  40. }
  41. /**
  42. * @brief Disable Standby pin for MCAN
  43. * @param [in] ptr MCAN base
  44. */
  45. static inline void mcan_disable_standby_pin(MCAN_Type *ptr)
  46. {
  47. ptr->GLB_CTL &= ~MCAN_GLB_CTL_M_CAN_STBY_MASK;
  48. }
  49. /**
  50. * @brief Get RAM base for MCAN
  51. * @param [in] ptr MCAN base
  52. * @return RAM base for MCAN
  53. */
  54. static inline uint32_t mcan_get_ram_base(MCAN_Type *ptr)
  55. {
  56. return (uint32_t) &ptr->MESSAGE_BUFF[0];
  57. }
  58. /**
  59. * @brief Get the MCAN RAM offset in the dedicated/shared RAM for
  60. * @param [in] ptr MCAN base
  61. * @return RAM offset for MCAN
  62. */
  63. static inline uint32_t mcan_get_ram_offset(MCAN_Type *ptr)
  64. {
  65. return 0U;
  66. }
  67. /**
  68. * @brief Get MCAN RAM size
  69. * @param [in] ptr MCAN base
  70. * @return RAM size in bytes
  71. */
  72. static inline uint32_t mcan_get_ram_size(MCAN_Type *ptr)
  73. {
  74. return sizeof(ptr->MESSAGE_BUFF);
  75. }
  76. #ifdef __cpluspus
  77. }
  78. #endif
  79. #endif /* HPM_MCAN_SOC_H */