syscon.h 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220
  1. /*
  2. * lpc8xx_syscon.h
  3. *
  4. * Created on:
  5. * Author:
  6. */
  7. #include <stdint.h>
  8. #ifndef LPC8XX_SYSCON_H_
  9. #define LPC8XX_SYSCON_H_
  10. // SYSAHBCLKCTRL0 register bits
  11. #define ROM (1<<1)
  12. #define RAM0_1 (1<<2)
  13. #define FLASH (1<<4)
  14. #define I2C0 (1<<5)
  15. #define GPIO (1<<6)
  16. #define GPIO0 (1<<6)
  17. #define SWM (1<<7)
  18. #define WKT (1<<9)
  19. #define MRT (1<<10)
  20. #define SPI0 (1<<11)
  21. #define CRC (1<<13)
  22. #define UART0 (1<<14)
  23. #define UART1 (1<<15)
  24. #define WWDT (1<<17)
  25. #define IOCON (1<<18)
  26. #define ACMP (1<<19)
  27. #define GPIO1 (1<<20)
  28. #define I2C1 (1<<21)
  29. #define ADC (1<<24)
  30. #define CTIMER0 (1<<25)
  31. #define DAC0 (1<<27)
  32. #define GPIO_INT (1<<28)
  33. // SYSAHBCLKCTRL1 register bits
  34. #define CAPT (1<<0)
  35. #define PLU (1<<5)
  36. // SYSAHBCLKCTRL[] register bits (alternate form)
  37. typedef enum {
  38. CLK_ROM = 1 ,
  39. CLK_RAM0_1 ,
  40. CLK_FLASH = 4 ,
  41. CLK_I2C0 ,
  42. CLK_GPIO0 ,
  43. CLK_SWM ,
  44. CLK_WKT = 9 ,
  45. CLK_MRT ,
  46. CLK_SPI0 ,
  47. CLK_CRC = 13 ,
  48. CLK_UART0 ,
  49. CLK_UART1 ,
  50. CLK_WWDT = 17 ,
  51. CLK_IOCON ,
  52. CLK_ACMP ,
  53. CLK_I2C1 = 21 ,
  54. CLK_ADC = 24 ,
  55. CLK_CTIMER0 ,
  56. CLK_DAC0 = 27 ,
  57. CLK_GPIO_INT ,
  58. CLK_CAPT = 32,
  59. CLK_PLU = 37
  60. } CHIP_SYSCON_CLOCK_CTRL_T;
  61. // PRESETCTRL0 register bits
  62. #define FLASH_RST_N ~(1<<4)
  63. #define I2C0_RST_N ~(1<<5)
  64. #define GPIO0_RST_N ~(1<<6)
  65. #define SWM_RST_N ~(1<<7)
  66. #define WKT_RST_N ~(1<<9)
  67. #define MRT_RST_N ~(1<<10)
  68. #define SPI0_RST_N ~(1<<11)
  69. #define CRC_RST_N ~(1<<13)
  70. #define UART0_RST_N ~(1<<14)
  71. #define UART1_RST_N ~(1<<15)
  72. #define IOCON_RST_N ~(1<<18)
  73. #define ACMP_RST_N ~(1<<19)
  74. #define GPIO1_RST_N ~(1<<20)
  75. #define I2C1_RST_N ~(1<<21)
  76. #define ADC_RST_N ~(1<<24)
  77. #define CTIMER0_RST_N ~(1<<25)
  78. #define DAC0_RST_N ~(1<<27)
  79. #define GPIOINT_RST_N ~(1<<28)
  80. // PRESETCTRL1 register bits
  81. #define CAPT_RST_N ~(1<<0)
  82. #define FRG0_RST_N ~(1<<3)
  83. #define PLU_RST_N ~(1<<5)
  84. // PRESETCTRL[] register bits (alternate form)
  85. typedef enum {
  86. RESET_FLASH = 4 ,
  87. RESET_I2C0 ,
  88. RESET_GPIO0 ,
  89. RESET_SWM ,
  90. RESET_WKT = 9 ,
  91. RESET_MRT ,
  92. RESET_SPI0 ,
  93. RESET_CRC = 13 ,
  94. RESET_UART0 ,
  95. RESET_UART1 ,
  96. RESET_IOCON = 18,
  97. RESET_ACMP ,
  98. RESET_I2C1 = 21 ,
  99. RESET_ADC = 24 ,
  100. RESET_CTIMER0 ,
  101. RESET_DAC0 = 27 ,
  102. RESET_GPIO_INT ,
  103. RESET_CAPT = 32 ,
  104. RESET_FRG0 = 35 ,
  105. RESET_PLU = 37
  106. } CHIP_SYSCON_PERIPH_RESET_T;
  107. // STARTERP0 register bits
  108. #define PINT0_WAKEUP (1<<0)
  109. #define PINT1_WAKEUP (1<<1)
  110. #define PINT2_WAKEUP (1<<2)
  111. #define PINT3_WAKEUP (1<<3)
  112. #define PINT4_WAKEUP (1<<4)
  113. #define PINT5_WAKEUP (1<<5)
  114. #define PINT6_WAKEUP (1<<6)
  115. #define PINT7_WAKEUP (1<<7)
  116. // STARTERP1 register bits
  117. #define SPI0_INT_WAKEUP (1<<0)
  118. #define USART0_INT_WAKEUP (1<<3)
  119. #define USART1_INT_WAKEUP (1<<4)
  120. #define I2C1_INT_WAKEUP (1<<7)
  121. #define I2C0_INT_WAKEUP (1<<8)
  122. #define WWDT_INT_WAKE (1<<12)
  123. #define BOD_INT_WAKE (1<<13)
  124. #define WKT_INT_WAKEUP (1<<15)
  125. // PDAWAKECFG and PDRUNCFG register bits
  126. #define FROOUT_PD (1<<0)
  127. #define FRO_PD (1<<1)
  128. #define FLASH_PD (1<<2)
  129. #define BOD_PD (1<<3) // Also for PDSLEEPCFG
  130. #define ADC_PD (1<<4)
  131. #define LPOSC_PD (1<<6) // Also for PDSLEEPCFG
  132. #define DAC0_PD (1<<13)
  133. #define ACMP_PD (1<<15)
  134. // LPOSCCLKEN register bit field shifters
  135. #define WWDT_CLK_EN 0
  136. #define WKT_CLK_EN 1
  137. // BODCTRL register bit field shifters
  138. #define BODRSTLEV 0
  139. #define BODINTVAL 2
  140. #define BODRSTENA 4
  141. // Below entries are for clock select mux functions
  142. typedef enum {
  143. FCLKSEL_FRO_CLK = 0,
  144. FCLKSEL_MAIN_CLK = 1,
  145. FCLKSEL_FRG0CLK = 2,
  146. FCLKSEL_FRO_DIV_CLK = 4,
  147. FCLKSEL_OFF = 7
  148. } SYSCON_FCLKSEL_CLK_T;
  149. typedef enum {
  150. FCLK_TO_UART0 = 0,
  151. FCLK_TO_UART1 = 1,
  152. FCLK_TO_I2C0 = 5,
  153. FCLK_TO_I2C1 = 6,
  154. FCLK_TO_SPI0 = 9
  155. } SYSCON_FCLKSEL_T;
  156. typedef enum {
  157. FRGCLKSEL_FRO_CLK = 0,
  158. FRGCLKSEL_MAIN_CLK = 1,
  159. FRGCLKSEL_OFF = 3
  160. } SYSCON_FRGCLKSEL_T;
  161. typedef enum {
  162. CLKOUTSEL_FRO_CLK = 0,
  163. CLKOUTSEL_MAIN_CLK = 1,
  164. CLKOUTSEL_EXTERNAL_CLK = 3,
  165. CLKOUTSEL_LPOSC_CLK = 4,
  166. CLKOUTSEL_OFF = 7
  167. } SYSCON_CLKOUTSEL_T;
  168. typedef enum {
  169. ADCCLKSEL_FRO_CLK = 0,
  170. ADCCLKSEL_EXTERNAL_CLK = 1,
  171. ADCCLKSEL_OFF = 3
  172. } SYSCON_ADCCLKSEL_T;
  173. void Enable_Periph_Clock(uint32_t slot);
  174. void Disable_Periph_Clock(uint32_t slot);
  175. void Do_Periph_Reset(uint32_t slot);
  176. //void Config_Syspll(unsigned int which_clock, unsigned int pll_ctrl_value);
  177. void Config_Fclksel_Mux(uint32_t to_which_periph, uint32_t which_clock);
  178. #endif /* LPC8XX_SYSCON_H_ */