You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

302 lines
12 KiB

  1. /*
  2. ChibiOS - Copyright (C) 2006..2018 Giovanni Di Sirio
  3. ChibiOS - Copyright (C) 2021 Stefan Kerkmann
  4. Licensed under the Apache License, Version 2.0 (the "License");
  5. you may not use this file except in compliance with the License.
  6. You may obtain a copy of the License at
  7. http://www.apache.org/licenses/LICENSE-2.0
  8. Unless required by applicable law or agreed to in writing, software
  9. distributed under the License is distributed on an "AS IS" BASIS,
  10. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  11. See the License for the specific language governing permissions and
  12. limitations under the License.
  13. */
  14. #pragma once
  15. #define GD32VF103_MCUCONF
  16. #define GD32VF103CB
  17. /*
  18. * GD32VF103 drivers configuration.
  19. * The following settings override the default settings present in
  20. * the various device driver implementation headers.
  21. * Note that the settings for each driver only have effect if the whole
  22. * driver is enabled in halconf.h.
  23. *
  24. * IRQ priorities:
  25. * 0...15 Lowest...Highest.
  26. *
  27. * DMA priorities:
  28. * 0...3 Lowest...Highest.
  29. */
  30. /*
  31. * HAL driver system settings.
  32. */
  33. #if defined(OVERCLOCK_120MHZ)
  34. /* (8MHz / 2) * 30 = 120MHz Sysclock */
  35. #define GD32_ALLOW_120MHZ_SYSCLK
  36. #define GD32_PLLMF_VALUE 30
  37. #define GD32_USBFSPSC GD32_USBFSPSC_DIV2P5
  38. #else
  39. /* (8MHz / 2) * 24 = 96MHz Sysclock */
  40. #define GD32_PLLMF_VALUE 24
  41. #define GD32_USBFSPSC GD32_USBFSPSC_DIV2
  42. #endif
  43. #define GD32_NO_INIT FALSE
  44. #define GD32_IRC8M_ENABLED TRUE
  45. #define GD32_IRC40K_ENABLED FALSE
  46. #define GD32_HXTAL_ENABLED TRUE
  47. #define GD32_LXTAL_ENABLED FALSE
  48. #define GD32_SCS GD32_SCS_PLL
  49. #define GD32_PLLSEL GD32_PLLSEL_PREDV0
  50. #define GD32_PREDV0SEL GD32_PREDV0SEL_HXTAL
  51. #define GD32_PREDV0_VALUE 2
  52. #define GD32_PREDV1_VALUE 2
  53. #define GD32_PLL1MF_VALUE 14
  54. #define GD32_PLL2MF_VALUE 13
  55. #define GD32_AHBPSC GD32_AHBPSC_DIV1
  56. #define GD32_APB1PSC GD32_APB1PSC_DIV2
  57. #define GD32_APB2PSC GD32_APB2PSC_DIV1
  58. #define GD32_ADCPSC GD32_ADCPSC_DIV16
  59. #define GD32_USB_CLOCK_REQUIRED TRUE
  60. #define GD32_I2S_CLOCK_REQUIRED FALSE
  61. #define GD32_CKOUT0SEL GD32_CKOUT0SEL_NOCLOCK
  62. #define GD32_RTCSRC GD32_RTCSRC_NOCLOCK
  63. #define GD32_PVD_ENABLE FALSE
  64. #define GD32_LVDT GD32_LVDT_LEV0
  65. /*
  66. * ECLIC system settings.
  67. */
  68. #define ECLIC_TRIGGER_DEFAULT ECLIC_POSTIVE_EDGE_TRIGGER
  69. #define ECLIC_DMA_TRIGGER ECLIC_TRIGGER_DEFAULT
  70. /*
  71. * IRQ system settings.
  72. */
  73. #define GD32_IRQ_EXTI0_PRIORITY 6
  74. #define GD32_IRQ_EXTI1_PRIORITY 6
  75. #define GD32_IRQ_EXTI2_PRIORITY 6
  76. #define GD32_IRQ_EXTI3_PRIORITY 6
  77. #define GD32_IRQ_EXTI4_PRIORITY 6
  78. #define GD32_IRQ_EXTI5_9_PRIORITY 6
  79. #define GD32_IRQ_EXTI10_15_PRIORITY 6
  80. #define GD32_IRQ_EXTI0_TRIGGER ECLIC_TRIGGER_DEFAULT
  81. #define GD32_IRQ_EXTI1_TRIGGER ECLIC_TRIGGER_DEFAULT
  82. #define GD32_IRQ_EXTI2_TRIGGER ECLIC_TRIGGER_DEFAULT
  83. #define GD32_IRQ_EXTI3_TRIGGER ECLIC_TRIGGER_DEFAULT
  84. #define GD32_IRQ_EXTI4_TRIGGER ECLIC_TRIGGER_DEFAULT
  85. #define GD32_IRQ_EXTI5_9_TRIGGER ECLIC_TRIGGER_DEFAULT
  86. #define GD32_IRQ_EXTI10_15_TRIGGER ECLIC_TRIGGER_DEFAULT
  87. /*
  88. * ADC driver system settings.
  89. */
  90. #define GD32_ADC_USE_ADC0 FALSE
  91. #define GD32_ADC_ADC0_DMA_PRIORITY 2
  92. #define GD32_ADC_ADC0_IRQ_PRIORITY 6
  93. /*
  94. * CAN driver system settings.
  95. */
  96. #define GD32_CAN_USE_CAN0 FALSE
  97. #define GD32_CAN_CAN0_IRQ_PRIORITY 11
  98. #define GD32_CAN_USE_CAN1 FALSE
  99. #define GD32_CAN_CAN1_IRQ_PRIORITY 11
  100. #define GD32_CAN_CAN0_IRQ_TRIGGER ECLIC_TRIGGER_DEFAULT
  101. #define GD32_CAN_CAN1_IRQ_TRIGGER ECLIC_TRIGGER_DEFAULT
  102. /*
  103. * CRC driver system settings.
  104. */
  105. #define GD32_CRC_USE_CRC0 FALSE
  106. #define GD32_CRC_CRC0_DMA_IRQ_PRIORITY 14
  107. #define GD32_CRC_CRC0_DMA_PRIORITY 2
  108. #define GD32_CRC_CRC0_DMA_STREAM GD32_DMA_STREAM_ID(0, 0)
  109. #define CRC_USE_DMA FALSE
  110. #define CRCSW_USE_CRC1 FALSE
  111. #define CRCSW_CRC32_TABLE FALSE
  112. #define CRCSW_CRC16_TABLE FALSE
  113. #define CRCSW_PROGRAMMABLE FALSE
  114. /*
  115. * DAC driver system settings.
  116. */
  117. #define GD32_DAC_USE_DAC_CH1 FALSE
  118. #define GD32_DAC_USE_DAC_CH2 FALSE
  119. /*
  120. * GPT driver system settings.
  121. */
  122. #define GD32_GPT_USE_TIM0 FALSE
  123. #define GD32_GPT_USE_TIM1 FALSE
  124. #define GD32_GPT_USE_TIM2 FALSE
  125. #define GD32_GPT_USE_TIM3 FALSE
  126. #define GD32_GPT_USE_TIM4 FALSE
  127. #define GD32_GPT_TIM0_IRQ_PRIORITY 7
  128. #define GD32_GPT_TIM1_IRQ_PRIORITY 7
  129. #define GD32_GPT_TIM2_IRQ_PRIORITY 7
  130. #define GD32_GPT_TIM3_IRQ_PRIORITY 7
  131. #define GD32_GPT_TIM4_IRQ_PRIORITY 7
  132. #define GD32_GPT_TIM0_IRQ_TRIGGER ECLIC_TRIGGER_DEFAULT
  133. #define GD32_GPT_TIM1_IRQ_TRIGGER ECLIC_TRIGGER_DEFAULT
  134. #define GD32_GPT_TIM2_IRQ_TRIGGER ECLIC_TRIGGER_DEFAULT
  135. #define GD32_GPT_TIM3_IRQ_TRIGGER ECLIC_TRIGGER_DEFAULT
  136. #define GD32_GPT_TIM4_IRQ_TRIGGER ECLIC_TRIGGER_DEFAULT
  137. #define GD32_GPT_TIM5_IRQ_TRIGGER ECLIC_TRIGGER_DEFAULT
  138. #define GD32_GPT_TIM6_IRQ_TRIGGER ECLIC_TRIGGER_DEFAULT
  139. /*
  140. * I2S driver system settings.
  141. */
  142. #define GD32_I2S_USE_SPI1 FALSE
  143. #define GD32_I2S_USE_SPI2 FALSE
  144. #define GD32_I2S_SPI1_IRQ_PRIORITY 10
  145. #define GD32_I2S_SPI2_IRQ_PRIORITY 10
  146. #define GD32_I2S_SPI1_DMA_PRIORITY 1
  147. #define GD32_I2S_SPI2_DMA_PRIORITY 1
  148. #define GD32_I2S_DMA_ERROR_HOOK(i2sp) osalSysHalt("DMA failure")
  149. /*
  150. * I2C driver system settings.
  151. */
  152. #define GD32_I2C_USE_I2C0 FALSE
  153. #define GD32_I2C_USE_I2C1 FALSE
  154. #define GD32_I2C_BUSY_TIMEOUT 50
  155. #define GD32_I2C_I2C0_IRQ_PRIORITY 10
  156. #define GD32_I2C_I2C1_IRQ_PRIORITY 5
  157. #define GD32_I2C_I2C0_IRQ_TRIGGER ECLIC_TRIGGER_DEFAULT
  158. #define GD32_I2C_I2C1_IRQ_TRIGGER ECLIC_TRIGGER_DEFAULT
  159. #define GD32_I2C_I2C0_DMA_PRIORITY 2
  160. #define GD32_I2C_I2C1_DMA_PRIORITY 2
  161. #define GD32_I2C_DMA_ERROR_HOOK(i2cp) osalSysHalt("DMA failure")
  162. /*
  163. * ICU driver system settings.
  164. */
  165. #define GD32_ICU_USE_TIM0 FALSE
  166. #define GD32_ICU_USE_TIM1 FALSE
  167. #define GD32_ICU_USE_TIM2 FALSE
  168. #define GD32_ICU_USE_TIM3 FALSE
  169. #define GD32_ICU_USE_TIM4 FALSE
  170. #define GD32_ICU_TIM0_IRQ_PRIORITY 7
  171. #define GD32_ICU_TIM1_IRQ_PRIORITY 7
  172. #define GD32_ICU_TIM2_IRQ_PRIORITY 7
  173. #define GD32_ICU_TIM3_IRQ_PRIORITY 7
  174. #define GD32_ICU_TIM4_IRQ_PRIORITY 7
  175. #define GD32_ICU_TIM0_IRQ_TRIGGER ECLIC_TRIGGER_DEFAULT
  176. #define GD32_ICU_TIM1_IRQ_TRIGGER ECLIC_TRIGGER_DEFAULT
  177. #define GD32_ICU_TIM2_IRQ_TRIGGER ECLIC_TRIGGER_DEFAULT
  178. #define GD32_ICU_TIM3_IRQ_TRIGGER ECLIC_TRIGGER_DEFAULT
  179. #define GD32_ICU_TIM4_IRQ_TRIGGER ECLIC_TRIGGER_DEFAULT
  180. /*
  181. * PWM driver system settings.
  182. */
  183. #define GD32_PWM_USE_ADVANCED FALSE
  184. #define GD32_PWM_USE_TIM0 FALSE
  185. #define GD32_PWM_USE_TIM1 FALSE
  186. #define GD32_PWM_USE_TIM2 FALSE
  187. #define GD32_PWM_USE_TIM3 FALSE
  188. #define GD32_PWM_USE_TIM4 FALSE
  189. #define GD32_PWM_TIM0_IRQ_PRIORITY 10
  190. #define GD32_PWM_TIM1_IRQ_PRIORITY 10
  191. #define GD32_PWM_TIM2_IRQ_PRIORITY 10
  192. #define GD32_PWM_TIM3_IRQ_PRIORITY 10
  193. #define GD32_PWM_TIM4_IRQ_PRIORITY 10
  194. #define GD32_PWM_TIM0_IRQ_TRIGGER ECLIC_TRIGGER_DEFAULT
  195. #define GD32_PWM_TIM1_IRQ_TRIGGER ECLIC_TRIGGER_DEFAULT
  196. #define GD32_PWM_TIM2_IRQ_TRIGGER ECLIC_TRIGGER_DEFAULT
  197. #define GD32_PWM_TIM3_IRQ_TRIGGER ECLIC_TRIGGER_DEFAULT
  198. #define GD32_PWM_TIM4_IRQ_TRIGGER ECLIC_TRIGGER_DEFAULT
  199. /*
  200. * RTC driver system settings.
  201. */
  202. #define GD32_RTC_IRQ_PRIORITY 15
  203. #define GD32_RTC_IRQ_TRIGGER ECLIC_TRIGGER_DEFAULT
  204. /*
  205. * SERIAL driver system settings.
  206. */
  207. #define GD32_SERIAL_USE_USART0 FALSE
  208. #define GD32_SERIAL_USE_USART1 FALSE
  209. #define GD32_SERIAL_USE_USART2 FALSE
  210. #define GD32_SERIAL_USE_UART3 FALSE
  211. #define GD32_SERIAL_USE_UART4 FALSE
  212. #define GD32_SERIAL_USART0_PRIORITY 10
  213. #define GD32_SERIAL_USART1_PRIORITY 10
  214. #define GD32_SERIAL_USART2_PRIORITY 10
  215. #define GD32_SERIAL_UART3_PRIORITY 10
  216. #define GD32_SERIAL_UART4_PRIORITY 10
  217. #define GD32_SERIAL_USART0_TRIGGER ECLIC_TRIGGER_DEFAULT
  218. #define GD32_SERIAL_USART1_TRIGGER ECLIC_TRIGGER_DEFAULT
  219. #define GD32_SERIAL_USART2_TRIGGER ECLIC_TRIGGER_DEFAULT
  220. #define GD32_SERIAL_UART3_TRIGGER ECLIC_TRIGGER_DEFAULT
  221. #define GD32_SERIAL_UART4_TRIGGER ECLIC_TRIGGER_DEFAULT
  222. /*
  223. * SPI driver system settings.
  224. */
  225. #define GD32_SPI_USE_SPI0 FALSE
  226. #define GD32_SPI_USE_SPI1 FALSE
  227. #define GD32_SPI_USE_SPI2 FALSE
  228. #define GD32_SPI_SPI0_DMA_PRIORITY 1
  229. #define GD32_SPI_SPI1_DMA_PRIORITY 1
  230. #define GD32_SPI_SPI2_DMA_PRIORITY 1
  231. #define GD32_SPI_SPI0_IRQ_PRIORITY 10
  232. #define GD32_SPI_SPI1_IRQ_PRIORITY 10
  233. #define GD32_SPI_SPI2_IRQ_PRIORITY 10
  234. #define GD32_SPI_DMA_ERROR_HOOK(spip) osalSysHalt("DMA failure")
  235. /*
  236. * ST driver system settings.
  237. */
  238. #define GD32_ST_IRQ_PRIORITY 10
  239. #define GD32_ST_IRQ_TRIGGER ECLIC_TRIGGER_DEFAULT
  240. #define GD32_ST_USE_TIMER 1
  241. /*
  242. * UART driver system settings.
  243. */
  244. #define GD32_UART_USE_USART0 FALSE
  245. #define GD32_UART_USE_USART1 FALSE
  246. #define GD32_UART_USE_USART2 FALSE
  247. #define GD32_UART_USE_UART3 FALSE
  248. #define GD32_UART_USE_UART4 FALSE
  249. #define GD32_UART_USART0_IRQ_PRIORITY 10
  250. #define GD32_UART_USART1_IRQ_PRIORITY 10
  251. #define GD32_UART_USART2_IRQ_PRIORITY 10
  252. #define GD32_UART_UART3_IRQ_PRIORITY 10
  253. #define GD32_UART_UART4_IRQ_PRIORITY 10
  254. #define GD32_UART_USART0_IRQ_TRIGGER ECLIC_TRIGGER_DEFAULT
  255. #define GD32_UART_USART1_IRQ_TRIGGER ECLIC_TRIGGER_DEFAULT
  256. #define GD32_UART_USART2_IRQ_TRIGGER ECLIC_TRIGGER_DEFAULT
  257. #define GD32_UART_UART3_IRQ_TRIGGER ECLIC_TRIGGER_DEFAULT
  258. #define GD32_UART_UART4_IRQ_TRIGGER ECLIC_TRIGGER_DEFAULT
  259. #define GD32_UART_USART0_DMA_PRIORITY 3
  260. #define GD32_UART_USART1_DMA_PRIORITY 3
  261. #define GD32_UART_USART2_DMA_PRIORITY 3
  262. #define GD32_UART_UART3_DMA_PRIORITY 3
  263. #define GD32_UART_UART4_DMA_PRIORITY 3
  264. #define GD32_UART_DMA_ERROR_HOOK(uartp) osalSysHalt("DMA failure")
  265. /*
  266. * USB driver system settings.
  267. */
  268. #define GD32_USB_USE_USBFS TRUE
  269. #define GD32_USB_USBFS_IRQ_PRIORITY 10
  270. #define GD32_USB_USBFS_IRQ_TRIGGER ECLIC_TRIGGER_DEFAULT
  271. #define GD32_USB_USBFS_RX_FIFO_SIZE 256
  272. /*
  273. * WDG driver system settings.
  274. */
  275. #define GD32_WDG_USE_FWDGT FALSE