hpm_wdg_regs.h 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156
  1. /*
  2. * Copyright (c) 2021-2023 HPMicro
  3. *
  4. * SPDX-License-Identifier: BSD-3-Clause
  5. *
  6. */
  7. #ifndef HPM_WDG_H
  8. #define HPM_WDG_H
  9. typedef struct {
  10. __R uint8_t RESERVED0[16]; /* 0x0 - 0xF: Reserved */
  11. __RW uint32_t CTRL; /* 0x10: Control Register */
  12. __W uint32_t RESTART; /* 0x14: Restart Register */
  13. __W uint32_t WREN; /* 0x18: Write Protection Register */
  14. __W uint32_t ST; /* 0x1C: Status Register */
  15. } WDG_Type;
  16. /* Bitfield definition for register: CTRL */
  17. /*
  18. * RSTTIME (RW)
  19. *
  20. * The time interval of the reset stage:
  21. * 0: Clock period x 2^7
  22. * 1: Clock period x 2^8
  23. * 2: Clock period x 2^9
  24. * 3: Clock period x 2^10
  25. * 4: Clock period x 2^11
  26. * 5: Clock period x 2^12
  27. * 6: Clock period x 2^13
  28. * 7: Clock period x 2^14
  29. */
  30. #define WDG_CTRL_RSTTIME_MASK (0x700U)
  31. #define WDG_CTRL_RSTTIME_SHIFT (8U)
  32. #define WDG_CTRL_RSTTIME_SET(x) (((uint32_t)(x) << WDG_CTRL_RSTTIME_SHIFT) & WDG_CTRL_RSTTIME_MASK)
  33. #define WDG_CTRL_RSTTIME_GET(x) (((uint32_t)(x) & WDG_CTRL_RSTTIME_MASK) >> WDG_CTRL_RSTTIME_SHIFT)
  34. /*
  35. * INTTIME (RW)
  36. *
  37. * The timer interval of the interrupt stage:
  38. * 0: Clock period x 2^6
  39. * 1: Clock period x 2^8
  40. * 2: Clock period x 2^10
  41. * 3: Clock period x 2^11
  42. * 4: Clock period x 2^12
  43. * 5: Clock period x 2^13
  44. * 6: Clock period x 2^14
  45. * 7: Clock period x 2^15
  46. * 8: Clock period x 2^17
  47. * 9: Clock period x 2^19
  48. * 10: Clock period x 2^21
  49. * 11: Clock period x 2^23
  50. * 12: Clock period x 2^25
  51. * 13: Clock period x 2^27
  52. * 14: Clock period x 2^29
  53. * 15: Clock period x 2^31
  54. */
  55. #define WDG_CTRL_INTTIME_MASK (0xF0U)
  56. #define WDG_CTRL_INTTIME_SHIFT (4U)
  57. #define WDG_CTRL_INTTIME_SET(x) (((uint32_t)(x) << WDG_CTRL_INTTIME_SHIFT) & WDG_CTRL_INTTIME_MASK)
  58. #define WDG_CTRL_INTTIME_GET(x) (((uint32_t)(x) & WDG_CTRL_INTTIME_MASK) >> WDG_CTRL_INTTIME_SHIFT)
  59. /*
  60. * RSTEN (RW)
  61. *
  62. * Enable or disable the watchdog reset
  63. * 0: Disable
  64. * 1: Enable
  65. */
  66. #define WDG_CTRL_RSTEN_MASK (0x8U)
  67. #define WDG_CTRL_RSTEN_SHIFT (3U)
  68. #define WDG_CTRL_RSTEN_SET(x) (((uint32_t)(x) << WDG_CTRL_RSTEN_SHIFT) & WDG_CTRL_RSTEN_MASK)
  69. #define WDG_CTRL_RSTEN_GET(x) (((uint32_t)(x) & WDG_CTRL_RSTEN_MASK) >> WDG_CTRL_RSTEN_SHIFT)
  70. /*
  71. * INTEN (RW)
  72. *
  73. * Enable or disable the watchdog interrupt
  74. * 0: Disable
  75. * 1: Enable
  76. */
  77. #define WDG_CTRL_INTEN_MASK (0x4U)
  78. #define WDG_CTRL_INTEN_SHIFT (2U)
  79. #define WDG_CTRL_INTEN_SET(x) (((uint32_t)(x) << WDG_CTRL_INTEN_SHIFT) & WDG_CTRL_INTEN_MASK)
  80. #define WDG_CTRL_INTEN_GET(x) (((uint32_t)(x) & WDG_CTRL_INTEN_MASK) >> WDG_CTRL_INTEN_SHIFT)
  81. /*
  82. * CLKSEL (RW)
  83. *
  84. * Clock source of timer:
  85. * 0: EXTCLK
  86. * 1: PCLK
  87. */
  88. #define WDG_CTRL_CLKSEL_MASK (0x2U)
  89. #define WDG_CTRL_CLKSEL_SHIFT (1U)
  90. #define WDG_CTRL_CLKSEL_SET(x) (((uint32_t)(x) << WDG_CTRL_CLKSEL_SHIFT) & WDG_CTRL_CLKSEL_MASK)
  91. #define WDG_CTRL_CLKSEL_GET(x) (((uint32_t)(x) & WDG_CTRL_CLKSEL_MASK) >> WDG_CTRL_CLKSEL_SHIFT)
  92. /*
  93. * EN (RW)
  94. *
  95. * Enable or disable the watchdog timer
  96. * 0: Disable
  97. * 1: Enable
  98. */
  99. #define WDG_CTRL_EN_MASK (0x1U)
  100. #define WDG_CTRL_EN_SHIFT (0U)
  101. #define WDG_CTRL_EN_SET(x) (((uint32_t)(x) << WDG_CTRL_EN_SHIFT) & WDG_CTRL_EN_MASK)
  102. #define WDG_CTRL_EN_GET(x) (((uint32_t)(x) & WDG_CTRL_EN_MASK) >> WDG_CTRL_EN_SHIFT)
  103. /* Bitfield definition for register: RESTART */
  104. /*
  105. * RESTART (WO)
  106. *
  107. * Write the magic number
  108. * ATCWDT200_RESTART_NUM to restart the
  109. * watchdog timer.
  110. */
  111. #define WDG_RESTART_RESTART_MASK (0xFFFFU)
  112. #define WDG_RESTART_RESTART_SHIFT (0U)
  113. #define WDG_RESTART_RESTART_SET(x) (((uint32_t)(x) << WDG_RESTART_RESTART_SHIFT) & WDG_RESTART_RESTART_MASK)
  114. #define WDG_RESTART_RESTART_GET(x) (((uint32_t)(x) & WDG_RESTART_RESTART_MASK) >> WDG_RESTART_RESTART_SHIFT)
  115. /* Bitfield definition for register: WREN */
  116. /*
  117. * WEN (WO)
  118. *
  119. * Write the magic code to disable the write
  120. * protection of the Control Register and the
  121. * Restart Register.
  122. */
  123. #define WDG_WREN_WEN_MASK (0xFFFFU)
  124. #define WDG_WREN_WEN_SHIFT (0U)
  125. #define WDG_WREN_WEN_SET(x) (((uint32_t)(x) << WDG_WREN_WEN_SHIFT) & WDG_WREN_WEN_MASK)
  126. #define WDG_WREN_WEN_GET(x) (((uint32_t)(x) & WDG_WREN_WEN_MASK) >> WDG_WREN_WEN_SHIFT)
  127. /* Bitfield definition for register: ST */
  128. /*
  129. * INTEXPIRED (W1C)
  130. *
  131. * The status of the watchdog interrupt timer
  132. * 0: timer is not expired yet
  133. * 1: timer is expired
  134. */
  135. #define WDG_ST_INTEXPIRED_MASK (0x1U)
  136. #define WDG_ST_INTEXPIRED_SHIFT (0U)
  137. #define WDG_ST_INTEXPIRED_SET(x) (((uint32_t)(x) << WDG_ST_INTEXPIRED_SHIFT) & WDG_ST_INTEXPIRED_MASK)
  138. #define WDG_ST_INTEXPIRED_GET(x) (((uint32_t)(x) & WDG_ST_INTEXPIRED_MASK) >> WDG_ST_INTEXPIRED_SHIFT)
  139. #endif /* HPM_WDG_H */