1 /* 2 * SPDX-FileCopyrightText: 2022-2024 Espressif Systems (Shanghai) CO LTD 3 * 4 * SPDX-License-Identifier: Apache-2.0 5 */ 6 #pragma once 7 8 #ifdef __cplusplus 9 extern "C" { 10 #endif 11 12 /* 13 ************************* ESP32S3 Root Clock Source **************************** 14 * 1) Internal 17.5MHz RC Oscillator: RC_FAST (usually referred as FOSC or CK8M/CLK8M in TRM and reg. description) 15 * 16 * This RC oscillator generates a ~17.5MHz clock signal output as the RC_FAST_CLK. 17 * The ~17.5MHz signal output is also passed into a configurable divider, which by default divides the input clock 18 * frequency by 256, to generate a RC_FAST_D256_CLK (usually referred as 8md256 or simply d256 in reg. description). 19 * 20 * The exact frequency of RC_FAST_CLK can be computed in runtime through calibration on the RC_FAST_D256_CLK. 21 * 22 * 2) External 40MHz Crystal Clock: XTAL 23 * 24 * 3) Internal 136kHz RC Oscillator: RC_SLOW (usually referrred as RTC in TRM or reg. description) 25 * 26 * This RC oscillator generates a ~136kHz clock signal output as the RC_SLOW_CLK. The exact frequency of this clock 27 * can be computed in runtime through calibration. 28 * 29 * 4) External 32kHz Crystal Clock (optional): XTAL32K 30 * 31 * The clock source for this XTAL32K_CLK can be either a 32kHz crystal connecting to the XTAL_32K_P and XTAL_32K_N 32 * pins or a 32kHz clock signal generated by an external circuit. The external signal must be connected to the 33 * XTAL_32K_P pin. 34 * 35 * XTAL32K_CLK can also be calibrated to get its exact frequency. 36 */ 37 38 /* With the default value of CK8M_DFREQ = 100, RC_FAST clock frequency is 17.5 MHz +/- 7% */ 39 #define SOC_CLK_RC_FAST_FREQ_APPROX 17500000 /*!< Approximate RC_FAST_CLK frequency in Hz */ 40 #define SOC_CLK_RC_SLOW_FREQ_APPROX 136000 /*!< Approximate RC_SLOW_CLK frequency in Hz */ 41 #define SOC_CLK_RC_FAST_D256_FREQ_APPROX (SOC_CLK_RC_FAST_FREQ_APPROX / 256) /*!< Approximate RC_FAST_D256_CLK frequency in Hz */ 42 #define SOC_CLK_XTAL32K_FREQ_APPROX 32768 /*!< Approximate XTAL32K_CLK frequency in Hz */ 43 44 // Naming convention: SOC_ROOT_CLK_{loc}_{type}_[attr] 45 // {loc}: EXT, INT 46 // {type}: XTAL, RC 47 // [attr] - optional: [frequency], FAST, SLOW 48 /** 49 * @brief Root clock 50 */ 51 typedef enum { 52 SOC_ROOT_CLK_INT_RC_FAST, /*!< Internal 17.5MHz RC oscillator */ 53 SOC_ROOT_CLK_INT_RC_SLOW, /*!< Internal 136kHz RC oscillator */ 54 SOC_ROOT_CLK_EXT_XTAL, /*!< External 40MHz crystal */ 55 SOC_ROOT_CLK_EXT_XTAL32K, /*!< External 32kHz crystal/clock signal */ 56 } soc_root_clk_t; 57 58 /** 59 * @brief CPU_CLK mux inputs, which are the supported clock sources for the CPU_CLK 60 * @note Enum values are matched with the register field values on purpose 61 */ 62 typedef enum { 63 SOC_CPU_CLK_SRC_XTAL = 0, /*!< Select XTAL_CLK as CPU_CLK source */ 64 SOC_CPU_CLK_SRC_PLL = 1, /*!< Select PLL_CLK as CPU_CLK source (PLL_CLK is the output of 40MHz crystal oscillator frequency multiplier, can be 480MHz or 320MHz) */ 65 SOC_CPU_CLK_SRC_RC_FAST = 2, /*!< Select RC_FAST_CLK as CPU_CLK source */ 66 SOC_CPU_CLK_SRC_INVALID, /*!< Invalid CPU_CLK source */ 67 } soc_cpu_clk_src_t; 68 69 /** 70 * @brief RTC_SLOW_CLK mux inputs, which are the supported clock sources for the RTC_SLOW_CLK 71 * @note Enum values are matched with the register field values on purpose 72 */ 73 typedef enum { 74 SOC_RTC_SLOW_CLK_SRC_RC_SLOW = 0, /*!< Select RC_SLOW_CLK as RTC_SLOW_CLK source */ 75 SOC_RTC_SLOW_CLK_SRC_XTAL32K = 1, /*!< Select XTAL32K_CLK as RTC_SLOW_CLK source */ 76 SOC_RTC_SLOW_CLK_SRC_RC_FAST_D256 = 2, /*!< Select RC_FAST_D256_CLK (referred as FOSC_DIV or 8m_d256/8md256 in TRM and reg. description) as RTC_SLOW_CLK source */ 77 SOC_RTC_SLOW_CLK_SRC_INVALID, /*!< Invalid RTC_SLOW_CLK source */ 78 } soc_rtc_slow_clk_src_t; 79 80 /** 81 * @brief RTC_FAST_CLK mux inputs, which are the supported clock sources for the RTC_FAST_CLK 82 * @note Enum values are matched with the register field values on purpose 83 */ 84 typedef enum { 85 SOC_RTC_FAST_CLK_SRC_XTAL_D2 = 0, /*!< Select XTAL_D2_CLK (may referred as XTAL_CLK_DIV_2) as RTC_FAST_CLK source */ 86 SOC_RTC_FAST_CLK_SRC_XTAL_DIV = SOC_RTC_FAST_CLK_SRC_XTAL_D2, /*!< Alias name for `SOC_RTC_FAST_CLK_SRC_XTAL_D2` */ 87 SOC_RTC_FAST_CLK_SRC_RC_FAST = 1, /*!< Select RC_FAST_CLK as RTC_FAST_CLK source */ 88 SOC_RTC_FAST_CLK_SRC_INVALID, /*!< Invalid RTC_FAST_CLK source */ 89 } soc_rtc_fast_clk_src_t; 90 91 /** 92 * @brief Possible main XTAL frequency options on the target 93 * @note Enum values equal to the frequency value in MHz 94 * @note Not all frequency values listed here are supported in IDF. Please check SOC_XTAL_SUPPORT_XXX in soc_caps.h for 95 * the supported ones. 96 */ 97 typedef enum { 98 SOC_XTAL_FREQ_32M = 32, /*!< 32MHz XTAL */ 99 SOC_XTAL_FREQ_40M = 40, /*!< 40MHz XTAL */ 100 } soc_xtal_freq_t; 101 102 // Naming convention: SOC_MOD_CLK_{[upstream]clock_name}_[attr] 103 // {[upstream]clock_name}: APB, (BB)PLL, etc. 104 // [attr] - optional: FAST, SLOW, D<divider>, F<freq> 105 /** 106 * @brief Supported clock sources for modules (CPU, peripherals, RTC, etc.) 107 * 108 * @note enum starts from 1, to save 0 for special purpose 109 */ 110 typedef enum { 111 // For CPU domain 112 SOC_MOD_CLK_CPU = 1, /*!< CPU_CLK can be sourced from XTAL, PLL, or RC_FAST by configuring soc_cpu_clk_src_t */ 113 // For RTC domain 114 SOC_MOD_CLK_RTC_FAST, /*!< RTC_FAST_CLK can be sourced from XTAL_D2 or RC_FAST by configuring soc_rtc_fast_clk_src_t */ 115 SOC_MOD_CLK_RTC_SLOW, /*!< RTC_SLOW_CLK can be sourced from RC_SLOW, XTAL32K, or RC_FAST_D256 by configuring soc_rtc_slow_clk_src_t */ 116 // For digital domain: peripherals, WIFI, BLE 117 SOC_MOD_CLK_APB, /*!< APB_CLK is highly dependent on the CPU_CLK source */ 118 SOC_MOD_CLK_PLL_F80M, /*!< PLL_F80M_CLK is derived from PLL, and has a fixed frequency of 80MHz */ 119 SOC_MOD_CLK_PLL_F160M, /*!< PLL_F160M_CLK is derived from PLL, and has a fixed frequency of 160MHz */ 120 SOC_MOD_CLK_PLL_D2, /*!< PLL_D2_CLK is derived from PLL, it has a fixed divider of 2 */ 121 SOC_MOD_CLK_XTAL32K, /*!< XTAL32K_CLK comes from the external 32kHz crystal, passing a clock gating to the peripherals */ 122 SOC_MOD_CLK_RC_FAST, /*!< RC_FAST_CLK comes from the internal 20MHz rc oscillator, passing a clock gating to the peripherals */ 123 SOC_MOD_CLK_RC_FAST_D256, /*!< RC_FAST_D256_CLK comes from the internal 20MHz rc oscillator, divided by 256, and passing a clock gating to the peripherals */ 124 SOC_MOD_CLK_XTAL, /*!< XTAL_CLK comes from the external 40MHz crystal */ 125 SOC_MOD_CLK_TEMP_SENSOR, /*!< TEMP_SENSOR_CLK comes directly from the internal 20MHz rc oscillator */ 126 SOC_MOD_CLK_INVALID, /*!< Indication of the end of the available module clock sources */ 127 } soc_module_clk_t; 128 129 //////////////////////////////////////////////////SYSTIMER/////////////////////////////////////////////////////////////// 130 131 /** 132 * @brief Type of SYSTIMER clock source 133 */ 134 typedef enum { 135 SYSTIMER_CLK_SRC_XTAL = SOC_MOD_CLK_XTAL, /*!< SYSTIMER source clock is XTAL */ 136 SYSTIMER_CLK_SRC_DEFAULT = SOC_MOD_CLK_XTAL, /*!< SYSTIMER source clock default choice is XTAL */ 137 } soc_periph_systimer_clk_src_t; 138 139 //////////////////////////////////////////////////GPTimer/////////////////////////////////////////////////////////////// 140 141 /** 142 * @brief Array initializer for all supported clock sources of GPTimer 143 * 144 * The following code can be used to iterate all possible clocks: 145 * @code{c} 146 * soc_periph_gptimer_clk_src_t gptimer_clks[] = (soc_periph_gptimer_clk_src_t)SOC_GPTIMER_CLKS; 147 * for (size_t i = 0; i< sizeof(gptimer_clks) / sizeof(gptimer_clks[0]); i++) { 148 * soc_periph_gptimer_clk_src_t clk = gptimer_clks[i]; 149 * // Test GPTimer with the clock `clk` 150 * } 151 * @endcode 152 */ 153 #define SOC_GPTIMER_CLKS {SOC_MOD_CLK_APB, SOC_MOD_CLK_XTAL} 154 155 /** 156 * @brief Type of GPTimer clock source 157 */ 158 typedef enum { 159 GPTIMER_CLK_SRC_APB = SOC_MOD_CLK_APB, /*!< Select APB as the source clock */ 160 GPTIMER_CLK_SRC_XTAL = SOC_MOD_CLK_XTAL, /*!< Select XTAL as the source clock */ 161 GPTIMER_CLK_SRC_DEFAULT = SOC_MOD_CLK_APB, /*!< Select APB as the default choice */ 162 } soc_periph_gptimer_clk_src_t; 163 164 /** 165 * @brief Type of Timer Group clock source, reserved for the legacy timer group driver 166 */ 167 typedef enum { 168 TIMER_SRC_CLK_APB = SOC_MOD_CLK_APB, /*!< Timer group source clock is APB */ 169 TIMER_SRC_CLK_XTAL = SOC_MOD_CLK_XTAL, /*!< Timer group source clock is XTAL */ 170 TIMER_SRC_CLK_DEFAULT = SOC_MOD_CLK_APB, /*!< Timer group source clock default choice is APB */ 171 } soc_periph_tg_clk_src_legacy_t; 172 173 //////////////////////////////////////////////////LCD/////////////////////////////////////////////////////////////////// 174 175 /** 176 * @brief Array initializer for all supported clock sources of LCD 177 */ 178 #define SOC_LCD_CLKS {SOC_MOD_CLK_PLL_F160M, SOC_MOD_CLK_PLL_D2, SOC_MOD_CLK_XTAL} 179 180 /** 181 * @brief Type of LCD clock source 182 */ 183 typedef enum { 184 LCD_CLK_SRC_PLL160M = SOC_MOD_CLK_PLL_F160M, /*!< Select PLL_F160M as the source clock */ 185 LCD_CLK_SRC_PLL240M = SOC_MOD_CLK_PLL_D2, /*!< Select PLL_D2 as the source clock */ 186 LCD_CLK_SRC_XTAL = SOC_MOD_CLK_XTAL, /*!< Select XTAL as the source clock */ 187 LCD_CLK_SRC_DEFAULT = SOC_MOD_CLK_PLL_F160M, /*!< Select PLL_F160M as the default choice */ 188 } soc_periph_lcd_clk_src_t; 189 190 //////////////////////////////////////////////////RMT/////////////////////////////////////////////////////////////////// 191 192 /** 193 * @brief Array initializer for all supported clock sources of RMT 194 */ 195 #define SOC_RMT_CLKS {SOC_MOD_CLK_APB, SOC_MOD_CLK_RC_FAST, SOC_MOD_CLK_XTAL} 196 197 /** 198 * @brief Type of RMT clock source 199 */ 200 typedef enum { 201 RMT_CLK_SRC_APB = SOC_MOD_CLK_APB, /*!< Select APB as the source clock */ 202 RMT_CLK_SRC_RC_FAST = SOC_MOD_CLK_RC_FAST, /*!< Select RC_FAST as the source clock */ 203 RMT_CLK_SRC_XTAL = SOC_MOD_CLK_XTAL, /*!< Select XTAL as the source clock */ 204 RMT_CLK_SRC_DEFAULT = SOC_MOD_CLK_APB, /*!< Select APB as the default choice */ 205 } soc_periph_rmt_clk_src_t; 206 207 /** 208 * @brief Type of RMT clock source, reserved for the legacy RMT driver 209 */ 210 typedef enum { 211 RMT_BASECLK_APB = SOC_MOD_CLK_APB, /*!< RMT source clock is APB */ 212 RMT_BASECLK_XTAL = SOC_MOD_CLK_XTAL, /*!< RMT source clock is XTAL */ 213 RMT_BASECLK_DEFAULT = SOC_MOD_CLK_APB, /*!< RMT source clock default choice is APB */ 214 } soc_periph_rmt_clk_src_legacy_t; 215 216 //////////////////////////////////////////////////Temp Sensor/////////////////////////////////////////////////////////// 217 218 /** 219 * @brief Array initializer for all supported clock sources of Temperature Sensor 220 */ 221 #define SOC_TEMP_SENSOR_CLKS {SOC_MOD_CLK_TEMP_SENSOR} 222 223 /** 224 * @brief Type of Temp Sensor clock source 225 */ 226 typedef enum { 227 TEMPERATURE_SENSOR_CLK_SRC_RC_FAST = SOC_MOD_CLK_TEMP_SENSOR, /*!< Select RC_FAST as the source clock */ 228 TEMPERATURE_SENSOR_CLK_SRC_DEFAULT = SOC_MOD_CLK_TEMP_SENSOR, /*!< Select RC_FAST as the default choice */ 229 } soc_periph_temperature_sensor_clk_src_t; 230 231 ///////////////////////////////////////////////////UART///////////////////////////////////////////////////////////////// 232 233 /** 234 * @brief Array initializer for all supported clock sources of UART 235 */ 236 #define SOC_UART_CLKS {SOC_MOD_CLK_APB, SOC_MOD_CLK_XTAL, SOC_MOD_CLK_RC_FAST} 237 238 /** 239 * @brief Type of UART clock source, reserved for the legacy UART driver 240 */ 241 typedef enum { 242 UART_SCLK_APB = SOC_MOD_CLK_APB, /*!< UART source clock is APB CLK */ 243 UART_SCLK_RTC = SOC_MOD_CLK_RC_FAST, /*!< UART source clock is RC_FAST */ 244 UART_SCLK_XTAL = SOC_MOD_CLK_XTAL, /*!< UART source clock is XTAL */ 245 UART_SCLK_DEFAULT = SOC_MOD_CLK_APB, /*!< UART source clock default choice is APB */ 246 } soc_periph_uart_clk_src_legacy_t; 247 248 //////////////////////////////////////////////////MCPWM///////////////////////////////////////////////////////////////// 249 250 /** 251 * @brief Array initializer for all supported clock sources of MCPWM Timer 252 */ 253 #define SOC_MCPWM_TIMER_CLKS {SOC_MOD_CLK_PLL_F160M} 254 255 /** 256 * @brief Type of MCPWM timer clock source 257 */ 258 typedef enum { 259 MCPWM_TIMER_CLK_SRC_PLL160M = SOC_MOD_CLK_PLL_F160M, /*!< Select PLL_F160M as the source clock */ 260 MCPWM_TIMER_CLK_SRC_DEFAULT = SOC_MOD_CLK_PLL_F160M, /*!< Select PLL_F160M as the default clock choice */ 261 } soc_periph_mcpwm_timer_clk_src_t; 262 263 /** 264 * @brief Array initializer for all supported clock sources of MCPWM Capture Timer 265 */ 266 #define SOC_MCPWM_CAPTURE_CLKS {SOC_MOD_CLK_APB} 267 268 /** 269 * @brief Type of MCPWM capture clock source 270 */ 271 typedef enum { 272 MCPWM_CAPTURE_CLK_SRC_APB = SOC_MOD_CLK_APB, /*!< Select APB as the source clock */ 273 MCPWM_CAPTURE_CLK_SRC_DEFAULT = SOC_MOD_CLK_APB, /*!< Select APB as the default clock choice */ 274 } soc_periph_mcpwm_capture_clk_src_t; 275 276 /** 277 * @brief Array initializer for all supported clock sources of MCPWM Carrier 278 */ 279 #define SOC_MCPWM_CARRIER_CLKS {SOC_MOD_CLK_PLL_F160M} 280 281 /** 282 * @brief Type of MCPWM carrier clock source 283 */ 284 typedef enum { 285 MCPWM_CARRIER_CLK_SRC_PLL160M = SOC_MOD_CLK_PLL_F160M, /*!< Select PLL_F160M as the source clock */ 286 MCPWM_CARRIER_CLK_SRC_DEFAULT = SOC_MOD_CLK_PLL_F160M, /*!< Select PLL_F160M as the default clock choice */ 287 } soc_periph_mcpwm_carrier_clk_src_t; 288 289 ///////////////////////////////////////////////////// I2S ////////////////////////////////////////////////////////////// 290 291 /** 292 * @brief Array initializer for all supported clock sources of I2S 293 */ 294 #define SOC_I2S_CLKS {SOC_MOD_CLK_PLL_F160M, SOC_MOD_CLK_XTAL, I2S_CLK_SRC_EXTERNAL} 295 296 /** 297 * @brief I2S clock source enum 298 */ 299 typedef enum { 300 I2S_CLK_SRC_DEFAULT = SOC_MOD_CLK_PLL_F160M, /*!< Select PLL_F160M as the default source clock */ 301 I2S_CLK_SRC_PLL_160M = SOC_MOD_CLK_PLL_F160M, /*!< Select PLL_F160M as the source clock */ 302 I2S_CLK_SRC_XTAL = SOC_MOD_CLK_XTAL, /*!< Select XTAL as the source clock */ 303 I2S_CLK_SRC_EXTERNAL = -1, /*!< Select external clock as source clock */ 304 } soc_periph_i2s_clk_src_t; 305 306 /////////////////////////////////////////////////I2C//////////////////////////////////////////////////////////////////// 307 308 /** 309 * @brief Array initializer for all supported clock sources of I2C 310 */ 311 #define SOC_I2C_CLKS {SOC_MOD_CLK_XTAL, SOC_MOD_CLK_RC_FAST} 312 313 /** 314 * @brief Type of I2C clock source. 315 */ 316 typedef enum { 317 I2C_CLK_SRC_XTAL = SOC_MOD_CLK_XTAL, 318 I2C_CLK_SRC_RC_FAST = SOC_MOD_CLK_RC_FAST, 319 I2C_CLK_SRC_DEFAULT = SOC_MOD_CLK_XTAL, 320 } soc_periph_i2c_clk_src_t; 321 322 /////////////////////////////////////////////////SPI//////////////////////////////////////////////////////////////////// 323 324 /** 325 * @brief Array initializer for all supported clock sources of SPI 326 */ 327 #define SOC_SPI_CLKS {SOC_MOD_CLK_APB, SOC_MOD_CLK_XTAL} 328 329 /** 330 * @brief Type of SPI clock source. 331 */ 332 typedef enum { 333 SPI_CLK_SRC_DEFAULT = SOC_MOD_CLK_APB, /*!< Select APB as SPI source clock */ 334 SPI_CLK_SRC_APB = SOC_MOD_CLK_APB, /*!< Select APB as SPI source clock */ 335 SPI_CLK_SRC_XTAL = SOC_MOD_CLK_XTAL, /*!< Select XTAL as SPI source clock */ 336 } soc_periph_spi_clk_src_t; 337 338 //////////////////////////////////////////////////SDM////////////////////////////////////////////////////////////// 339 340 /** 341 * @brief Array initializer for all supported clock sources of SDM 342 */ 343 #define SOC_SDM_CLKS {SOC_MOD_CLK_APB} 344 345 /** 346 * @brief Sigma Delta Modulator clock source 347 */ 348 typedef enum { 349 SDM_CLK_SRC_APB = SOC_MOD_CLK_APB, /*!< Select APB as the source clock */ 350 SDM_CLK_SRC_DEFAULT = SOC_MOD_CLK_APB, /*!< Select APB as the default clock choice */ 351 } soc_periph_sdm_clk_src_t; 352 353 //////////////////////////////////////////////////GPIO Glitch Filter//////////////////////////////////////////////////// 354 355 /** 356 * @brief Array initializer for all supported clock sources of Glitch Filter 357 */ 358 #define SOC_GLITCH_FILTER_CLKS {SOC_MOD_CLK_APB} 359 360 /** 361 * @brief Glitch filter clock source 362 */ 363 364 typedef enum { 365 GLITCH_FILTER_CLK_SRC_APB = SOC_MOD_CLK_APB, /*!< Select APB clock as the source clock */ 366 GLITCH_FILTER_CLK_SRC_DEFAULT = SOC_MOD_CLK_APB, /*!< Select APB clock as the default clock choice */ 367 } soc_periph_glitch_filter_clk_src_t; 368 369 //////////////////////////////////////////////////TWAI///////////////////////////////////////////////////////////////// 370 371 /** 372 * @brief Array initializer for all supported clock sources of TWAI 373 */ 374 #define SOC_TWAI_CLKS {SOC_MOD_CLK_APB} 375 376 /** 377 * @brief TWAI clock source 378 */ 379 typedef enum { 380 TWAI_CLK_SRC_APB = SOC_MOD_CLK_APB, /*!< Select APB as the source clock */ 381 TWAI_CLK_SRC_DEFAULT = SOC_MOD_CLK_APB, /*!< Select APB as the default clock choice */ 382 } soc_periph_twai_clk_src_t; 383 384 //////////////////////////////////////////////////ADC/////////////////////////////////////////////////////////////////// 385 386 /** 387 * @brief Array initializer for all supported clock sources of ADC digital controller 388 */ 389 #define SOC_ADC_DIGI_CLKS {SOC_MOD_CLK_APB, SOC_MOD_CLK_PLL_D2} 390 391 /** 392 * @brief ADC digital controller clock source 393 */ 394 typedef enum { 395 ADC_DIGI_CLK_SRC_APB = SOC_MOD_CLK_APB, /*!< Select APB as the source clock */ 396 ADC_DIGI_CLK_SRC_PLL_F240M = SOC_MOD_CLK_PLL_D2, /*!< Select PLL_D2 (default value PLL_F240M) as the source clock */ 397 ADC_DIGI_CLK_SRC_DEFAULT = SOC_MOD_CLK_APB, /*!< Select APB as the default clock choice */ 398 } soc_periph_adc_digi_clk_src_t; 399 400 /** 401 * @brief Array initializer for all supported clock sources of ADC RTC controller 402 */ 403 #define SOC_ADC_RTC_CLKS {SOC_MOD_CLK_RC_FAST} 404 405 /** 406 * @brief ADC RTC controller clock source 407 */ 408 typedef enum { 409 ADC_RTC_CLK_SRC_RC_FAST = SOC_MOD_CLK_RC_FAST, /*!< Select RC_FAST as the source clock */ 410 ADC_RTC_CLK_SRC_DEFAULT = SOC_MOD_CLK_RC_FAST, /*!< Select RC_FAST as the default clock choice */ 411 } soc_periph_adc_rtc_clk_src_t; 412 413 //////////////////////////////////////////////////MWDT///////////////////////////////////////////////////////////////// 414 415 /** 416 * @brief Array initializer for all supported clock sources of MWDT 417 */ 418 #define SOC_MWDT_CLKS {SOC_MOD_CLK_APB} 419 420 /** 421 * @brief MWDT clock source 422 */ 423 typedef enum { 424 MWDT_CLK_SRC_APB = SOC_MOD_CLK_APB, /*!< Select APB as the source clock */ 425 MWDT_CLK_SRC_DEFAULT = SOC_MOD_CLK_APB, /*!< Select APB as the default clock choice */ 426 } soc_periph_mwdt_clk_src_t; 427 428 //////////////////////////////////////////////////LEDC///////////////////////////////////////////////////////////////// 429 430 /** 431 * @brief Array initializer for all supported clock sources of LEDC 432 */ 433 #define SOC_LEDC_CLKS {SOC_MOD_CLK_XTAL, SOC_MOD_CLK_APB, SOC_MOD_CLK_RC_FAST} 434 435 /** 436 * @brief Type of LEDC clock source, reserved for the legacy LEDC driver 437 */ 438 typedef enum { 439 LEDC_AUTO_CLK = 0, /*!< LEDC source clock will be automatically selected based on the giving resolution and duty parameter when init the timer*/ 440 LEDC_USE_APB_CLK = SOC_MOD_CLK_APB, /*!< Select APB as the source clock */ 441 LEDC_USE_RC_FAST_CLK = SOC_MOD_CLK_RC_FAST, /*!< Select RC_FAST as the source clock */ 442 LEDC_USE_XTAL_CLK = SOC_MOD_CLK_XTAL, /*!< Select XTAL as the source clock */ 443 444 LEDC_USE_RTC8M_CLK __attribute__((deprecated("please use 'LEDC_USE_RC_FAST_CLK' instead"))) = LEDC_USE_RC_FAST_CLK, /*!< Alias of 'LEDC_USE_RC_FAST_CLK' */ 445 } soc_periph_ledc_clk_src_legacy_t; 446 447 //////////////////////////////////////////////////SDMMC/////////////////////////////////////////////////////////////// 448 449 /** 450 * @brief Array initializer for all supported clock sources of SDMMC 451 */ 452 #define SOC_SDMMC_CLKS {SOC_MOD_CLK_PLL_F160M, SOC_MOD_CLK_XTAL} 453 454 /** 455 * @brief Type of SDMMC clock source 456 */ 457 typedef enum { 458 SDMMC_CLK_SRC_DEFAULT = SOC_MOD_CLK_PLL_F160M, /*!< Select PLL_160M as the default choice */ 459 SDMMC_CLK_SRC_PLL160M = SOC_MOD_CLK_PLL_F160M, /*!< Select PLL_160M as the source clock */ 460 SDMMC_CLK_SRC_XTAL = SOC_MOD_CLK_XTAL, /*!< Select XTAL as the source clock */ 461 } soc_periph_sdmmc_clk_src_t; 462 463 //////////////////////////////////////////////CLOCK OUTPUT/////////////////////////////////////////////////////////// 464 typedef enum { 465 CLKOUT_SIG_PLL = 1, /*!< PLL_CLK is the output of crystal oscillator frequency multiplier */ 466 CLKOUT_SIG_RC_SLOW = 4, /*!< RC slow clock, depends on the RTC_CLK_SRC configuration */ 467 CLKOUT_SIG_XTAL = 5, /*!< Main crystal oscillator clock */ 468 CLKOUT_SIG_PLL_F80M = 13, /*!< From PLL, usually be 80MHz */ 469 CLKOUT_SIG_RC_FAST = 14, /*!< RC fast clock, about 17.5MHz */ 470 CLKOUT_SIG_INVALID = 0xFF, 471 } soc_clkout_sig_id_t; 472 473 #ifdef __cplusplus 474 } 475 #endif 476