ac7840x_features.h 50 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002
  1. /* Copyright Statement:
  2. *
  3. * This software/firmware and related documentation ("AutoChips Software") are
  4. * protected under relevant copyright laws. The information contained herein is
  5. * confidential and proprietary to AutoChips Inc. and/or its licensors. Without
  6. * the prior written permission of AutoChips inc. and/or its licensors, any
  7. * reproduction, modification, use or disclosure of AutoChips Software, and
  8. * information contained herein, in whole or in part, shall be strictly
  9. * prohibited.
  10. *
  11. * AutoChips Inc. (C) 2021. All rights reserved.
  12. *
  13. * BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
  14. * THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("AUTOCHIPS SOFTWARE")
  15. * RECEIVED FROM AUTOCHIPS AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER
  16. * ON AN "AS-IS" BASIS ONLY. AUTOCHIPS EXPRESSLY DISCLAIMS ANY AND ALL
  17. * WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED
  18. * WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR
  19. * NONINFRINGEMENT. NEITHER DOES AUTOCHIPS PROVIDE ANY WARRANTY WHATSOEVER WITH
  20. * RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY,
  21. * INCORPORATED IN, OR SUPPLIED WITH THE AUTOCHIPS SOFTWARE, AND RECEIVER AGREES
  22. * TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO.
  23. * RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO
  24. * OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN AUTOCHIPS
  25. * SOFTWARE. AUTOCHIPS SHALL ALSO NOT BE RESPONSIBLE FOR ANY AUTOCHIPS SOFTWARE
  26. * RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR
  27. * STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND AUTOCHIPS'S
  28. * ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT TO THE AUTOCHIPS SOFTWARE
  29. * RELEASED HEREUNDER WILL BE, AT AUTOCHIPS'S OPTION, TO REVISE OR REPLACE THE
  30. * AUTOCHIPS SOFTWARE AT ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE
  31. * CHARGE PAID BY RECEIVER TO AUTOCHIPS FOR SUCH AUTOCHIPS SOFTWARE AT ISSUE.
  32. */
  33. /*!
  34. * @file ac7840x_features.h
  35. *
  36. * @brief This file provides chip specific module features.
  37. *
  38. */
  39. #ifndef _AC7840X_FEATURES_H
  40. #define _AC7840X_FEATURES_H
  41. #ifdef __cplusplus
  42. extern "C" {
  43. #endif /* __cplusplus */
  44. /* =========================================================================================================================== */
  45. /* ================ MCM ================ */
  46. /* =========================================================================================================================== */
  47. /* =========================================================================================================================== */
  48. /* ================ CKGEN ================ */
  49. /* =========================================================================================================================== */
  50. /*!< HSI clock frequency(8MHz) */
  51. #define CKGEN_HSI_FREQ (8000000UL)
  52. /*!< VHSI clock frequency(48MHz) */
  53. #define CKGEN_VHSI_FREQ (48000000UL)
  54. /*!< Auto select HSI clock for SPLL when enable XOSC is fail */
  55. #define CKGEN_AUTO_SEL_HSI (0UL)
  56. /*!< Auto change SPLL reference clock to HSI clock when XOSC is detected loss(just for XOSC=8MHz);
  57. Auto change system clock to VHSI clock when SPLL is detected unlock */
  58. #define CKGEN_AUTO_CHANGE_CLK (0UL)
  59. /*!< Auto test clock */
  60. #define CKGEN_AUTO_TEST_CLK (1UL)
  61. /*!< Peripheral clock base number */
  62. #define CKGEN_PERI_CLK_BASE (256UL)
  63. /*!< Clock out mux2 base number */
  64. #define CKGEN_CLK_OUT_MUX2_BASE (8UL)
  65. /*!
  66. * @brief Define the enum of the clock names for setting or getting clock frequency.
  67. */
  68. typedef enum {
  69. /* Main clocks */
  70. CORE_CLK = 0U, /*!< Core/System clock */
  71. BUS_CLK = 1U, /*!< Bus clock */
  72. CLKOUT_CLK = 2U, /*!< CLKOUT clock */
  73. /* Other internal clocks used by peripherals. */
  74. HSI_CLK = 3U, /*!< HSI clock */
  75. VHSI_CLK = 4U, /*!< VHSI clock */
  76. HSE_CLK = 5U, /*!< HSE clock */
  77. SPLL_CLK = 6U, /*!< SPLL clock */
  78. RTC_CLKIN_CLK = 7U, /*!< RTC_CLKIN clock */
  79. CKGEN_CLKOUT_CLK = 8U, /*!< CLK_OUT clock from mux1 */
  80. HSEDIV1_CLK = 9U, /*!< HSEDIV1 functional clock */
  81. HSIDIV1_CLK = 10U, /*!< HSIDIV1 functional clock */
  82. VHSIDIV1_CLK = 11U, /*!< VHSIDIV1 functional clock */
  83. SPLLDIV1_CLK = 12U, /*!< SPLLDIV1 functional clock */
  84. HSEDIV2_CLK = 13U, /*!< HSEDIV2 functional clock */
  85. HSIDIV2_CLK = 14U, /*!< HSIDIV2 functional clock */
  86. VHSIDIV2_CLK = 15U, /*!< VHSIDIV2 functional clock */
  87. SPLLDIV2_CLK = 16U, /*!< SPLLDIV2 functional clock */
  88. CKGEN_END_OF_CLOCKS = 17U, /*!< End of ckgen clocks */
  89. TCLK0_CLK = 18U, /*!< PWM external clock: TCLK0 */
  90. TCLK1_CLK = 19U, /*!< PWM external clock: TCLK1 */
  91. TCLK2_CLK = 20U, /*!< PWM external clock: TCLK2 */
  92. TCLK3_CLK = 21U, /*!< PWM external clock: TCLK3 */
  93. PWM0_EXT_CLK = 22U, /*!< PWM0 external clock source */
  94. PWM1_EXT_CLK = 23U, /*!< PWM1 external clock source */
  95. PWM2_EXT_CLK = 24U, /*!< PWM2 external clock source */
  96. PWM3_EXT_CLK = 25U, /*!< PWM3 external clock source */
  97. PWM4_EXT_CLK = 26U, /*!< PWM4 external clock source */
  98. PWM5_EXT_CLK = 27U, /*!< PWM5 external clock source */
  99. /* CLK OUT */
  100. CLKOUTSEL = 28U, /*!< CLKOUT Select fo pin */
  101. /* RTC and LSI */
  102. RTC_CLK = 29U, /*!< RTCCLK clock */
  103. LSI_CLK = 30U, /*!< LSI clock */
  104. LSI_1K_CLK = 31U, /*!< LSI 1KHz clock */
  105. LSI_32K_CLK = 32U, /*!< LSI 32KHz clock */
  106. LSI_128K_CLK = 33U, /*!< LSI 128KHz clock */
  107. SIM_END_OF_CLOCKS = 34U, /*!< End of sim clocks */
  108. /* Peripheral clock mux0 */
  109. I2C0_CLK = CKGEN_PERI_CLK_BASE + 0U, /*!< I2C0 clock source */
  110. TIMER_CLK = CKGEN_PERI_CLK_BASE + 2U, /*!< TIMER clock source */
  111. SPI0_CLK = CKGEN_PERI_CLK_BASE + 3U, /*!< SPI0 clock source */
  112. SPI1_CLK = CKGEN_PERI_CLK_BASE + 4U, /*!< SPI1 clock source */
  113. SPI2_CLK = CKGEN_PERI_CLK_BASE + 5U, /*!< SPI2 clock source */
  114. ADC0_CLK = CKGEN_PERI_CLK_BASE + 6U, /*!< ADC0 clock source */
  115. ADC1_CLK = CKGEN_PERI_CLK_BASE + 7U, /*!< ADC1 clock source */
  116. /* Peripheral clock mux1 */
  117. CAN0_CLK = CKGEN_PERI_CLK_BASE + 8U, /*!< CAN0 clock source */
  118. CAN1_CLK = CKGEN_PERI_CLK_BASE + 9U, /*!< CAN1 clock source */
  119. CAN2_CLK = CKGEN_PERI_CLK_BASE + 10U, /*!< CAN2 clock source */
  120. CAN3_CLK = CKGEN_PERI_CLK_BASE + 11U, /*!< CAN3 clock source */
  121. PCT_CLK = CKGEN_PERI_CLK_BASE + 14U, /*!< PCT clock source */
  122. EIO_CLK = CKGEN_PERI_CLK_BASE + 15U, /*!< EIO clock source */
  123. /* Peripheral clock mux2 */
  124. UART0_CLK = CKGEN_PERI_CLK_BASE + 16U, /*!< UART0 clock source */
  125. UART1_CLK = CKGEN_PERI_CLK_BASE + 17U, /*!< UART1 clock source */
  126. UART2_CLK = CKGEN_PERI_CLK_BASE + 18U, /*!< UART2 clock source */
  127. UART3_CLK = CKGEN_PERI_CLK_BASE + 19U, /*!< UART3 clock source */
  128. /* Peripheral clock mux3 */
  129. PWM0_CLK = CKGEN_PERI_CLK_BASE + 24U, /*!< PWM0 clock source */
  130. PWM1_CLK = CKGEN_PERI_CLK_BASE + 25U, /*!< PWM1 clock source */
  131. PWM2_CLK = CKGEN_PERI_CLK_BASE + 26U, /*!< PWM2 clock source */
  132. PWM3_CLK = CKGEN_PERI_CLK_BASE + 27U, /*!< PWM3 clock source */
  133. PWM4_CLK = CKGEN_PERI_CLK_BASE + 28U, /*!< PWM4 clock source */
  134. PWM5_CLK = CKGEN_PERI_CLK_BASE + 29U, /*!< PWM5 clock source */
  135. PCC_END_OF_CLOCKS = CKGEN_PERI_CLK_BASE + 30U, /*!< End of pcc clocks */
  136. PERI_CLK_OFF = CKGEN_PERI_CLK_BASE + 255U, /*!< peripheral clock off */
  137. CLOCK_NAME_COUNT = CKGEN_PERI_CLK_BASE + 84U, /*!< The total number of entries */
  138. } clock_names_t;
  139. /*!
  140. * @brief Define the enum of the module for setting module bus clock.
  141. */
  142. typedef enum
  143. {
  144. /* PERI_CLK_EN0 */
  145. CLK_UART0 = 0U,
  146. CLK_UART1,
  147. CLK_UART2,
  148. CLK_UART3,
  149. CLK_RESERVE4,
  150. CLK_RESERVE5,
  151. CLK_SPI0,
  152. CLK_SPI1,
  153. CLK_SPI2,
  154. CLK_I2C0,
  155. CLK_RESERVE10,
  156. CLK_PCT,
  157. CLK_RESERVE12,
  158. CLK_RESERVE13,
  159. CLK_RESERVE14,
  160. CLK_PWM0,
  161. CLK_PWM1,
  162. CLK_PWM2,
  163. CLK_PWM3,
  164. CLK_PWM4,
  165. CLK_PWM5,
  166. /* PERI_CLK_EN1 */
  167. CLK_RESERVE32 = 32U + 0U,
  168. CLK_RTC,
  169. CLK_DMA0,
  170. CLK_RESERVE35,
  171. CLK_RESERVE36,
  172. CLK_GPIO,
  173. CLK_WDG,
  174. CLK_EWDG,
  175. CLK_CRC,
  176. CLK_CAN0,
  177. CLK_CAN1,
  178. CLK_CAN2,
  179. CLK_CAN3,
  180. /* PERI_CLK_EN2 */
  181. CLK_RESERVE64 = 32U + 32U,
  182. CLK_CTU,
  183. CLK_RESERVE66,
  184. CLK_RESERVE67,
  185. CLK_RESERVE68,
  186. CLK_RESERVE69,
  187. CLK_RESERVE70,
  188. CLK_RESERVE71,
  189. CLK_ACMP0,
  190. CLK_PDT0,
  191. CLK_PDT1,
  192. CLK_ADC0,
  193. CLK_ADC1,
  194. CLK_TIMER,
  195. CLK_EIO,
  196. CLK_RESERVE79,
  197. CLK_SMU = 83U,
  198. CLK_MODULE_NUM
  199. } ckgen_clock_t;
  200. /*!
  201. * @brief Define the enum of the module for setting module at reset state or realse from reset state.
  202. */
  203. typedef enum
  204. {
  205. /* PERI_SFT_RST0 */
  206. SRST_UART0 = 0U,
  207. SRST_UART1,
  208. SRST_UART2,
  209. SRST_UART3,
  210. SRST_RESERVE4,
  211. SRST_RESERVE5,
  212. SRST_SPI0,
  213. SRST_SPI1,
  214. SRST_SPI2,
  215. SRST_I2C0,
  216. SRST_RESERVE10,
  217. SRST_PCT,
  218. SRST_RESERVE12,
  219. SRST_RESERVE13,
  220. SRST_RESERVE14,
  221. SRST_PWM0,
  222. SRST_PWM1,
  223. SRST_PWM2,
  224. SRST_PWM3,
  225. SRST_PWM4,
  226. SRST_PWM5,
  227. /* PERI_SFT_RST1 */
  228. SRST_RESERVE32 = 32U + 0U,
  229. SRST_RESERVE33,
  230. SRST_DMA0,
  231. SRST_RESERVE35,
  232. SRST_RESERVE36,
  233. SRST_GPIO,
  234. SRST_WDG,
  235. SRST_EWDG,
  236. SRST_CRC,
  237. SRST_CAN0,
  238. SRST_CAN1,
  239. SRST_CAN2,
  240. SRST_CAN3,
  241. /* PERI_SFT_RST2 */
  242. SRST_RESERVE64 = 32U + 32U,
  243. SRST_CTU,
  244. SRST_RESERVE66,
  245. SRST_RESERVE67,
  246. SRST_RESERVE68,
  247. SRST_RESERVE69,
  248. SRST_RESERVE70,
  249. SRST_RESERVE71,
  250. SRST_ACMP0,
  251. SRST_PDT0,
  252. SRST_PDT1,
  253. SRST_ADC0,
  254. SRST_ADC1,
  255. SRST_TIMER,
  256. SRST_EIO,
  257. SRST_MODULE_NUM
  258. } ckgen_softreset_t;
  259. /* =========================================================================================================================== */
  260. /* ================ MPU ================ */
  261. /* =========================================================================================================================== */
  262. /*!< Number of instances of the MPU module */
  263. #define MPU_INSTANCE_MAX (1UL)
  264. /*!< Has process identifier support. */
  265. #define MPU_HAS_PROCESS_IDENTIFIER (1UL)
  266. /*!< Specifies total number of slaves. */
  267. #define MPU_SLAVE_COUNT (3UL)
  268. /*!< Specifies total number of masters. */
  269. #define MPU_MASTER_COUNT (3UL)
  270. /*!< The MPU Logical Bus Master Number for core bus master. */
  271. #define MPU_MASTER_CORE (0UL)
  272. /*!< The MPU Logical Bus Master Number for Debugger master. */
  273. #define MPU_MASTER_DEBUGGER (1UL)
  274. /*!< The MPU Logical Bus Master Number for DMA master. */
  275. #define MPU_MASTER_DMA (2UL)
  276. /*!< Specifies master number. */
  277. #define MPU_MASTER \
  278. { \
  279. MPU_MASTER_CORE, \
  280. MPU_MASTER_DEBUGGER, \
  281. MPU_MASTER_DMA, \
  282. }
  283. /*!< Array of mpu base addresses */
  284. #define MPU_BASE_PTRS {MPU}
  285. /* =========================================================================================================================== */
  286. /* ================ PBR ================ */
  287. /* =========================================================================================================================== */
  288. /*!
  289. * @brief PBR master module.
  290. */
  291. typedef enum
  292. {
  293. PBR_MASTER_CORE = 0U,
  294. PBR_MASTER_DEBUGGER = 1U,
  295. PBR_MASTER_DMA = 2U,
  296. PBR_MASTER_MAX
  297. } pbr_master_t;
  298. /*!
  299. * @brief PBR peripheral module.
  300. */
  301. typedef enum
  302. {
  303. PBR_PWM0 = 0U,
  304. PBR_PWM1,
  305. PBR_PWM2,
  306. PBR_PWM3,
  307. PBR_PWM4,
  308. PBR_PWM5,
  309. PBR_RESERVE6,
  310. PBR_RESERVE7,
  311. PBR_CRC = 8U,
  312. PBR_GPIO,
  313. PBR_PDT0,
  314. PBR_PDT1,
  315. PBR_MPU,
  316. PBR_EIM,
  317. PBR_SMU,
  318. PBR_RESERVE15,
  319. PBR_CKGEN_RCM = 32U,
  320. PBR_RESERVE33,
  321. PBR_FLASH,
  322. PBR_ADC0,
  323. PBR_ADC1,
  324. PBR_ACMP0,
  325. PBR_CTU,
  326. PBR_CAN0,
  327. PBR_CAN1 = 40U,
  328. PBR_CAN2,
  329. PBR_CAN3,
  330. PBR_RESERVE43,
  331. PBR_RESERVE44,
  332. PBR_SPM,
  333. PBR_RTC,
  334. PBR_EIO,
  335. PBR_WDG = 48U,
  336. PBR_EWDG,
  337. PBR_SPI0,
  338. PBR_SPI1,
  339. PBR_SPI2,
  340. PBR_RESERVE53,
  341. PBR_I2C0,
  342. PBR_RESERVE55,
  343. PBR_TIMER = 64U,
  344. PBR_DMA,
  345. PBR_UART0,
  346. PBR_UART1,
  347. PBR_UART2,
  348. PBR_UART3,
  349. PBR_RESERVE70,
  350. PBR_RESERVE71,
  351. PBR_PCT = 72U,
  352. PBR_CMU,
  353. PBR_PERI_MAX
  354. } pbr_peripheral_t;
  355. /* =========================================================================================================================== */
  356. /* ================ CMU ================ */
  357. /* =========================================================================================================================== */
  358. /*!< Number of instances of the CMU module */
  359. #define CMU_INSTANCE_MAX (3UL)
  360. /*!< Array of CMU base addresses */
  361. #define CMU_BASE_PTRS {CMU_VHSI, CMU_HSE, CMU_PLL}
  362. /* =========================================================================================================================== */
  363. /* ================ SPM ================ */
  364. /* =========================================================================================================================== */
  365. /*!< Periph sleep ack status define */
  366. #define SPM_SLEEP_ACK_I2C0 (0x00000001UL)
  367. #define SPM_SLEEP_ACK_SPI0 (0x00000004UL)
  368. #define SPM_SLEEP_ACK_SPI1 (0x00000008UL)
  369. #define SPM_SLEEP_ACK_SPI2 (0x00000010UL)
  370. #define SPM_SLEEP_ACK_CAN0 (0x00000020UL)
  371. #define SPM_SLEEP_ACK_CAN1 (0x00000040UL)
  372. #define SPM_SLEEP_ACK_CAN2 (0x00000080UL)
  373. #define SPM_SLEEP_ACK_CAN3 (0x00000100UL)
  374. #define SPM_SLEEP_ACK_UART0 (0x00000800UL)
  375. #define SPM_SLEEP_ACK_UART1 (0x00001000UL)
  376. #define SPM_SLEEP_ACK_UART2 (0x00002000UL)
  377. #define SPM_SLEEP_ACK_UART3 (0x00004000UL)
  378. #define SPM_SLEEP_ACK_DMA0 (0x00020000UL)
  379. #define SPM_SLEEP_ACK_EIO (0x00040000UL)
  380. #define SPM_SLEEP_ACK_FLASH (0x00080000UL)
  381. /* =========================================================================================================================== */
  382. /* ================ SMU ================ */
  383. /* =========================================================================================================================== */
  384. /* =========================================================================================================================== */
  385. /* ================ SRAM ================ */
  386. /* =========================================================================================================================== */
  387. /*!< Number of instances of the SRAM module */
  388. #define SRAM_INSTANCE_COUNT (1UL)
  389. /*!< Channel Number of SRAM module */
  390. #define SRAM_CHANNEL_MAX (2UL)
  391. /*!< Array of SRAM IRQs */
  392. #define SRAM_IRQS {ECC_SRAM_1BIT_ERROR_IRQn, ECC_SRAM_2BIT_ERROR_IRQn}
  393. /*!< SRAM L start address */
  394. #define SRAM_L_START_ADDRESS (0x1FFF0000UL)
  395. /*!< SRAM L end address */
  396. #define SRAM_L_END_ADDRESS (0x1FFFFFFFUL)
  397. /*!< SRAM U start address */
  398. #define SRAM_U_START_ADDRESS (0x20000000UL)
  399. /*!< SRAM U end address */
  400. #define SRAM_U_END_ADDRESS (0x2000EFFFUL)
  401. /* =========================================================================================================================== */
  402. /* ================ EIM ================ */
  403. /* =========================================================================================================================== */
  404. /*!< Number of instances of the EIM module */
  405. #define EIM_INSTANCE_COUNT (1UL)
  406. /*!< Channel Number of EIM module */
  407. #define EIM_CHANNEL_MAX (2UL)
  408. /*!< Array of EIM base addresses */
  409. #define EIM_BASE_PTRS {EIM_CHANNEL0, EIM_CHANNEL1}
  410. /* =========================================================================================================================== */
  411. /* ================ FLASH ================ */
  412. /* =========================================================================================================================== */
  413. /*!< FLASH controler unlock key */
  414. #define FLASH_UNLOCK_KEY1 (0xac7840UL)
  415. #define FLASH_UNLOCK_KEY2 (0x01234567UL)
  416. /*!< Based address of P-FLASH */
  417. #define PFLASH_BASE_ADDRESS (0x00000000UL)
  418. /*!< Based address of D-FLASH */
  419. #define DFLASH_BASE_ADDRESS (0x01000000UL)
  420. /*!< Based address of FlexRAM area */
  421. #define FLEXRAM_BASE_ADDRESS (0x14000000UL)
  422. /*!< P-Flash size in byte */
  423. #define PFLASH_BLOCK_SIZE (1024*1024UL)
  424. /*!< D-Flash size in byte */
  425. #define DFLASH_BLOCK_SIZE (128*1024UL)
  426. /*!< FlexRAM size in byte */
  427. #define FLEX_RAM_SIZE (4*1024UL)
  428. /*!< P-Flash page size in byte */
  429. #define PFLASH_PAGE_SIZE (0x00000800UL)
  430. /*!< D-Flash page size in byte */
  431. #define DFLASH_PAGE_SIZE (0x00000800UL)
  432. /*!< P-Flash program unit size */
  433. #define PFLASH_WRITE_UNIT_SIZE (8UL)
  434. /*!< D-Flash program unit size */
  435. #define DFLASH_WRITE_UNIT_SIZE (8UL)
  436. /* =========================================================================================================================== */
  437. /* ================ GPIO ================ */
  438. /* =========================================================================================================================== */
  439. /*!< Number of instances of the GPIO module */
  440. #define GPIO_INSTANCE_MAX (5UL)
  441. /*!< Array of GPIO base addresses */
  442. #define GPIO_BASE_PTRS {GPIOA, GPIOB, GPIOC, GPIOD, GPIOE}
  443. /* =========================================================================================================================== */
  444. /* ================ PORT ================ */
  445. /* =========================================================================================================================== */
  446. /*!< Array of GPIO port base addresses */
  447. #define GPIO_PORT_BASE_PTRS {PORTA, PORTB, PORTC, PORTD, PORTE}
  448. /* =========================================================================================================================== */
  449. /* ================ CAN ================ */
  450. /* =========================================================================================================================== */
  451. /*!< Number of instances of the CAN module */
  452. #define CAN_INSTANCE_MAX (4UL)
  453. /*!< Array of CAN base addresses */
  454. #define CAN_BASE_PTRS {CAN0, CAN1, CAN2, CAN3}
  455. /*!< Array of CAN IRQs */
  456. #define CAN_IRQS {CAN0_IRQn, CAN1_IRQn, CAN2_IRQn, CAN3_IRQn}
  457. /*!< Array of CAN wakeup IRQs */
  458. #define CAN_WAKEUP_IRQS {CAN0_WAKEUP_IRQn, CAN1_WAKEUP_IRQn, CAN2_WAKEUP_IRQn, CAN3_WAKEUP_IRQn}
  459. /*!< Array of CAN ckgen interface clocks */
  460. #define CAN_CKGEN_CLOCKS {CLK_CAN0, CLK_CAN1, CLK_CAN2, CLK_CAN3}
  461. /*!< Array of CAN soft resets */
  462. #define CAN_SOFT_RESETS {SRST_CAN0, SRST_CAN1, SRST_CAN2, SRST_CAN3}
  463. /*!< Array of CAN clock names */
  464. #define CAN_CLOCK_NAMES {CAN0_CLK, CAN1_CLK, CAN2_CLK, CAN3_CLK}
  465. /*!< CAN receive fifo count */
  466. #define CAN_RECEIVE_FIFO_COUNT (13UL)
  467. /*!< CAN transmit secondary buffer count (6 STB) */
  468. #define CAN_TRANSMIT_FIFO_COUNT (6UL)
  469. /*!< CAN max filter number */
  470. #define CAN_FILTER_NUM_MAX (60UL)
  471. /* =========================================================================================================================== */
  472. /* ================ UART ================ */
  473. /* =========================================================================================================================== */
  474. /*!< Number of instances of the UART module */
  475. #define UART_INSTANCE_MAX (4UL)
  476. /*!< Array of UART base addresses */
  477. #define UART_BASE_PTRS {UART0, UART1, UART2, UART3}
  478. /*!< Array of UART IRQs */
  479. #define UART_IRQS {UART0_IRQn, UART1_IRQn, UART2_IRQn, UART3_IRQn}
  480. /*!< Array of UART ckgen interface clocks */
  481. #define UART_CKGEN_CLOCKS {CLK_UART0, CLK_UART1, CLK_UART2, CLK_UART3}
  482. /*!< Array of UART soft resets */
  483. #define UART_SOFT_RESETS {SRST_UART0, SRST_UART1, SRST_UART2, SRST_UART3}
  484. /*!< Array of UART clock names */
  485. #define UART_CLOCK_NAMES {UART0_CLK, UART1_CLK, UART2_CLK, UART3_CLK}
  486. /* =========================================================================================================================== */
  487. /* ================ I2C ================ */
  488. /* =========================================================================================================================== */
  489. /*!< Number of instances of the I2C module */
  490. #define I2C_INSTANCE_MAX (1UL)
  491. /*!< Array of I2C base addresses */
  492. #define I2C_BASE_PTRS {I2C0}
  493. /*!< Array of I2C IRQs */
  494. #define I2C_IRQS {I2C0_IRQn}
  495. /*!< Array of I2C ckgen interface clocks */
  496. #define I2C_CKGEN_CLOCKS {CLK_I2C0}
  497. /*!< Array of I2C soft resets */
  498. #define I2C_SOFT_RESETS {SRST_I2C0}
  499. /*!< Array of I2C clock names */
  500. #define I2C_CLOCK_NAMES {I2C0_CLK}
  501. /* =========================================================================================================================== */
  502. /* ================ SPI ================ */
  503. /* =========================================================================================================================== */
  504. /*!< Number of instances of the SPI module */
  505. #define SPI_INSTANCE_MAX (3UL)
  506. /*!< Array of SPI base addresses */
  507. #define SPI_BASE_PTRS {SPI0, SPI1, SPI2}
  508. /*!< Array of SPI IRQs */
  509. #define SPI_IRQS {SPI0_IRQn, SPI1_IRQn, SPI2_IRQn}
  510. /*!< Array of SPI ckgen interface clocks */
  511. #define SPI_CKGEN_CLOCKS {CLK_SPI0, CLK_SPI1, CLK_SPI2}
  512. /*!< Array of SPI soft resets */
  513. #define SPI_SOFT_RESETS {SRST_SPI0, SRST_SPI1, SRST_SPI2}
  514. /*!< Array of SPI clock names */
  515. #define SPI_CLOCK_NAMES {SPI0_CLK, SPI1_CLK, SPI2_CLK}
  516. /* =========================================================================================================================== */
  517. /* ================ EIO ================ */
  518. /* =========================================================================================================================== */
  519. /*!< Number of instances of the EIO module */
  520. #define EIO_INSTANCE_COUNT (1UL)
  521. /*!< Define the maximum number of shifters for any EIO instance. */
  522. #define EIO_MAX_SHIFTER_COUNT (4UL)
  523. /*!< Array of EIO IRQs */
  524. #define EIO_IRQS {EIO_IRQn}
  525. /*!< Array of EIO clock names */
  526. #define EIO_CLOCK_NAMES {EIO_CLK}
  527. /*!< Array of EIO base addresses */
  528. #define EIO_BASE_PTRS {EIO}
  529. /* =========================================================================================================================== */
  530. /* ================ CRC ================ */
  531. /* =========================================================================================================================== */
  532. /*!< Number of instances of the CRC module */
  533. #define CRC_INSTANCE_MAX (1UL)
  534. /*!< Array of CRC base addresses */
  535. #define CRC_BASE_PTRS {CRC}
  536. /*!< Array of CRC ckgen interface clocks */
  537. #define CRC_CKGEN_CLOCKS {CLK_CRC}
  538. /*!< Array of CRC soft resets */
  539. #define CRC_SOFT_RESETS {SRST_CRC}
  540. /* =========================================================================================================================== */
  541. /* ================ RTC ================ */
  542. /* =========================================================================================================================== */
  543. /*!< Number of instances of the RTC module */
  544. #define RTC_INSTANCE_MAX (1UL)
  545. /*!< Array of RTC base addresses */
  546. #define RTC_BASE_PTRS {RTC}
  547. /*!< Array of RTC IRQs */
  548. #define RTC_IRQS {RTC_IRQn}
  549. /*!< Array of RTC ckgen interface clocks */
  550. #define RTC_CKGEN_CLOCKS {CLK_RTC}
  551. /* =========================================================================================================================== */
  552. /* ================ WDG ================ */
  553. /* =========================================================================================================================== */
  554. /*!< Number of instances of the WDG module */
  555. #define WDG_INSTANCE_MAX (1UL)
  556. /*!< Array of WDG base addresses */
  557. #define WDG_BASE_PTRS {WDG}
  558. /*!< Array of WDG IRQs */
  559. #define WDG_IRQS {WDG_IRQn}
  560. /*!< Array of WDG ckgen interface clocks */
  561. #define WDG_CKGEN_CLOCKS {CLK_WDG}
  562. /*!< Array of WDG soft resets */
  563. #define WDG_SOFT_RESETS {SRST_WDG}
  564. /* The reset value of the wdg window register */
  565. #define WDG_WIN_RESET_DEFALUT_VALUE (0x0UL)
  566. /* The reset value of the wdg timeout register */
  567. #define WDG_TIMEOUT_RESET_DEFAULT_VALUE (0x5000UL)
  568. /* The first 32-bit value used for unlocking the wdg */
  569. #define WDG_UNLOCK_FIRST_VALUE (0xE064D987UL)
  570. /* The second 32-bit value used for unlocking the wdg */
  571. #define WDG_UNLOCK_SECOND_VALUE (0x868A8478UL)
  572. /* The first 32-bit value used for feed the wdg */
  573. #define WDG_FEED_FIRST_VALUE (0x7908AD15UL)
  574. /* The second 32-bit value used for feed the wdg */
  575. #define WDG_FEED_SECOND_VALUE (0x5AD5A879UL)
  576. /* The default reset value of WDG CS0 register */
  577. #define WDG_CS0_RESET_VALUE (0x20UL)
  578. /* The default reset value of WDG CS1 register */
  579. #define WDG_CS1_RESET_VALUE (0x0UL)
  580. /* The default reset value of WDG TOVAL register */
  581. #define WDG_TOVAL_RESET_VALUE (0x5000UL)
  582. /* The default reset value of WDG WIN register */
  583. #define WDG_WIN_RESET_VALUE (0x0UL)
  584. /* =========================================================================================================================== */
  585. /* ================ EWDG ================ */
  586. /* =========================================================================================================================== */
  587. /*!< Number of instances of the EWDG module */
  588. #define EWDG_INSTANCE_MAX (1UL)
  589. /*!< Array of EWDG IRQs */
  590. #define EWDG_BASE_PTRS {EWDG}
  591. /*!< Array of EWDG IRQs */
  592. #define EWDG_IRQS {EWDG_IRQn}
  593. /*!< Array of EWDG ckgen interface clocks */
  594. #define EWDG_CKGEN_CLOCKS {CLK_EWDG}
  595. /*!< Array of EWDG soft resets */
  596. #define EWDG_SOFT_RESETS {SRST_EWDG}
  597. /*!< EWDG refresh key values */
  598. #define EWDG_KEY_FIRST_BYTE (0xB4UL)
  599. #define EWDG_KEY_SECOND_BYTE (0x2CUL)
  600. /*!< EWDG CMPH CMPL limit values */
  601. #define EWDG_CMPH_MAX_VALUE (0xFEUL)
  602. #define EWDG_CMPL_MIN_VALUE (0x00UL)
  603. /* =========================================================================================================================== */
  604. /* ================ DMA ================ */
  605. /* =========================================================================================================================== */
  606. /*!< Number of instances of the DMA module */
  607. #define DMA_INSTANCE_MAX (1UL)
  608. /*!< Number of channel of the DMA module */
  609. #define DMA_CH_MAX (16UL)
  610. /*!< Number of virtual channel of all DMA module */
  611. #define DMA_VIRTUAL_CH_MAX (DMA_CH_MAX * DMA_INSTANCE_MAX)
  612. /*!< Array of DMA channel base addresses */
  613. #define DMA_VIRTUAL_CH_BASE_PTRS {DMA0_CHANNEL0, DMA0_CHANNEL1, DMA0_CHANNEL2, DMA0_CHANNEL3, \
  614. DMA0_CHANNEL4, DMA0_CHANNEL5, DMA0_CHANNEL6, DMA0_CHANNEL7, \
  615. DMA0_CHANNEL8, DMA0_CHANNEL9, DMA0_CHANNEL10, DMA0_CHANNEL11, \
  616. DMA0_CHANNEL12, DMA0_CHANNEL13, DMA0_CHANNEL14, DMA0_CHANNEL15}
  617. /*!< Array of DMA ckgen interface clocks */
  618. #define DMA_CKGEN_CLOCKS {CLK_DMA0}
  619. /*!< Array of DMA soft resets */
  620. #define DMA_SOFT_RESETS {SRST_DMA0}
  621. /*!
  622. * @brief DMA request for the DMA channel.
  623. */
  624. typedef enum
  625. {
  626. DMA_REQ_DISABLE = 0U,
  627. DMA_REQ_UART0_RX = 1U,
  628. DMA_REQ_UART0_TX = 2U,
  629. DMA_REQ_UART1_RX = 3U,
  630. DMA_REQ_UART1_TX = 4U,
  631. DMA_REQ_UART2_RX = 5U,
  632. DMA_REQ_UART2_TX = 6U,
  633. DMA_REQ_UART3_RX = 7U,
  634. DMA_REQ_UART3_TX = 8U,
  635. DMA_REQ_EIO_SHIFTER0 = 13U,
  636. DMA_REQ_EIO_SHIFTER1 = 14U,
  637. DMA_REQ_EIO_SHIFTER2 = 15U,
  638. DMA_REQ_EIO_SHIFTER3 = 16U,
  639. DMA_REQ_PWM1_CHANNEL_0 = 17U,
  640. DMA_REQ_PWM1_CHANNEL_1 = 18U,
  641. DMA_REQ_PWM1_CHANNEL_2 = 19U,
  642. DMA_REQ_PWM1_CHANNEL_3 = 20U,
  643. DMA_REQ_PWM1_CHANNEL_4 = 21U,
  644. DMA_REQ_PWM1_CHANNEL_5 = 22U,
  645. DMA_REQ_PWM1_CHANNEL_6 = 23U,
  646. DMA_REQ_PWM1_CHANNEL_7 = 24U,
  647. DMA_REQ_PWM1_UNDER_OR_OVER_FLOW = 25U,
  648. DMA_REQ_PWM2_CHANNEL_0 = 26U,
  649. DMA_REQ_PWM2_CHANNEL_1 = 27U,
  650. DMA_REQ_PWM2_CHANNEL_2 = 28U,
  651. DMA_REQ_PWM2_CHANNEL_3 = 29U,
  652. DMA_REQ_PWM2_CHANNEL_4 = 30U,
  653. DMA_REQ_PWM2_CHANNEL_5 = 31U,
  654. DMA_REQ_PWM2_CHANNEL_6 = 32U,
  655. DMA_REQ_PWM2_CHANNEL_7 = 33U,
  656. DMA_REQ_PWM2_UNDER_OR_OVER_FLOW = 34U,
  657. DMA_REQ_PWM0_OR_CH0_CH7 = 35U,
  658. DMA_REQ_PWM0_UNDER_OR_OVER_FLOW = 36U,
  659. DMA_REQ_PWM3_OR_CH0_CH7 = 37U,
  660. DMA_REQ_PWM3_UNDER_OR_OVER_FLOW = 38U,
  661. DMA_REQ_PWM4_OR_CH0_CH7 = 39U,
  662. DMA_REQ_PWM4_UNDER_OR_OVER_FLOW = 40U,
  663. DMA_REQ_PWM5_OR_CH0_CH7 = 41U,
  664. DMA_REQ_PWM5_UNDER_OR_OVER_FLOW = 42U,
  665. DMA_REQ_SPI0_RX = 47U,
  666. DMA_REQ_SPI0_TX = 48U,
  667. DMA_REQ_SPI1_RX = 49U,
  668. DMA_REQ_SPI1_TX = 50U,
  669. DMA_REQ_SPI2_RX = 51U,
  670. DMA_REQ_SPI2_TX = 52U,
  671. DMA_REQ_ADC0 = 53U,
  672. DMA_REQ_ADC1 = 54U,
  673. DMA_REQ_I2C0_RX = 55U,
  674. DMA_REQ_I2C0_TX = 56U,
  675. DMA_REQ_PORTA = 59U,
  676. DMA_REQ_PORTB = 60U,
  677. DMA_REQ_PORTC = 61U,
  678. DMA_REQ_PORTD = 62U,
  679. DMA_REQ_PORTE = 63U,
  680. DMA_REQ_CAN0_RX = 64U,
  681. DMA_REQ_CAN1_RX = 65U,
  682. DMA_REQ_CAN2_RX = 66U,
  683. DMA_REQ_CAN3_RX = 67U,
  684. DMA_REQ_ALWAYS_ENABLED = 72U
  685. }dma_request_source_t;
  686. /* =========================================================================================================================== */
  687. /* ================ ADC ================ */
  688. /* =========================================================================================================================== */
  689. /*!< Number of instances of the ADC module */
  690. #define ADC_INSTANCE_MAX (2UL)
  691. /*!< Arrays of ADC base address */
  692. #define ADC_BASE_PTRS {ADC0, ADC1}
  693. /*!< Arrays of ADC ckgen interface clocks */
  694. #define ADC_CKGEN_CLOCKS {CLK_ADC0, CLK_ADC1}
  695. /*!< Arrays of ADC soft resets */
  696. #define ADC_SOFT_RESETS {SRST_ADC0, SRST_ADC1}
  697. /*!< Array of ADC IRQs */
  698. #define ADC_IRQS {ADC0_IRQn, ADC1_IRQn}
  699. /*!< Array of ADC DMA requests */
  700. #define ADC_DMA_REQEUSTS {DMA_REQ_ADC0, DMA_REQ_ADC1}
  701. /*!< Array of ADC clock names */
  702. #define ADC_CLOCK_NAMES {ADC0_CLK, ADC1_CLK}
  703. /*!< Max clock frequence of ADC function clock */
  704. #define ADC_CLOCK_FREQ_MAX_RUNTIME (30000000UL)
  705. /* =========================================================================================================================== */
  706. /* ================ ACMP ================ */
  707. /* =========================================================================================================================== */
  708. /*!< Number of instances of the ACMP module */
  709. #define ACMP_INSTANCE_MAX (1UL)
  710. /*!< Arrays of ACMP base address */
  711. #define ACMP_BASE_PTRS {ACMP0}
  712. /*!< Arrays of ACMP ckgen interface clocks */
  713. #define ACMP_CKGEN_CLOCKS {CLK_ACMP0}
  714. /*!< Arrays of ACMP soft resets */
  715. #define ACMP_SOFT_RESETS {SRST_ACMP0}
  716. /*!< Array of ACMP IRQs */
  717. #define ACMP_IRQS {ACMP0_IRQn}
  718. /* =========================================================================================================================== */
  719. /* ================ PWM ================ */
  720. /* =========================================================================================================================== */
  721. /*!< Number of instances of the PWM module */
  722. #define PWM_INSTANCE_MAX (6UL)
  723. /*!< Array of PWM base addresses */
  724. #define PWM_BASE_PTRS {PWM0, PWM1, PWM2, PWM3, PWM4, PWM5}
  725. /*!< Array of PWM Overflow IRQs */
  726. #define PWM_OVERFLOW_IRQS {PWM0_OVERFLOW_IRQn, PWM1_OVERFLOW_IRQn, PWM2_OVERFLOW_IRQn, PWM3_OVERFLOW_IRQn, PWM4_OVERFLOW_IRQn, PWM5_OVERFLOW_IRQn}
  727. /*!< Array of PWM Channel IRQs */
  728. #define PWM_CHANNEL_IRQS {PWM0_CHANNEL_IRQn, PWM1_CHANNEL_IRQn, PWM2_CHANNEL_IRQn, PWM3_CHANNEL_IRQn, PWM4_CHANNEL_IRQn, PWM5_CHANNEL_IRQn}
  729. /*!< Array of PWM Fault IRQs */
  730. #define PWM_FAULT_IRQS {PWM0_FAULT_IRQn, PWM1_FAULT_IRQn, PWM2_FAULT_IRQn, PWM3_FAULT_IRQn, PWM4_FAULT_IRQn, PWM5_FAULT_IRQn}
  731. /*!< Array of PWM ckgen interface clocks */
  732. #define PWM_CKGEN_CLOCKS {CLK_PWM0, CLK_PWM1, CLK_PWM2, CLK_PWM3, CLK_PWM4, CLK_PWM5}
  733. /*!< Array of PWM soft resets */
  734. #define PWM_SOFT_RESETS {SRST_PWM0, SRST_PWM1, SRST_PWM2, SRST_PWM3, SRST_PWM4, SRST_PWM5}
  735. /* =========================================================================================================================== */
  736. /* ================ PDT ================ */
  737. /* =========================================================================================================================== */
  738. /*!< Number of instances of the PDT module */
  739. #define PDT_INSTANCE_MAX (2UL)
  740. /*!< Array of PDT base addresses */
  741. #define PDT_BASE_PTRS {PDT0, PDT1}
  742. /*!< Array of PDT IRQs */
  743. #define PDT_IRQS {PDT0_IRQn, PDT1_IRQn}
  744. /*!< Array of PDT ckgen interface clocks */
  745. #define PDT_CKGEN_CLOCKS {CLK_PDT0, CLK_PDT1}
  746. /*!< Array of PDT soft resets */
  747. #define PDT_SOFT_RESETS {SRST_PDT0, SRST_PDT1}
  748. /* =========================================================================================================================== */
  749. /* ================ TIMER ================ */
  750. /* =========================================================================================================================== */
  751. /*!< Channel Number of timer module */
  752. #define TIMER_CHANNEL_MAX (4UL)
  753. /*!< Number of instances of the timer module */
  754. #define TIMER_INSTANCE_COUNT (1UL)
  755. /*!< Array of timer base addresses */
  756. #define TIMER_BASE_PTRS {TIMER_CHANNEL0, TIMER_CHANNEL1, TIMER_CHANNEL2, TIMER_CHANNEL3}
  757. /*!< Array of timer IRQs */
  758. #define TIMER_IRQS {TIMER_CHANNEL0_IRQn, TIMER_CHANNEL1_IRQn, TIMER_CHANNEL2_IRQn, TIMER_CHANNEL3_IRQn}
  759. /*!< Array of timer clock names */
  760. #define TIMER_CLOCK_NAMES {TIMER_CLK}
  761. /* =========================================================================================================================== */
  762. /* ================ PCT ================ */
  763. /* =========================================================================================================================== */
  764. /*!< Number of instances of the PCT module */
  765. #define PCT_INSTANCE_COUNT (1UL)
  766. /*!< Array of PCT base addresses */
  767. #define PCT_BASE_PTRS {PCT}
  768. /*!< Array of PCT IRQs */
  769. #define PCT_IRQS {PCT_IRQn}
  770. /*!< Array of PCT clock names */
  771. #define PCT_CLOCK_NAMES {PCT_CLK}
  772. /* =========================================================================================================================== */
  773. /* ================ CTU ================ */
  774. /* =========================================================================================================================== */
  775. /*!< Number of instances of the CTU module */
  776. #define CTU_INSTANCE_MAX (1UL)
  777. /*!< Array of CTU base addresses */
  778. #define CTU_BASE_PTRS {CTU}
  779. /*!< Array of CTU ckgen interface clocks */
  780. #define CTU_CKGEN_CLOCKS {CLK_CTU}
  781. /*!< Array of CTU soft resets */
  782. #define CTU_SOFT_RESETS {SRST_CTU}
  783. /*!
  784. * @brief Enumeration for trigger source of the trgmux.
  785. */
  786. typedef enum
  787. {
  788. TRGMUX_TRIG_SOURCE_DISABLE = 0U, /*!< Trigger source of disable */
  789. TRGMUX_TRIG_SOURCE_ENABLE = 1U, /*!< Trigger source of enable */
  790. TRGMUX_TRIG_SOURCE_EXT_IN0 = 2U, /*!< Trigger source of ext_in0 */
  791. TRGMUX_TRIG_SOURCE_EXT_IN1 = 3U, /*!< Trigger source of ext_in1 */
  792. TRGMUX_TRIG_SOURCE_EXT_IN2 = 4U, /*!< Trigger source of ext_in2 */
  793. TRGMUX_TRIG_SOURCE_EXT_IN3 = 5U, /*!< Trigger source of ext_in3 */
  794. TRGMUX_TRIG_SOURCE_EXT_IN4 = 6U, /*!< Trigger source of ext_in4 */
  795. TRGMUX_TRIG_SOURCE_EXT_IN5 = 7U, /*!< Trigger source of ext_in5 */
  796. TRGMUX_TRIG_SOURCE_EXT_IN6 = 8U, /*!< Trigger source of ext_in6 */
  797. TRGMUX_TRIG_SOURCE_EXT_IN7 = 9U, /*!< Trigger source of ext_in7 */
  798. TRGMUX_TRIG_SOURCE_EXT_IN8 = 10U, /*!< Trigger source of ext_in8 */
  799. TRGMUX_TRIG_SOURCE_EXT_IN9 = 11U, /*!< Trigger source of ext_in9 */
  800. TRGMUX_TRIG_SOURCE_EXT_IN10 = 12U, /*!< Trigger source of ext_in10 */
  801. TRGMUX_TRIG_SOURCE_EXT_IN11 = 13U, /*!< Trigger source of ext_in11 */
  802. TRGMUX_TRIG_SOURCE_ACMP0_OUT = 14U, /*!< Trigger source of acmp0_out */
  803. TRGMUX_TRIG_SOURCE_TIMER_CH0 = 16U, /*!< Trigger source of timer_ch0 */
  804. TRGMUX_TRIG_SOURCE_TIMER_CH1 = 17U, /*!< Trigger source of timer_Ch1 */
  805. TRGMUX_TRIG_SOURCE_TIMER_CH2 = 18U, /*!< Trigger source of timer_ch2 */
  806. TRGMUX_TRIG_SOURCE_TIMER_CH3 = 19U, /*!< Trigger source of timer_ch3 */
  807. TRGMUX_TRIG_SOURCE_PCT0_TRIG = 20U, /*!< Trigger source of pct0_trig */
  808. TRGMUX_TRIG_SOURCE_PWM0_INIT_TRIG = 21U, /*!< Trigger source of pwm0_init_trig */
  809. TRGMUX_TRIG_SOURCE_PWM0_MATCH_TRIG = 22U, /*!< Trigger source of pwm0_match_trig */
  810. TRGMUX_TRIG_SOURCE_PWM0_MAX_TRIG = 23U, /*!< Trigger source of pwm0_max_trig */
  811. TRGMUX_TRIG_SOURCE_PWM1_INIT_TRIG = 24U, /*!< Trigger source of pwm1_init_trig */
  812. TRGMUX_TRIG_SOURCE_PWM1_MATCH_TRIG = 25U, /*!< Trigger source of pwm1_match_trig */
  813. TRGMUX_TRIG_SOURCE_PWM1_MAX_TRIG = 26U, /*!< Trigger source of pwm1_max_trig */
  814. TRGMUX_TRIG_SOURCE_PWM2_INIT_TRIG = 27U, /*!< Trigger source of pwm2_init_trig */
  815. TRGMUX_TRIG_SOURCE_PWM2_MATCH_TRIG = 28U, /*!< Trigger source of pwm2_match_trig */
  816. TRGMUX_TRIG_SOURCE_PWM2_MAX_TRIG = 29U, /*!< Trigger source of pwm2_max_trig */
  817. TRGMUX_TRIG_SOURCE_PWM3_INIT_TRIG = 30U, /*!< Trigger source of pwm3_init_trig */
  818. TRGMUX_TRIG_SOURCE_PWM3_MATCH_TRIG = 31U, /*!< Trigger source of pwm3_match_trig */
  819. TRGMUX_TRIG_SOURCE_PWM3_MAX_TRIG = 32U, /*!< Trigger source of pwm3_max_trig */
  820. TRGMUX_TRIG_SOURCE_PWM4_INIT_TRIG = 33U, /*!< Trigger source of pwm4_init_trig */
  821. TRGMUX_TRIG_SOURCE_PWM4_MATCH_TRIG = 34U, /*!< Trigger source of pwm4_match_trig */
  822. TRGMUX_TRIG_SOURCE_PWM4_MAX_TRIG = 35U, /*!< Trigger source of pwm4_max_trig */
  823. TRGMUX_TRIG_SOURCE_PWM5_INIT_TRIG = 36U, /*!< Trigger source of pwm5_init_trig */
  824. TRGMUX_TRIG_SOURCE_PWM5_MATCH_TRIG = 37U, /*!< Trigger source of pwm5_match_trig */
  825. TRGMUX_TRIG_SOURCE_PWM5_MAX_TRIG = 38U, /*!< Trigger source of pwm5_max_trig */
  826. TRGMUX_TRIG_SOURCE_ADC0_EOC = 45U, /*!< Trigger source of adc0_eoc */
  827. TRGMUX_TRIG_SOURCE_ADC0_IEOC = 46U, /*!< Trigger source of adc0_ieoc */
  828. TRGMUX_TRIG_SOURCE_ADC0_AMO = 47U, /*!< Trigger source of adc0_amo */
  829. TRGMUX_TRIG_SOURCE_ADC1_EOC = 48U, /*!< Trigger source of adc1_eoc */
  830. TRGMUX_TRIG_SOURCE_ADC1_IEOC = 49U, /*!< Trigger source of adc1_ieoc */
  831. TRGMUX_TRIG_SOURCE_ADC1_AMO = 50U, /*!< Trigger source of adc1_amo */
  832. TRGMUX_TRIG_SOURCE_PDT0_TRIG = 51U, /*!< Trigger source of pdt0_trig */
  833. TRGMUX_TRIG_SOURCE_PDT0_PULSE_OUT = 52U, /*!< Trigger source of pdt0_pulse_out */
  834. TRGMUX_TRIG_SOURCE_PDT1_TRIG = 53U, /*!< Trigger source of pdt1_trig */
  835. TRGMUX_TRIG_SOURCE_PDT1_PULSE_OUT = 54U, /*!< Trigger source of pdt1_pulse_out */
  836. TRGMUX_TRIG_SOURCE_RTC_ALARM_TRIG = 55U, /*!< Trigger source of rtc_alarm_trig */
  837. TRGMUX_TRIG_SOURCE_RTC_PRESCALER_TRIG = 56U, /*!< Trigger source of rtc_prescaler_trig */
  838. TRGMUX_TRIG_SOURCE_EIO_TRIG0 = 57U, /*!< Trigger source of eio_trig0 */
  839. TRGMUX_TRIG_SOURCE_EIO_TRIG1 = 58U, /*!< Trigger source of eio_trig1 */
  840. TRGMUX_TRIG_SOURCE_EIO_TRIG2 = 59U, /*!< Trigger source of eio_trig2 */
  841. TRGMUX_TRIG_SOURCE_EIO_TRIG3 = 60U, /*!< Trigger source of eio_trig3 */
  842. TRGMUX_TRIG_SOURCE_SW_TRIG0 = 61U, /*!< Trigger source of sw_trig0 */
  843. TRGMUX_TRIG_SOURCE_SW_TRIG1 = 62U, /*!< Trigger source of sw_trig1 */
  844. TRGMUX_TRIG_SOURCE_SW_TRIG2 = 63U, /*!< Trigger source of sw_trig2 */
  845. TRGMUX_TRIG_SOURCE_SW_TRIG3 = 64U /*!< Trigger source of sw_trig3 */
  846. } trgmux_trigger_source_t;
  847. /*!
  848. * @brief Enumeration for target module of the trgmux.
  849. */
  850. typedef enum
  851. {
  852. TRGMUX_TARGET_MODULE_DMA_CH0 = 0U, /*!< Target module of dma_ch0 */
  853. TRGMUX_TARGET_MODULE_DMA_CH1 = 1U, /*!< Target module of dma_ch1 */
  854. TRGMUX_TARGET_MODULE_DMA_CH2 = 2U, /*!< Target module of dma_ch2 */
  855. TRGMUX_TARGET_MODULE_DMA_CH3 = 3U, /*!< Target module of dma_ch3 */
  856. TRGMUX_TARGET_MODULE_EXT_OUT0 = 4U, /*!< Target module of ext_out0 */
  857. TRGMUX_TARGET_MODULE_EXT_OUT1 = 5U, /*!< Target module of ext_out1 */
  858. TRGMUX_TARGET_MODULE_EXT_OUT2 = 6U, /*!< Target module of ext_out2 */
  859. TRGMUX_TARGET_MODULE_EXT_OUT3 = 7U, /*!< Target module of ext_out3 */
  860. TRGMUX_TARGET_MODULE_EXT_OUT4 = 8U, /*!< Target module of ext_out4 */
  861. TRGMUX_TARGET_MODULE_EXT_OUT5 = 9U, /*!< Target module of ext_out5 */
  862. TRGMUX_TARGET_MODULE_EXT_OUT6 = 10U, /*!< Target module of ext_out6 */
  863. TRGMUX_TARGET_MODULE_EXT_OUT7 = 11U, /*!< Target module of ext_out7 */
  864. TRGMUX_TARGET_MODULE_ADC0_REGULAR0 = 12U, /*!< Target module of adc0_regular0 */
  865. TRGMUX_TARGET_MODULE_ADC0_REGULAR1 = 13U, /*!< Target module of adc0_regular1 */
  866. TRGMUX_TARGET_MODULE_ADC0_REGULAR2 = 14U, /*!< Target module of adc0_regular2 */
  867. TRGMUX_TARGET_MODULE_ADC0_REGULAR3 = 15U, /*!< Target module of adc0_regular3 */
  868. TRGMUX_TARGET_MODULE_ADC0_INJECTION0 = 16U, /*!< Target module of adc0_injection0 */
  869. TRGMUX_TARGET_MODULE_ADC0_INJECTION1 = 17U, /*!< Target module of adc0_injection1 */
  870. TRGMUX_TARGET_MODULE_ADC0_INJECTION2 = 18U, /*!< Target module of adc0_injection2 */
  871. TRGMUX_TARGET_MODULE_ADC0_INJECTION3 = 19U, /*!< Target module of adc0_injection3 */
  872. TRGMUX_TARGET_MODULE_ADC1_REGULAR0 = 20U, /*!< Target module of adc1_regular0 */
  873. TRGMUX_TARGET_MODULE_ADC1_REGULAR1 = 21U, /*!< Target module of adc1_regular1 */
  874. TRGMUX_TARGET_MODULE_ADC1_REGULAR2 = 22U, /*!< Target module of adc1_regular2 */
  875. TRGMUX_TARGET_MODULE_ADC1_REGULAR3 = 23U, /*!< Target module of adc1_regular3 */
  876. TRGMUX_TARGET_MODULE_ADC1_INJECTION0 = 24U, /*!< Target module of adc1_injection0 */
  877. TRGMUX_TARGET_MODULE_ADC1_INJECTION1 = 25U, /*!< Target module of adc1_injection1 */
  878. TRGMUX_TARGET_MODULE_ADC1_INJECTION2 = 26U, /*!< Target module of adc1_injection2 */
  879. TRGMUX_TARGET_MODULE_ADC1_INJECTION3 = 27U, /*!< Target module of adc1_injection3 */
  880. TRGMUX_TARGET_MODULE_ACMP0_TR = 28U, /*!< Target module of acmp0_tr */
  881. TRGMUX_TARGET_MODULE_PWM0_TRIG0 = 32U, /*!< Target module of pwm0_trig0 */
  882. TRGMUX_TARGET_MODULE_PWM0_FAULT0 = 33U, /*!< Target module of pwm0_fault0 */
  883. TRGMUX_TARGET_MODULE_PWM0_FAULT1 = 34U, /*!< Target module of pwm0_fault1 */
  884. TRGMUX_TARGET_MODULE_PWM0_FAULT2 = 35U, /*!< Target module of pwm0_fault2 */
  885. TRGMUX_TARGET_MODULE_PWM1_TRIG0 = 36U, /*!< Target module of pwm1_trig0 */
  886. TRGMUX_TARGET_MODULE_PWM1_FAULT0 = 37U, /*!< Target module of pwm1_fault0 */
  887. TRGMUX_TARGET_MODULE_PWM1_FAULT1 = 38U, /*!< Target module of pwm1_fault1 */
  888. TRGMUX_TARGET_MODULE_PWM1_FAULT2 = 39U, /*!< Target module of pwm1_fault2 */
  889. TRGMUX_TARGET_MODULE_PWM2_TRIG0 = 40U, /*!< Target module of pwm2_trig0 */
  890. TRGMUX_TARGET_MODULE_PWM2_FAULT0 = 41U, /*!< Target module of pwm2_fault0 */
  891. TRGMUX_TARGET_MODULE_PWM2_FAULT1 = 42U, /*!< Target module of pwm2_fault1 */
  892. TRGMUX_TARGET_MODULE_PWM2_FAULT2 = 43U, /*!< Target module of pwm2_fault2 */
  893. TRGMUX_TARGET_MODULE_PWM3_TRIG0 = 44U, /*!< Target module of pwm3_trig0 */
  894. TRGMUX_TARGET_MODULE_PWM3_FAULT0 = 45U, /*!< Target module of pwm3_fault0 */
  895. TRGMUX_TARGET_MODULE_PWM3_FAULT1 = 46U, /*!< Target module of pwm3_fault1 */
  896. TRGMUX_TARGET_MODULE_PWM3_FAULT2 = 47U, /*!< Target module of pwm3_fault2 */
  897. TRGMUX_TARGET_MODULE_PWM4_TRIG0 = 48U, /*!< Target module of pwm4_trig0 */
  898. TRGMUX_TARGET_MODULE_PWM5_TRIG0 = 52U, /*!< Target module of pwm5_trig0 */
  899. TRGMUX_TARGET_MODULE_TIMER_CH0 = 64U, /*!< Target module of timer_ch0 */
  900. TRGMUX_TARGET_MODULE_TIMER_CH1 = 65U, /*!< Target module of timer_ch1 */
  901. TRGMUX_TARGET_MODULE_TIMER_CH2 = 66U, /*!< Target module of timer_ch2 */
  902. TRGMUX_TARGET_MODULE_TIMER_CH3 = 67U, /*!< Target module of timer_ch3 */
  903. TRGMUX_TARGET_MODULE_PCT0 = 68U, /*!< Target module of pct0 */
  904. TRGMUX_TARGET_MODULE_UART0 = 72U, /*!< Target module of uart0 */
  905. TRGMUX_TARGET_MODULE_UART1 = 76U, /*!< Target module of uart1 */
  906. TRGMUX_TARGET_MODULE_PDT0 = 80U, /*!< Target module of pdt0 */
  907. TRGMUX_TARGET_MODULE_PDT1 = 84U, /*!< Target module of pdt1 */
  908. TRGMUX_TARGET_MODULE_EIO_TIMR0 = 88U, /*!< Target module of eio_timer0 */
  909. TRGMUX_TARGET_MODULE_EIO_TIMR1 = 89U, /*!< Target module of eio_timer1 */
  910. TRGMUX_TARGET_MODULE_EIO_TIMR2 = 90U, /*!< Target module of eio_timer2 */
  911. TRGMUX_TARGET_MODULE_EIO_TIMR3 = 91U /*!< Target module of eio_timer3 */
  912. } trgmux_target_module_t;
  913. #ifdef __cplusplus
  914. }
  915. #endif /* __cplusplus */
  916. #endif /* _AC7840X_FEATURES_H */
  917. /* ============================================= EOF ============================================== */